私は、特定の項目へのすべての参照を見つけるためにテキストを解析しようとしています。たとえば、私のアイテムがThe Bridge on the River Kwai
で、このテキストを渡した場合は、大胆に入れたすべてのインスタンスを検索したいと思います。StanfordNLPで提供された名詞へのすべての参照を見つける
クワイ川上の橋は、デビッドが監督1957年、イギリス・アメリカの大作戦争映画 がリーンとウィリアム・ホールデン、ジャック・ホーキンス、アレック・ギネス 、および早川雪洲主演です。 フィルムはフィクションの作品ですが、 は、歴史的設定として のために1942-1943年にビルマ鉄道の建設を借りています。 映画はセイロン(現在のスリランカ)で撮影されました。 映画の橋はKitulgalaの近くにあった。
これまでのところ、私の試みでは、各CorefChainに付随するすべての言及を辿って、自分のターゲット文字列の狩りをループしていました。ターゲット文字列を見つけたら、CorefChain全体を追加します。これは、CorefChain内の他の項目も同じことを指していると思います。
List<CorefChain> gotRefs = new ArrayList<CorefChain>();
String pQuery = "The Bridge on the River Kwai";
for (CorefChain cc : document.get(CorefCoreAnnotations.CorefChainAnnotation.class).values()) {
List<CorefChain.CorefMention> corefMentions = cc.getMentionsInTextualOrder();
boolean addedChain = false;
for (CorefChain.CorefMention cm : corefMentions) {
if ((!addedChain) &&
(pQuery.equals(cm.mentionSpan))) {
gotRefs.add(cc);
addedChain = true;
}
}
}
私はその後CorefChainsのこの第二のリストをループでは、各鎖のために言及し、再取得し、それらをステップ。そのループでは、どの文章が文章の中で自分の言葉に言及しているかを示します。
for (CorefChain gr : gotRefs) {
List<CorefChain.CorefMention> corefMentionsUsing = gr.getMentionsInTextualOrder();
for (CorefChain.CorefMention cm : corefMentionsUsing) {
//System.out.println("Got reference to " + cm.mentionSpan + " in sentence #" + cm.sentNum);
}
}
私の参考文献の中にはいくつかのものがありますが、それほど多くはありませんが、多くの誤認があります。これを読んだことから完全にはっきりと分かるように、私はNLPについての最初のことを本当に知りません - 私はこれをまったく間違った方法で行っていますか? StanfordNLPパーサーは、私が後にしていることのいくつかを既に行いますか?私は何らかの形でモデルを訓練するべきですか?
ここでは、「本当に簡単に行うことはできません」という回答が有効な回答として受け入れられることを指摘しておきます。 :) –