Как получить индекс токена в предложении в spaCy?

Есть ли элегантный способ получить индекс слова / токена в его предложении? Мне известны атрибуты токенов https://spacy.io/api/token#attributes Атрибут i возвращает индекс во всем родительском документе. Но родительский документ может содержать несколько предложений.

Пример:

"This is an example. This is another example."

Мне нужно, чтобы оба "This" возвращались как индекс 0, оба "is" возвращались как индекс 1 и т. д.

Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
4
0
7 601
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Объект spaCy Doc также позволяет вам перебирать doc.sents, которые являются Span объекты отдельного предложения. Чтобы получить индекс начала и конца диапазона в родительском документе, вы можете посмотреть атрибуты start и end. Итак, если вы перебираете предложения и вычитаете индекс начала предложения из token.i, вы получаете относительный индекс токена в предложении:

for sent in doc.sents:
    for token in sent:
        print(token.text, token.i - sent.start)

Сегментация предложений по умолчанию использует синтаксический анализ зависимостей, который обычно более точен. Однако вы также можете подключить основанное на правилах или полностью индивидуальное решение (глянь сюда для подробностей).

Другие вопросы по теме