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.

朴素贝叶斯、文本分类与情感分析

原始 PDF

分类既是人类智能也是机器智能的核心。判断感官接收到的是什么字母、单词或图像,识别人脸或声音,分拣邮件,给作业评分;这些都是把输入归入某个类别的例子。寓言作家 Jorge Luis Borges(1964)曾设想把动物分成如下类别,由此凸显了这项任务可能面临的挑战:

(a)属于皇帝的;(b)做成标本的;(c)驯养的;(d)乳猪;(e)美人鱼;(f)传说中的;(g)流浪狗;(h)包括在本分类中的;(i)像疯子一样颤抖的;(j)数不清的;(k)用极细骆驼毛笔画的;(l)其他;(m)刚打破花瓶的;(n)从远处看像苍蝇的。

许多语言处理任务都涉及分类,好在我们的类别比 Borges 的类别容易定义得多。本附录介绍朴素贝叶斯算法,并把它用于文本分类(text categorization):为一整篇文本或文档指定标签或类别。

我们重点讨论一种常见的文本分类任务——情感分析(sentiment analysis),即提取作者对某个对象所表达的正面或负面倾向。网络上的电影、图书或商品评论表达作者对该产品的态度,社论或政治文本则表达对候选人或政治行动的态度。因此,提取消费者或公众情感与从营销到政治的诸多领域都密切相关。

最简单的情感分析是二元分类任务,评论中的词语会提供极好的线索。例如,下面这些短语摘自正面和负面的电影及餐馆评论。greatrichlyawesomepatheticawfulridiculously 等词都是信息量很大的线索:

+ …zany characters and richly applied satire, and some great plot twists

− It was pathetic. The worst part about it was the boxing scenes…

+ …awesome caramel sauce and sweet toasty almonds. I love this place!

− …awful pizza and ridiculously overpriced…

垃圾邮件检测是另一项重要的商业应用,它要把电子邮件归入 spamnot-spam 两类。许多词汇和其他特征都可以用于这项分类。例如,一封邮件若包含“online pharmaceutical”“WITHOUT ANY COST”或“Dear Winner”等短语,我们完全有理由怀疑它是垃圾邮件。

我们还可能想知道一段文本是用什么语言写成的。例如,社交媒体文本可能采用许多不同语言,因而需要不同的处理方式。因此,语言识别(language ID)是大多数语言处理流水线的第一步。与之相关的文本分类任务,如作者归属判定(确定文本作者),也与数字人文、社会科学和法庭语言学有关。

最后,文本分类中最古老的任务之一,是给文本指定图书馆主题类别或主题标签。判断一篇研究论文讨论的是流行病学还是胚胎学,是信息检索的重要组成部分。主题类别体系有很多,例如 MeSH(Medical Subject Headings,医学主题词表)。事实上,正如后文将看到的,朴素贝叶斯算法正是 Maron(1961)在 1961 年为主题类别分类任务发明的。

分类对于文档以下层级的任务同样不可或缺。我们已经见过句点消歧(判断句点是句末标点还是单词的一部分)和词元切分(判断某字符是否应作为词边界)。甚至语言模型也可以看作分类:每个词都可视作一个类,预测下一个词就是把当前上下文归入各个可能的下一词类别。词性标注器(第 18 章)则把句子中每次出现的词分类为名词、动词等。

分类的目标是接收一个观测,提取有用特征,然后把观测分到若干离散类别之一。文本分类的一种方法是使用人工编写的规则。人工规则分类器可以成为先进语言处理系统的组成部分,但当情境或数据随时间变化时,规则可能很脆弱;而且对某些任务,人类未必善于提出规则。

语言处理中的文本分类最常采用本附录所讨论的监督机器学习。在监督学习中,我们有一组输入观测,每个观测都关联一个正确输出(“监督信号”);算法的目标是学会把新观测映射为正确输出。

形式化地说,监督分类任务接收输入 xx 和固定的输出类别集合 Y={y1,y2,,yM}Y=\{y_1,y_2,\ldots,y_M\},并返回预测类别 yYy\in Y。在文本分类中,我们有时用 cc(class)表示输出变量,用 dd(document)表示输入变量。在监督情形下,训练集包含 NN 篇由人工标注类别的文档:{(d1,c1),,(dN,cN)}\{(d_1,c_1),\ldots,(d_N,c_N)\}。目标是学习一个分类器,把新文档 dd 映射到正确类别 cCc\in C,其中 CC 是有用文档类别的集合。概率分类器还会给出该观测属于各类别的概率。完整的类别分布可为下游决策提供有用信息;组合多个系统时,避免过早做出离散决策往往很有帮助。

许多机器学习算法都可用于构建分类器。本附录介绍朴素贝叶斯,下一章介绍逻辑回归,它们代表两种分类思路。朴素贝叶斯这类生成式分类器建立“某个类别如何生成输入数据”的模型;给定观测后,返回最可能生成该观测的类别。逻辑回归这类判别式分类器则学习输入中哪些特征最有助于区分不同类别。判别式系统通常更准确,因而使用更广泛,但生成式分类器仍有其作用。