web-dev-qa-db-ja.com

文の主語を識別する方法は?

Python + NLTKを使用して文の主題を特定できますか?これまでに学んだことは、文を頭とその従属に分割できることです。たとえば、「私はこの文では、私と象は射撃の扶養家族です。しかし、この文の主題が私であることをどうやって見分けるのですか。

16
singhalc

NLTK book (演習29)が言うように、「英語で文Sの主語を定義する一般的な方法の1つは、Sの子でありVPの兄弟である名詞句として使用することです。」

ツリーの例 を見てください。実際、「I」はVPの兄弟であるSの子である名詞句ですが、「elephant」はそうではありません。

14

Spacy を使用できます。

コード

import spacy
nlp = spacy.load('en')
sent = "I shot an elephant"
doc=nlp(sent)

sub_toks = [tok for tok in doc if (tok.dep_ == "nsubj") ]

print(sub_toks) 
18
Sohel Khan

英語には、アクティブボイスとパッシブボイスの2つの声があります。最も使用されている音声を取りましょう:アクティブな音声。

subject-verb-objectモデルに従います。件名をマークするには、POSタグを使用してルールセットを記述します。文I[NOUN] shot[VERB] an elephant[NOUN]にタグを付けます。最初の名詞が主語である場合は、動詞があり、次にオブジェクトがあります。

もっと複雑にしたい場合は、センテンス-I shot an elephant with a gun。ここでは、前置詞またはwith、at、inなどの従属接続詞に役割を与えることができます。ここでは、文はI[NOUN] shot[VERB] an elephant[NOUN] with[IN] a gun[NOUN]としてタグ付けされます。 Wordがインストルメンタルな役割を果たすことは簡単に言えます。ルールベースのシステムを構築して、文中のすべての単語の役割を取得できます。

また、受動態のパターンを見て、そのルールを書いてください。

7
rishi

doc = nlp(text.decode('utf8'))のようなことを行うことで、問題について説明することができますが、これにより、今後さらに多くのバグが発生する可能性があります。

クレジット: https://github.com/explosion/spaCy/issues/38

0
cronos