根据Spacy中的索引返回单词

时间:2019-03-03 14:13:22

标签: python spacy

我想使用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 :(得分:0)

由于doc是一个字符串,因此无法调用(就像方法一样)。您想要对它建立索引(占一小部分)。为此,请使用方括号:

negated_tokens = doc[start:end]

尽管实际上您想要的是

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