我正在对现有的情绪分析器应用程序进行一些研究。我目前正在研究Stanford CoreNlp / Sentiment Analysis 3.8.0以及我在测试数据中注意到的预测似乎偏向负面。以下是一些回到负面的例子:
我检查过,只有一种可能的模型可供使用(所以我认为没有任何杠杆可以推动 - 我不想训练模型)。我可以使用不同的/更好的(可能是?)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非常积极
如果您在生产应用程序中使用此库,您是否可以找到可靠的结果来驱动它的操作?谢谢!
答案 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尽管这是一个相对常见的术语。
我自己也尝试使用他们预先训练过的模型来分析会话语言,结果既不坏但又不惊人:只是创建正面和负面模式列表的准确性并在我的文本与使用情绪分析器的文本没有显着差异。