Как я могу извлечь существительные фразы из текста, используя spacy?
Я не имею в виду часть речевых тегов.
В документации я не могу найти ничего о существительных фразах или регулярных синтаксических деревьях.
Существительные фразы с spacy
Ответ 1
Если вам нужны базовые NP, то есть NP без согласования, предпозиционные фразы или относительные предложения, вы можете использовать итератор noun_chunks для объектов Doc и Span:
>>> 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