如何使用spacy从文本中提取名词短语?
我指的不是语音标签的一部分。在文档中,我找不到有关名词短语或常规分析树的任何内容。
如果要使用基本NP,即没有协调,介词短语或相对从句的NP,则可以在Doc和Span对象上使用noun_chunks迭代器:
>>> from spacy.en import English
>>> nlp = English()
>>> doc = nlp(u'The cat and the dog sleep in the basket near the door.')
>>> for np in doc.noun_chunks:
>>> np.text
u'The cat'
u'the dog'
u'the basket'
u'the door'
如果您需要其他内容,最好的方法是遍历句子中的单词并考虑句法上下文,以确定单词是否支配您想要的短语类型。如果是这样,则产生其子树:
from spacy.symbols import *
np_labels = set([nsubj, nsubjpass, dobj, iobj, pobj]) # Probably others too
def iter_nps(doc):
for word in doc:
if word.dep in np_labels:
yield word.subtree
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句