Olli Huang作者Haojin Yang, Panda编辑

如何将多项式朴素贝叶斯应用于NLP问题?

引言

朴素贝叶斯是一系列算法,这些算法基于通过很强的(朴素的)假设应用贝叶斯定理,其中每一个特征都与其它特征无关,以便预测一个给定样本的类别。它们是概率分类器,因此会使用贝叶斯定理计算每个类别的概率,然后输出概率最高的类别。朴素贝叶斯分类器已被成功应用于很多领域,尤其是自然语言处理(NLP)领域。

但是,为什么要使用朴素分类器?

确实还存在其它处理 NLP 问题的方法,比如支持向量机(SVM)和神经网络。但是,朴素贝叶斯分类器设计简单,使其在这类分类器上很有吸引力。此外,研究已经表明它们在很多 NLP 应用都是快速、可靠且准确的。

所以,为什么不通过一个 NLP 问题来让我们理解朴素贝叶斯分类器呢?

Bruno Stecanella 在他的博客文章《朴素贝叶斯分类器的实用解释(A practical explanation of a Naive Bayes classifier)》中通过一个示例,带我们了解了构建一个用于求解一个典型 NLP 问题(文本分类)的多项式朴素贝叶斯分类器的全过程。

参阅:https://monkeylearn.com/blog/practical-explanation-naive-bayes-classifier/ 

一个实际示例

在这个示例中,给定一个句子“A very close game”,一个包含 5 个句子的训练集(如下所示)以及它们对应的类别(Sports 或 Not Sports)。目标是构建一个朴素贝叶斯分类器,使其能给出句子“A very close game”所属的类别。

作者 Bruno 建议说我们可以尝试应用朴素贝叶斯分类器,因此,策略目标就变成了计算“A very close game”属于 Sports 以及属于 Not Sports 的概率。哪个类别的概率更高,那个即为答案。

从数学表示,即我们要计算 P(Sports | A very close game),即给定句子“A very close game”属于 Sports 类别的概率。

Bruno在文中包含了一步步构建一个实现这一目标的朴素贝叶斯分类器的指南,即计算 P(Sports | A very close game)。

第 1 步:特征工程

第 1 步是特征工程,即提取文本的特征。我们需要多个特征作为分类器的输入。所以词频(word frequencies)是一个直观的选择,即计算每个词在文档中出现的次数。

然后,我们需要将我们希望计算的概率转换成可用词频计算的形式。这里,我们采用了概率和贝叶斯定理的性质来做这种转换。

在处理条件概率方面,贝叶斯定理非常有用,因为它为我们提供了一种逆转条件概率的方法:

针对我们的具体案例,我们希望计算的概率就可以这样计算:

因为我们只想知道哪个类别(Sports 或 Not Sports)有更高的概率,所以可以抛弃分母 P(a very close game),只比较P(a very close game | Sports) X P(Sports)与P(a very close game | Not Sports) X P(Not Sports)。

但有个问题:为了计算 P(a very close game | Sports),我们必须统计“A very close game”在 Sports 类别中出现的次数。但这根本没在训练集中出现过,因此这个概率为 0,也就使得 P(a very close game | Sports) 为 0 了。我们应该怎样解决这个问题呢?

第 2 步:朴素

在非朴素的贝叶斯方法中,我们是以整体形式看待句子,因此只要训练集中没有该句子,那么该句子的概率就为 0,从而难以进一步计算。而对于朴素贝叶斯,我们假设每个词都与其它词无关。现在,我们要看的是句子中的每个词,而不是整个句子。

基于此,我们可以重写我们所要计算的概率:

类似地,可得到:P(a very close game | Not Sports) = P(a | Not Sports) x P(very | Not Sports) x P(close | Not Sports) x P(game | Not Sports)

第 3 步:计算概率

这是最后一步,我们将得到答案:计算概率并比较哪个概率更高:P(a very close game | Sports) 或 P(a very close game | Not Sports)

其中,close 一词不存在于 Sports 类别中,所以 P(close | Sports) = 0,因此 P(a very close game | Sports)=0。当基于频率的概率为 0 时会有很大的问题,因为这会清除掉其它概率中的所有信息,我们需要为此找到一个解决方案。

Laplace 平滑是解决方案之一,这是一项用于平滑化类别数据的技术。即在每个概率估计中都整合一个小样本校正(或称伪计数(pseudo-count))。这样,就不会有 0 概率了。这是一种正则化朴素贝叶斯的方法,而且当伪计数为 0 时,这被称为 Laplace 平滑。而在一般情况下,这被称为 Lidstone 平滑。

在统计学中,加法平滑(也被称为 Laplace 平滑或 Lidstone 平滑,不要与 Laplacian 平滑混淆)是一项用于平滑化类别数据的技术。

给定来自一个多项式分布的一个观察 x = (x1, …, xd),其具有 N 个试验和参数向量 θ = (θ1, …, θd),则该数据平滑后的版本会给出估计量:

其中伪计数 α>0,这是平滑参数(α=0 表示没有平滑)。加法平滑是一类收缩估计方法,因为所得到的估计将处于经验估计 xi/N 和均匀概率 1/d 之间。使用拉普拉斯继承法,某些研究者认为 α 应该为 1(这种情况下使用的术语是“加一平滑(add-one smoothing)”),尽管实践中通常会选择一个更小的值。

来自维基百科:https://en.wikipedia.org/wiki/Additive_smoothing

所以,我们这里如何应用 Laplace 平滑

我们也许可以考虑这样设置平滑参数:α=1 且 d=14(参见上面的等式),我们给每个概率都加 1,使得 P(close | sports) 等概率永远不会为 0。而 14 则是两个类别中可能的词的数量,这使得除数总是大于 1。

我们现在可以重新计算概率了,这时候的概率不是零了:

P(close | Sports ) =(0+1)/(11+14)= 1/25

根据这种方法,我们可以得到比较 P(a very close game | Sports) 和 P(a very close game | Not Sports) 必需的其它概率:

从下面的结果可以看到,P(a very close game | Sports) 概率更高,这说明这个句子属于 Sports 类别。

最后,下面给出了一些用于提升基础的朴素贝叶斯分类器的表现的先进技术:

  • 移除停止词:有些常用词对分类而言没有实际用处,比如 a、able、either、else、ever 等等。所以在我们这个案例中,The election was over 会变成 election over,而 a very close game 则会变成 very close game。
  • 词形还原:这是将同一个词的不同变形形式归类到一起。所以 election、elections、elected 等都会被归类到一起,作为同一个词进行计数。
  • 使用 n-gram:除了像我们这里做的那样统计单词,我们也可以统计词序列,比如“clean match”和“close election”。
  • 使用 TF-IDF:除了单纯地统计词频,我们还可以做一些更高级的事情,比如惩罚那些在大多数文本中都常出现的词。

3 简评

当在文本分类问题上应用多项式朴素贝叶斯时,在开始之前应该先考虑两个问题:

(1) 你要从文本中提取哪些特征?

在应用朴素贝叶斯分类器时,特征工程是一大关键步骤。在 Bruno 的博客文章中,他选择了词频作为文本特征。但是,要让你的分类器更高级,TF-IDF 会是一个理想选择。TF-IDF 不仅能计数一个词在给定文本(或文档)中出现的次数,而且还能反映该词对该文档的重要程度。

(2) 你是否在概率上执行了平滑?

基于频率的概率可能会为零,当在对这些概率进行乘法操作时,会导致其它非零概率所贡献的信息丢失。因此,为了应对这一问题,必须使用 Laplace 平滑等平滑方法。

这些问题处理好之后,你在应用朴素贝叶斯分类器时就更可能得到合理的结果。而且你会发现朴素贝叶斯分类器在文本分类等 NLP 任务上是一种既简单又强大的技术。

工程NLP贝叶斯网络统计学
相关数据
参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

文本分类技术

该技术可被用于理解、组织和分类结构化或非结构化文本文档。文本挖掘所使用的模型有词袋(BOW)模型、语言模型(ngram)和主题模型。隐马尔可夫模型通常用于词性标注(POS)。其涵盖的主要任务有句法分析、情绪分析和垃圾信息检测。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

朴素贝叶斯技术

朴素贝叶斯是一种构建分类器的简单方法。该分类器模型会给问题实例分配用特征值表示的类标签,类标签取自有限集合。它不是训练这种分类器的单一算法,而是一系列基于相同原理的算法:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关。举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的。

反比文档频数权重评价方法技术

tf-idf(英语:term frequency–inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术。tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。tf-idf加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了tf-idf以外,互联网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜索结果中出现的顺序。

支持向量机技术

在机器学习中,支持向量机是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

规范化技术

规范化:将属性数据按比例缩放,使之落入一个小的特定区间,如-1.0 到1.0 或0.0 到1.0。 通过将属性数据按比例缩放,使之落入一个小的特定区间,如0.0到1.0,对属性规范化。对于距离度量分类算法,如涉及神经网络或诸如最临近分类和聚类的分类算法,规范化特别有用。如果使用神经网络后向传播算法进行分类挖掘,对于训练样本属性输入值规范化将有助于加快学习阶段的速度。对于基于距离的方法,规范化可以帮助防止具有较大初始值域的属性与具有较小初始值域的属相相比,权重过大。有许多数据规范化的方法,包括最小-最大规范化、z-score规范化和按小数定标规范化。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

推荐文章
暂无评论
暂无评论~