如何找到多个句子/段落/大段文本的汇总情绪。
我在下面的代码中基于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);
答案 0 :(得分:2)
stanford corenlp中的情感分析工具包是在句子级数据集上进行训练的。如果您需要文档级情绪引擎,我认为在文档上培训新模型是更好的选择。您也可以尝试逐个处理句子,并使用一些棘手的方法(例如average,max)作为基线来测试它是如何工作的。