2016-09-13 9 views
1

ドイツ語のテキストをStanford CoreNLPで解析し、CONLL出力を取得して後者をCorferenceからCorferenceに渡すことができます。スタンフォードCoreNLP:JavaからCONLL形式で出力

これを行うにはどうすればよいですかプログラムによって

は、ここで(のみ依存関係ツリーを出力する)これまでの私のコードです:私はCONLL形式の解析出力を保存するために管理し、次のコードで

Annotation germanAnnotation = new Annotation("Gestern habe ich eine blonde Frau getroffen"); 
Properties germanProperties = StringUtils.argsToProperties("-props", "StanfordCoreNLP-german.properties"); 
StanfordCoreNLP pipeline = new StanfordCoreNLP(germanProperties); 
pipeline.annotate(germanAnnotation); 

StringBuilder trees = new StringBuilder(""); 
for (CoreMap sentence : germanAnnotation.get(CoreAnnotations.SentencesAnnotation.class)) { 
    Tree sentenceTree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class); 
    trees.append(sentenceTree).append("\n"); 
} 

答えて

0

OutputStream outputStream = new FileOutputStream(new File("./target/", OUTPUT_FILE_NAME)); 
CoNLLOutputter.conllPrint(germanAnnotation, outputStream, pipeline); 

ただし、HEADフィールドはすべての単語で0でした。私は解析に問題があるのか​​、CONLLOutputterだけに問題があるのか​​は分かりません。正直なところ、私はさらに調査するためにCoreNLPが悩まされました。

代わりにParZuを使用することを決めました。 ParZuCorZuは、シームレスに連携して動作します。 私の場合は、すでにトークン化されたPOSタグのテキストがありました。これは、物事が容易になりますので意志ない必要性:STTSは

  • 形態素解析
  • するためのツールをタグセット使用して

    • POS-タガーあなたはParZuとCorZuがインストールされていたら、 corzu.sh(CorZuダウンロードフォルダに含まれています)を実行するだけです。あなたのテキストがトークン化とPOSがタグ付けされている場合は、それに応じてスクリプトを編集することができます

      parzu_cmd="/YourPath/ParZu/parzu -i tagged" 
      

      を最終注:空行が文境界を意味し、あなたのタグ付けされたテキストは、次の形式に変換してください:単語[タブ]のタグを[改行]