如何获得多个句子的整体情绪

时间:2014-02-24 21:10:17

标签: java jar stanford-nlp sentiment-analysis

如何找到多个句子/段落/大段文本的汇总情绪。

我在下面的代码中基于github Stanford CoreNLP测试和各种示例,但我发现的所有已经完成情感分析,只计算单个句子的情绪。但我想要整体推文的情绪,无论其中有多少句话。

我能想到的另一种方法是为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);

1 个答案:

答案 0 :(得分:2)

stanford corenlp中的情感分析工具包是在句子级数据集上进行训练的。如果您需要文档级情绪引擎,我认为在文档上培训新模型是更好的选择。您也可以尝试逐个处理句子,并使用一些棘手的方法(例如average,max)作为基线来测试它是如何工作的。