Spacy获取特定单词的pos和标签

时间:2019-02-20 10:25:26

标签: python nlp spacy tagging pos

我遇到一种情况,我必须从spacy doc对象中获取pos_和tag_。

例如

text = "Australian striker John hits century"
doc = nlp(text)
for nc in doc.noun_chunks:
    print(nc) #Australian striker John
doc[1].tag_ # gives for striker

如果我想为'striker'一词获得pos_tag_,我需要再次将该句子赋予nlp()

还有doc [1] .tag_,但是我需要doc ['striker']。tag_ ..

有没有可能?

2 个答案:

答案 0 :(得分:1)

您只需处理一次文本:

print([(token.text, token.tag_, token.pos_) for token in nc if token.tag_ == 'NN'])

如果您只想获取名词chunck中的特定单词,则可以通过将第二个打印语句更改为例如来进一步过滤该单词。

remove_ids

请注意,这可能会打印多个匹配,具体取决于您的型号和输入句子。

答案 1 :(得分:0)

您可以执行以下操作:

text = "Australian striker John hits century"
x1 = "striker"
x2 = re.compile(x1,re.IGNORECASE | re.VERBOSE)
loc_indexes = [m.start(0) for m in re.finditer(x2, text )]
tag = [i.tag_ for i in nlp(text) if i.idx in loc_indexes ]
print(x1,tag[0])

它给出输出: striker NN

如果需要,还可以轻松地使其动态化,并以x1作为变量。