web-dev-qa-db-ja.com

スペイシーの名詞句

Spacyを使用してテキストから名詞句を抽出するにはどうすればよいですか?
スピーチタグのことではありません。ドキュメントでは、名詞句や通常の解析ツリーについては何も見つかりません。

22
CentAu

ベース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'

他に何かが必要な場合、最良の方法は、文の単語を反復処理し、構文コンテキストを考慮して、Wordが必要なフレーズタイプを管理するかどうかを判断することです。存在する場合、そのサブツリーを生成します。

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_