2017-03-07 25 views
0

スタンフォードCoreNLPを使用している場合、結果はXML出力ファイルになります。その中にスピーカーの名前の列があります:会話からスピーカーの注釈を抽出するにはどうすればよいですか?

 <word>Mike</word> 
     <lemma>Mike</lemma> 
     <CharacterOffsetBegin>0</CharacterOffsetBegin> 
     <CharacterOffsetEnd>4</CharacterOffsetEnd> 
     <POS>NNP</POS> 
     <NER>PERSON</NER> 

     *<Speaker>PER0</Speaker>* 

     <TrueCase>INIT_UPPER</TrueCase> 
     <TrueCaseText>Mike</TrueCaseText> 
     <sentiment>Neutral</sentiment> 

どのように私はスピーカーの結果をJavaコードで操作できますか?そして、どうすれば結果を改善できますか?たとえば、会話の中で私はマイクをPER0の代わりに入手したいと思っています

ありがとうございました。

答えて

0
+0

はい、しかし、私はまた、生成された結果を改善する必要があります。 私は、私が操作できるはずのスピーカー・アノテーターがいると思います。 –

+0

このXMLスニペットはDOMツリーの深いところにありますか?これは複数のスピーカーにとって繰り返されますか? Speakerを子として含むルート要素を検索し、Mikeという単語要素を返します。 –

0

まず、あなたは私がより明確にしようとするあなたの答え
には大きな@Thomas感謝このコードで

PrintWriter xmlOut = new PrintWriter("xmlOutput.xml"); 
    Properties props = new Properties(); 
    props.setProperty("annotators","tokenize, ssplit, pos, lemma, truecase, ner, parse,quote, mention, dcoref, sentiment"); 
    props.put("truecase.overwriteText", "true"); 
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);  
    Annotation annotation = new Annotation("Mike said : \"I vote for Hillary.\"\n 
              peter said : \"I vote for Donald.\""); 
    pipeline.annotate(annotation); 
    pipeline.xmlPrint(annotation, xmlOut); 

xmlOut.xmlは、2つのセンテンスの分析を表します。

First Sentence

<マイクは言った>、<:>、< ">と<は"> naratorの演説(PER0)として考えられています。私はヒラリーに投票
<>ピーターは<、>本人1.

Second Sentence

<の音声として考えられている:>、< ">と<"> naratorのとして考えられていますスピーチ(PER0)。
<私はドナルドに投票します。 >はピーターの演説と見なされます。 CoreAnnotations -
:=>ここでの唯一の違いは、スタンフォードCoreNLP上のJavaDocで検索しながら、私は小文字でピーターを書いて、私は大文字でそれを書くとき、スピーカーの結果は4

になるということである私は、このようなスピーカーの話をするクラスを見つけます.SpeakerAnnotation
- CoreNLPProtos.SpeakerInfo
- CoreNLPProtos.SpeakerInfo.Builder
- CoreNLPProtos.SpeakerInfoOrBuilder
- SpeakerInfo
- SpeakerInfo
- SpeakerMatch

私はまずxmlOutに効率的な結果を持たせ、次にDOM XMLを使用せずにこれらのクラスを使用してスピーカーとスピーチを抽出する方法を知りたいと思います。

関連する問題