python Spacy获取特定单词的pos & tag

gk7wooem  于 11个月前  发布在  Python
关注(0)|答案(2)|浏览(104)

我遇到了一种情况,我必须从空间文档对象中获取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

字符串
如果我想得到pos_tag_单词'striker'我需要再次给予这个句子nlp()
还有doc[1].tag_也在那里,但是我需要doc ['striker'].tag_之类的东西。
有没有可能?

ukqbszuj

ukqbszuj1#

您只需处理文本一次:

text = "Australian striker John hits century"
doc = nlp(text)
for nc in doc.noun_chunks:
    print(nc)  
    print([(token.text, token.tag_, token.pos_) for token in nc])

字符串
如果你只想在名词块中获取一个特定的单词,你可以通过将第二个print语句改为例如:

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


请注意,这可能会打印多个命中,这取决于您的模型和输入句子。

ergxz8rk

ergxz8rk2#

您可以执行以下操作:

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作为变量。

相关问题