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 计数 | 二值计数 | ||
|---|---|---|---|---|
| + | − | + | − | |
| and | 2 | 0 | 1 | 0 |
| boxing | 0 | 1 | 0 | 1 |
| film | 1 | 0 | 1 | 0 |
| great | 3 | 1 | 2 | 1 |
| it | 0 | 1 | 0 | 1 |
| no | 0 | 1 | 0 | 1 |
| or | 0 | 1 | 0 | 1 |
| part | 0 | 1 | 0 | 1 |
| pathetic | 0 | 1 | 0 | 1 |
| plot | 1 | 1 | 1 | 1 |
| satire | 1 | 0 | 1 | 0 |
| scenes | 1 | 2 | 1 | 2 |
| the | 0 | 2 | 0 | 1 |
| twists | 1 | 1 | 1 | 1 |
| was | 0 | 2 | 0 | 1 |
| worst | 0 | 1 | 0 | 1 |
图 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’t、not、no、never)之后开始,给每个词加上 NOT_ 前缀,直到下一个标点符号。因此,短语
didn’t like this movie, but I
变成
didn’t NOT_like NOT_this NOT_movie, but I
新形成的“词”如 NOT_like、NOT_recommend 会在负面文档中更常出现,从而成为负面情感的线索;NOT_bored、NOT_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 章会再次讨论词典的使用,说明如何自动学习这些词典,以及如何把它们用于情感分类之外的许多任务。