Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

B.4 针对情感分析的优化

标准的朴素贝叶斯文本分类用于情感分析时表现可以很好,但通常会采用几项小改动来进一步提升性能。

首先,在情感分类和其他一些文本分类任务中,一个词是否出现似乎比它出现的频率更重要。因此,把每篇文档中的词频截断为 1 往往能改善性能(相关结果的文献见本附录末尾)。这种变体称为二值多项式朴素贝叶斯,或简称二值朴素贝叶斯。它使用与图 B.2 相同的算法,区别在于:训练时,在把各文档连接成一篇大文档之前,先删除每篇文档内重复的词;测试文档中也删除重复词。图 B.3 给出一个例子,其中四篇文档(为本例经过缩短和文本规范化)被映射成二值表示,右表列出修改后的计数。为使差异更清楚,本例没有采用加一平滑。注意最终计数不一定为 1;即使在二值朴素贝叶斯中,great 的计数也是 2,因为它出现在多篇文档里。

四篇原始文档逐文档二值化后
− it was pathetic the worst part was the boxing scenes− it was pathetic the worst part boxing scenes
− no plot twists or great scenes− no plot twists or great scenes
+ and satire and great plot twists+ and satire great plot twists
+ great scenes great film+ great scenes film
普通 NB 计数二值计数
++
and2010
boxing0101
film1010
great3121
it0101
no0101
or0101
part0101
pathetic0101
plot1111
satire1010
scenes1212
the0201
twists1111
was0201
worst0101

图 B.3 二值朴素贝叶斯算法的二值化示例。

情感文本分类常用的第二项重要改进,是处理否定。比较“I really like this movie”(正面)和“I didn’t like this movie”(负面):didn’t 表达的否定完全改变了我们从谓词 like 得出的推断。同样,否定也能修饰负面词而产生正面评论,例如“don’t dismiss this film”“doesn’t let us get bored”。

情感分析中处理否定的一种常见而简单的基线方法如下:在文本规范化期间,从逻辑否定词元(n’tnotnonever)之后开始,给每个词加上 NOT_ 前缀,直到下一个标点符号。因此,短语

didn’t like this movie, but I

变成

didn’t NOT_like NOT_this NOT_movie, but I

新形成的“词”如 NOT_likeNOT_recommend 会在负面文档中更常出现,从而成为负面情感的线索;NOT_boredNOT_dismiss 则会获得正面关联。句法分析(第 19 章)可以更准确地处理否定词与其所修饰谓词之间的辖域关系,但这一简单基线在实践中效果相当好。

最后,有时带标签的训练数据不足,无法利用训练集中的所有词来估计正面和负面情感、训练出准确的朴素贝叶斯分类器。此时可以改用情感词典来派生正负面词特征;情感词典是预先标注了正面或负面情感的词表。四个常用词典是 General Inquirer(Stone et al., 1966)、LIWC(Pennebaker et al., 2007)、Hu and Liu(2004)的 opinion lexicon,以及 MPQA Subjectivity Lexicon(Wilson et al., 2005)。

例如,MPQA 主观性词典包含 6885 个词,每个词都标有强或弱的正面或负面偏向。部分示例如下:

+:admirable, beautiful, confident, dazzling, ecstatic, favor, glee, great

−:awful, bad, bias, catastrophe, cheat, deny, envious, foul, harsh, hate

在朴素贝叶斯分类器中使用词典的一种常见方法,是添加一个特征,每当词典中的词出现就累计该特征。例如,可以添加“该词出现在正面词典中”这一特征,把词典中所有词的实例都作为这一个特征的计数,而不是分别统计每个词;同样再添加“该词出现在负面词典中”作为第二个特征。如果训练数据很多,而且测试数据与训练数据相匹配,只用两个特征不会像使用全部词那样有效。但训练数据稀疏或不能代表测试集时,密集的词典特征可能比稀疏的单词特征具有更好的泛化能力。

第 23 章会再次讨论词典的使用,说明如何自动学习这些词典,以及如何把它们用于情感分类之外的许多任务。