スタンフォード パーサーのドキュメントには、次の例文が示されています。
インドで記録された史上最強の雨により、ムンバイの金融ハブが閉鎖され、通信回線が切断され、空港が閉鎖され、何千人もの人々が夜中にオフィスで寝たり、歩いて帰宅したりした.
これにより、解析ツリーが生成されます。
[ROOT [S [S [NP [NP [DT ザ]] [JJS 最強] [NN レイン]] [VP [ADVP [今までの RB]] [VBN 収録][PP [IN イン] [NP [NNP インド]]] ] ] [VP [VP [VBD シャットダウン] [PRT [RP ダウン] ] [NP [NP [DT ザ] [JJ 金融] [NN ハブ] ] [PP [IN] [NP [NNP ムンバイ] ] ] ] [, ,] [VP [VBD スナップ] [NP [NN 通信] [NNS 回線] ] ] [, ,] [VP [VBD 閉鎖] [NP [NNS 空港] ] ] [CC および] [VP [VBD 強制] [NP [NP [NNS 千人] ] [PP [IN of] [NP [NNS 人] ] ] [S [VP [TO to] [VP [VP [VB sleep]] [PP [IN in] [NP [PRP] $ their] [NNS office] ] ] ] [CC or] [VP [VB walk] [NP [NN home] ] [PP [IN during] [NP [DT the] [NN night] ] ] ] ] ] ] ] [, ,] [NP [NNS 職員] ] [VP [VBD 発言] [NP-TMP [今日の NN] ]] [. .] ] ]
( http://i.imgur.com/mZLBDmh.pngを参照)。
上記の複雑な文の例から文の主語と目的語を出力できるのは、どのような NLP ツールですか? 望ましい出力:
sentence_subj_phrase = "the strongest rain ever recorded in India"
sentence_obj_phrase = "the financial hub of Mumbai"
FROM ORIGINAL OP's POST (これは、彼が機能しないと考えていることの詳細です):
文中の主語と目的語を抽出する単純な方法は、動詞の直前と直後の名詞句を見つけることです。ただし、複雑な文では複数の動詞が存在するため、複数の主語と目的語が存在します。このような複雑な文を複数の文 (独立節の最初の部分を「根」として使用し、2 番目の部分を従属節のそれぞれに置き換える) と見なすことは可能ですが、通常は最初の節が最も重要であり、文の主要な「トピック」と見なすことができます。
単純な BFS を実行して動詞の前の最初の NP を見つけると、「役人」が主語になるという結果になります。これは、主語を含む最初の節の直感を捉えていません。私が試したアプローチの 1 つは、最初の「ベース」S ノード (つまり、S ノードをルートとする最下位レベルのサブツリー) で NP を検索することでしたが、この場合は S 3をルートとするノードをキャプチャします。