使用 OpenNLP 进行情绪分析

Posted

技术标签:

【中文标题】使用 OpenNLP 进行情绪分析【英文标题】:Sentiment Analysis using OpenNLP 【发布时间】:2015-09-23 07:42:41 【问题描述】:

我正在使用 Apache OpenNLP 对 Yammer 对话进行情绪分析。这里的想法是将每个对话分为积极、消极或中性情绪。对话可以是单个句子或一组句子。

我有 2 个模型 - 一个短句分类模型和一个长句分类模型。短句分类模型用较短的句子(少于 10 个词)训练,截断为 2,长句分类模型用较长的句子训练,截断为 5。

这是我的方法

    阅读每个对话。 清除它以删除 HTTP URL、特殊字符、在点后添加空格等。 使用 SentenceDetector 将对话拆分成句子。 对于每个句子调用分类。如果句子很短,则调用短句分类模型,否则调用长句分类模型。句子分类的输出是肯定的、否定的或中性的 总结句子分类的结果。即,如果发现更多积极的句子,则相应地将对话分类为积极的,否则为消极的或中性的。

我有几个与此方法相关的问题

    我需要两个模型,一个短句模型和一个长句模型。我决定这样做的原因是因为较短句子和较长句子的截断是不同的。 是否可以按照一个基于句子的分类模型,然后将每个句子的结果相加得到对话的结果。 是否有解决此问题的标准/更好的方法

【问题讨论】:

【参考方案1】:

我认为你的方法是有效的......尝试在大块文本上构建情感模型是有问题的,所以基于句子的方法对我来说似乎是个好主意。

对于长句和短句模型,这似乎是个好主意,假设短句和长句的内容之间存在足够大的差异(“通常”)。您还可以考虑为较长的句子模型使用不同的特征生成器...有时 ngram(单词双语法)可以很好地帮助将内容上下文化,而不是普通的词袋方法。

至于输出,汇总一个总和可能有点难以标准化,因为每个线程中的句子数量未知(也许......),所以我会考虑做基本统计(最小,最大, sum、avg、stdev、majority),这样您就可以对结果提出更好的问题(例如,您可以将结果写入索引以实现支持多个用例的模糊发现)

HTH

【讨论】:

以上是关于使用 OpenNLP 进行情绪分析的主要内容,如果未能解决你的问题,请参考以下文章

使用opennlp进行依存句法分析

使用opennlp进行文档分类

OpenNLP 在使用泰语模型时出错

在opennlp中训练自己的模型

OpenNLP-Document Categorizer-如何根据状态对文档进行分类;文档的语言不是英语,还有默认功能吗?

如何在 OpenNLP 中创建一个好的 NER 训练模型?