Как получить индекс токена в предложении в 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)

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

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