web-dev-qa-db-fra.com

Phrases nominatives avec spacy

Comment puis-je extraire des phrases nominales d'un texte en utilisant Spacy?
Je ne parle pas d'une partie des balises vocales. Dans la documentation, je ne trouve rien sur les phrases nominales ou les arbres d'analyse réguliers.

22
CentAu

Si vous voulez des NP de base, c'est-à-dire des NP sans coordination, des phrases prépositionnelles ou des clauses relatives, vous pouvez utiliser l'itérateur noun_chunks sur les objets Doc et 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'

Si vous avez besoin d'autre chose, la meilleure façon est d'itérer sur les mots de la phrase et de considérer le contexte syntaxique pour déterminer si le mot régit le type de phrase souhaité. Si c'est le cas, donnez son sous-arbre:

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
44
syllogism_