我遇到一种情况,我必须从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_ ..
有没有可能?
答案 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作为变量。