2011-12-25 8 views
7

OpenNLPを使用して"coreference resolution"を実行します。 Apache(Coreference Resolution)からのドキュメントでは、の "coreference resolution"の処理方法については説明していません。誰もどのようなドキュメント/チュートリアルどのようにこれを行うにはありますか?OpenNLPを使用したCoreference Resolution

答えて

9

現在のところ、OpenNLPについては、a very short mention of how to run it in the readmeを除いて、コアリファレンス解決のドキュメントはほとんどありません。

OpenNLPの使用に投資していない場合は、a Java example of how to run it,を含むStanford CoreNLP packageを考慮してください。これには、パッケージを使用したコアリファレンス解決の実行方法も含まれます。また、a page summarizing it's performance, and the papers published on the coreference packageも含まれています。

11

私は最近、同じ問題に遭遇し、OpenNLP 1.5.xツールを使用するためのいくつかのブログノートを書きました。それは完全にコピーするために少し高密度なので、here's a link with more details。ハイレベルで


、あなたは適切なOpenNLP coreference model librariesともWordNet 3.0 dictionaryをロードする必要があります。これらの依存関係を考えると、リンカオブジェクトの初期化は非常に簡単です。

// LinkerMode should be TEST 
//Note: I tried LinkerMode.EVAL before realizing that this was the problem 
Linker _linker = new DefaultLinker("lib/opennlp/coref", LinkerMode.TEST); 

リンカの使用は、あまり明白ではありません。以下を行う必要があります。

    は、文の順序を示すように、それぞれの文
  1. ラップのために、それぞれの文の解析を解析オブジェクトを作成ダウン文章と対応するトークン

  2. にコンテンツをブレーク
  3. final DefaultParse parseWrapper = new DefaultParse(parse, idx);
  4. 各文章を解析するには、リンカーを使用して、各解析文からMentionオブジェクトを取得します。

    final Mention[] extents = 
        _linker.getMentionFinder().getMentions(parseWrapper);
  5. 最後に、言及オブジェクトのすべてにわたる個別のエンティティを識別するためにリンカを使用します。

    DiscourseEntity[] entities = _linker.getEntities(arrayOfAllMentions);
+0

を、あなたは、これは、コマンドラインから実行される方法を私に示していただけますか?ありがとうございました。 – Haritz

+0

ブログでは、あなたは 'getResourceAsStream'を使ってモデルをロードすると言っていましたが、最後に' getResourceAsStream'を使ってモデルをロードするためにLinkerにどのように指示したかは記述されていませんでした。どのようにモデルを実際に読み込んだのですか? – justhalf

+0

@justhalfこれは、実際にはブログ上の前のステップのコピー+貼り付けエラーです。 'Linker'は、コアリファレンスモデルへのパスを直接取るので、' getResourceAsStream'を使う必要はありません。それをキャッチするためにありがとう! – dpdearing

関連する問題