斯坦福情绪分析偏向负面?

时间:2017-07-21 03:01:50

标签: java nlp stanford-nlp sentiment-analysis

我正在对现有的情绪分析器应用程序进行一些研究。我目前正在研究Stanford CoreNlp / Sentiment Analysis 3.8.0以及我在测试数据中注意到的预测似乎偏向负面。以下是一些回到负面的例子:

  1. 纽约是我最终想要完成教学生涯的地方,而且机会太好了,无法拒绝。 - 否定
  2. 我理解成为一名有效且有影响力的老师是我的责任,但我渴望在课前,课时和课余时间提出,以确保我是学生的可用资源。 - 否定
  3. 根据我的个人经验,我在课堂上学到了许多必要的生活技能,而我最有影响力的老师是我的激励者和支持者。 - 否定
  4. 我检查过,只有一种可能的模型可供使用(所以我认为没有任何杠杆可以推动 - 我不想训练模型)。我可以使用不同的/更好的(可能是?)POS,这可能会给我一个不同的预测,但我有点神秘,因为我读到的关于斯坦福大学图书馆的所有博客/评论都是积极的,我的结果非常糟糕。我错过了什么吗?

    代码:

        Properties props = new Properties();
        props.setProperty("annotators", "tokenize, ssplit, parse, sentiment");
        StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
        Annotation document = pipeline.process(text);
        pipeline.annotate(document);
    
        List<CoreMap> sentences = document.get(CoreAnnotations.SentencesAnnotation.class);
        int mainSentiment=0; int longest = 0;
        SimpleMatrix matrix = null;
        for (CoreMap sentence : sentences) {
            String s_sentiment = sentence.get(SentimentCoreAnnotations.SentimentClass.class);
    
            Tree tree = sentence
                    .get(SentimentCoreAnnotations.SentimentAnnotatedTree.class);
            int sentiment = RNNCoreAnnotations.getPredictedClass(tree);
            matrix = RNNCoreAnnotations.getPredictions(tree);
    
            System.out.println(sentence);
            System.out.println(sentiment + "-" +s_sentiment + "\t" + matrix.elementMaxAbs());
        }
    

    分数的可能值: 0非常负面 1否定 2中立 3正面 4非常积极

    如果您在生产应用程序中使用此库,您是否可以找到可靠的结果来驱动它的操作?谢谢!

1 个答案:

答案 0 :(得分:0)

首先,从版本3.3.1开始,不仅有一个模型作为参数传递给the option sentiment.model而是两个(遗憾的是,这似乎没有在网站的任何地方提及):

  • 一个四级模型(非常消极否定中立正面非常积极的edu/stanford/nlp/models/sentiment/sentiment.ser.gz
  • 两级模型(否定中立肯定edu/stanford/nlp/models/sentiment/sentiment.binary.ser.gz

这不是标准模型集的一部分,而是the additional models-english model;为了使用它,你需要获得它,这可以更好地记录。适当的Maven工件依赖性将是

<dependency>
        <groupId>edu.stanford.nlp</groupId>
        <artifactId>stanford-corenlp</artifactId>
        <version>${stanford-corenlp.version}</version>
        <classifier>models-english</classifier>
        <scope>runtime</scope>
</dependency>

their 2013 paper所述,他们使用电影评论语料库来创建他们的模型,而且这种数据很可能不是分析你所用语言的类型:例如, looking for too good to refuse in their corpus gives no results at all尽管这是一个相对常见的术语。

我自己也尝试使用他们预先训练过的模型来分析会话语言,结果既不坏但又不惊人:只是创建正面和负面模式列表的准确性并在我的文本与使用情绪分析器的文本没有显着差异。