Возвращать слова на основе индекса в Spacy - PullRequest
0 голосов
/ 03 марта 2019

Я хочу использовать анализатор зависимостей spaCy, чтобы определить область отрицания в моем документе.

enter image description here

У меня есть следующий код:

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp(u'Hi alll, some dividend is omnipresent even if not paid')

negation_tokens = [tok for tok in doc if tok.dep_ == 'neg']
negation_head_tokens = [token.head for token in negation_tokens]
print(negation_tokens)      # not
print(negation_head_tokens) # paid

for token in negation_head_tokens:
    # print(token.text, token.dep_, token.head.text, token.head.pos_, [child for child in token.children])
   start = token.i         # 5
   end = token.head.i      # 10
   negated_tokens = doc(start, end)  # this an gives error

Желаемый результат должен быть:

 is omnipresent even if not paid

Есть предложения?

1 Ответ

0 голосов
/ 03 марта 2019

Поскольку doc является строкой, ее нельзя вызывать (как метод).То, что вы хотите, это индексировать его (получить небольшую часть).Вместо этого используйте квадратные скобки:

negated_tokens = doc[start:end]

Хотя на самом деле вы хотите

negated_tokens = doc[end:start + 1]
print(negated_tokens)
> is omnipresent even if not paid
...