2014-02-24 56 views
3

如何找到多個句子/段落/大段文字的彙總情緒。如何獲得多個句子的整體情緒

我有下面的代碼,我已經根據github斯坦福CoreNLP測試和各種例子,但一切我已經發現已完成情緒分析計算單個句子的情緒。但是,無論有多少句子,我都希望整體tweet的情緒。

我能想到的唯一的另一種方式是爲SentimentPipeline.main(String[])創建一個單獨的線程,並將文本提供給stdin並收集sdout中的整體情緒。我寧願能夠使用我的代碼來使它更簡單/更高效,但我還沒有找到任何東西。

此外,我不想像大多數人那樣對一個jar進行系統調用,因爲我每天會做數百萬條推文。每次加載資源的開銷都會太大。

Annotation document = new Annotation(text); 
pipeline.annotate(document); 

List<CoreMap> sentences = document.get(SentencesAnnotation.class); 
     String output; 
     for (CoreMap sentence : sentences) { 
      // traversing the words in the current sentence a CoreLabel is a CoreMap with additional token-specific methods 
      output = ""; 
      for (CoreLabel token : sentence.get(TokensAnnotation.class)) { 

       // this is the text of the token 
       String word = token.get(TextAnnotation.class); 

       // this is the Parts Of Speech tag of the token (noun, verb, adjective etc) 
       // String pos = token.get(PartOfSpeechAnnotation.class); 

       // this is the NER label of the token 
       String ne = token.get(NamedEntityTagAnnotation.class); 
       if (!ne.contentEquals("O")) { 
        output = output + (ne + " " + word + " "); 
       } 
      } 

      //**************Sentiment Analysis 
      Tree tree = sentence.get(SentimentCoreAnnotations.AnnotatedTree.class); 
      String sentiment = RNNCoreAnnotations.getPredictedClass(tree); 
+0

如果你在這裏找不到答案,也可以考慮發佈到官方的[java-nlp-user郵件列表](http://nlp.stanford.edu/software/corenlp.shtml#Mail),如果你沒有找到答案,已經。 –

回答

2

stanford corenlp中的情感分析工具包在句級數據集上進行了培訓。如果您需要文檔級的情感引擎,我認爲在文檔上培訓新模型是更好的選擇。您還可以嘗試逐句處理句子,並使用一些棘手的方法(如平均值,最大值)作爲基線來測試它的工作原理。

+0

是的,我正在考慮的只是平均句子的情緒,但我不認爲這會給出準確的代表性。我認爲我的方法是在一個新線程中調用'SentimentPipeline.main(String [])',並以某種方式在'stdin'中拋出字符串並獲得這種情緒。 –

+0

以上答案是正確的。總之......它不是。這很奇怪,你會認爲他們會想要一個整體的情緒分析。 –