Как получить индекс токена в предложении в SPACY?
Есть ли элегантный способ получить индекс слова / токена в его предложении? Мне известны атрибуты токенов https://spacy.io/api/token Атрибут "i" возвращает индекс во всем родительском документе. Но родительский документ может содержать несколько предложений.
Пример: "Это пример. Это еще один пример".
То, что мне нужно, это оба "This" для возврата в качестве индекса 0, оба "is" для возврата в качестве индекса 1 и т.д...
Заранее спасибо:)
1 ответ
СПАСИ Doc
Объект также позволяет перебирать doc.sents
, которые Span
объекты индивидуального предложения. Чтобы получить начальный и конечный индекс диапазона в родительском документе, вы можете посмотреть на start
а также end
приписывать. Так что если вы перебираете предложения и вычитаете начальный индекс предложения из token.i
Вы получаете относительный индекс токена в предложении:
for sent in doc.sents:
for token in sent:
print(token.text, token.i - sent.start)
Сегментация предложений по умолчанию использует анализ зависимостей, который обычно является более точным. Однако вы также можете подключить основанное на правилах или полностью индивидуальное решение (подробности см. Здесь).