情绪分析 - 当长度不同时,我应该对正面和负面单词列表进行标准化吗?

时间:2015-02-19 07:37:18

标签: nlp sentiment-analysis

我正在实施一种简单的情感分析算法,其中论文的作者有正面和负面单词的单词列表,只需计算分析文档中每个单词的出现次数,并给出文档的情感分数:

情绪=(#positive_matches - #negative_matches)/(document_word_count)

这是通过文档长度来标准化情绪分数但是否定词的语料库是正词语料库的大约6倍(大约300个正词和1800个否定词),因此通过上述度量,情绪分数可能是负面的因为有比负面词更多的负面词,所以有偏见。

如何纠正正面与负面语料库长度的不平衡?

我应该调整情绪分数,以便根据各自的语料库长度对每个阳性/阴性计数进行标准化,以便:

情绪* =((#positive_matches / #words_in_positive_corpus) - (#negative_matches / #words_in_negative_corpus))/(document_word_count)

非常感谢任何想法/理智检查/建议:)

4 个答案:

答案 0 :(得分:1)

你提出的公式基本上是一个坏主意,因为如果你有一句话:

“今天公司有好消息和坏消息”

你会期望对这句话有中立的情绪。 当你使用你的公式时,句子得到一个积极的情绪只是因为一个词典比另一个更大/更小。

一个想法是权衡词典中的单词(如果你可以修改它),这样你就可以如果单词对情绪计算不重要,那么100个非常强烈的情感词会有很大的权重,然后权重会减少。 现在,lexica尺寸的差异不再那么重要了。

答案 1 :(得分:0)

我怀疑当语料库本身有偏见时,你是否可以使用任何基于词典的模型获得好的结果。您可以应用一些规范化来最小化偏差,但它仍然不会给您带来好的结果。

您的简单基于词典的模型没有考虑短语(n-gram),上下文,否定等。基于分类器的模型,如Naive Bays,Max Entropy或Support Vector Machine可能会给您带来更好的结果。

您还可以尝试使用Lexicon和Naive Bayes等概率模型的混合方法并比较结果,但任何方法都需要良好的词典或训练有素的数据。

答案 2 :(得分:0)

如果您可以控制正面和负面词典,那么我建议使用this列表。我过去曾经使用它,发现它非常广泛而且平衡。此外,它也为每个词典提供极性强度。如果需要,您可以选择使用它。

答案 3 :(得分:0)

正如其他人已经说过的那样,基于字典的方法对于情绪分析并不乐观。特别是如果您的字典没有明确地为此任务创建,甚至不是特定于域的。

如果您出于某种原因想要使用此类方法,请尝试搜索其他情感感知词典或其获取方法,例如从here开始。

如果您想修复字典,请尝试通过WordNet或其他服务中的同义词扩展它(包括正面和负面),请参阅建议here

然而,你实际上更有趣的是事件的无偏见分布,例如"消息包含正面词"和"消息包含否定词",但不包含正和负词的相等计数。我的意思是,这些300个正面词可以出现在文本中(来自你的领域,这很重要)并不比这1800个负面词更常见。 而且,你不知道正面和负面词语的真实分布(你认为它们是同样的,但为什么呢?)因此你不知道它是否有偏见。