첫째, 당신이 좀 더 명확하게하려고합니다 답변
에 대한 더 큰 @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은 두 문장의 분석을 나타냅니다.
First Sentence
< 마이크가 말했다>, < :>, < ">와 <은">는 narator의 연설 (PER0)로 간주됩니다. > < ">와 <을">로 간주됩니다이 narator의 :
나는 힐러리에게 투표 <은
< 베드로가 말했다 1.
Second Sentence
사람의 연설>, <로 간주됩니다> 연설 (PER0).
< 나는 Donald에게 투표합니다. >는 베드로의 연설로 간주됩니다. => 여기에 유일한 차이점은 내가 소문자와 피터를 쓴 내가 대문자로 쓰기 할 때 스탠포드 CoreNLP에의 JavaDoc에서 검색하는 동안 스피커의 결과가 나 같은 스피커에 대해 이야기 클래스를 찾을 수 4.
이 될 것입니다 :
를 - CoreAnnotations .SpeakerAnnotation
- CoreNLPProtos.SpeakerInfo
- CoreNLPProtos.SpeakerInfo.Builder
- CoreNLPProtos.SpeakerInfoOrBuilder
- SpeakerInfo
- SpeakerInfo
- SpeakerMatch
먼저 xmlOut과 두 번째로 더 효율적인 결과를 얻고 싶습니다. DOM XML을 사용하지 않고이 클래스를 사용하여 스피커와 음성을 추출하는 방법을 알 수 있습니다.
예, 그렇지만 생성 된 결과를 개선해야합니다. 나는 조작 할 수 있어야하는 Speaker Annotator가 있다고 생각합니다. –
이 XML 스 니펫은 DOM 트리 깊숙이 있습니까? 여러 명의 스피커에 대해 이렇게 반복됩니까? Speaker를 자식으로 포함하는 루트 요소를 검색 한 다음 Mike라는 단어 요소를 반환 할 수 있습니다. –