NLP算法之一(朴素贝叶斯理论部分)

来源:互联网 发布:pptv聚力网络电视下载 编辑:程序博客网 时间:2024/06/14 04:43


一、贝叶斯公式

贝叶斯公式就一行:

P(Y|X)=P(X|Y)P(Y)P(X)

而它其实是由以下的联合概率公式推导出来:

P(Y,X)=P(Y|X)P(X)=P(X|Y)P(Y)

其中P(Y)叫做先验概率,P(Y|X)叫做后验概率,P(Y,X)叫做联合概率。

没了,贝叶斯最核心的公式就这么些。

二、机器学习的视角理解贝叶斯公式

X理解成“具有某特征”,把Y理解成“类别标签”(一般机器学习为题中都是X=>特征Y=>结果对吧)。在最简单的二分类问题(判定)下,我们将Y理解成“属于某类”的标签。判断P(|)是否大于1/2就够了。贝叶斯方法把计算“具有某特征的条件下属于某类”的概率转换成需要计算“属于某类的条件下具有某特征”的概率

三、朴素贝叶斯(Naive Bayes),“Naive”在何处?

也就是说,在朴素贝叶斯眼里,“我司可办理正规发票”与“正规发票可办理我司”完全相同。朴素贝叶斯失去了词语之间的顺序信息。

这就相当于把所有的词汇扔进到一个袋子里随便搅和,贝叶斯都认为它们一样。因此这种情况也称作词袋子模型(bag ofwords)

词袋子模型与人们的日常经验完全不同。比如,在条件独立假设的情况下,“武松打死了老虎”与“老虎打死了武松”被它认作一个意思了。恩,朴素贝叶斯就是这么单纯和直接,对比于其他分类器,好像是显得有那么点萌蠢。

四、处理重复词语的三种方式

我们之前的垃圾邮件向量(“我”,“司”,“可”,“办理”,“正规发票”,“保真”,“增值税”,“发票”,“点数”,“优惠”),其中每个词都不重复。而这在现实中其实很少见。因为如果文本长度增加,或者分词方法改变,必然会有许多词重复出现,因此需要对这种情况进行进一步探讨。比如以下这段邮件:

“代开发票。增值税发票,正规发票。” 分词后为向量: (“代开”,“发票”,“增值税”,“发票”,“正规”,“发票”)

其中“发票”重复了三次。

多项式模型,考虑出现的次数,每次出现都记录。

伯努利模型(二项分布):将重复的词语视为 1次。

混合模型:计算句子概率时,不考虑重复词语出现的次数,但是在统计计算词语的概率P(“词语”|S)时,却考虑重复词语的出现次数,这样的模型可以叫作混合模型

五、去除停用词与选择关键词

六、平滑技术

    简单的就是分母和分子都加点东西

为了解决零概率问题呢,我们需要给 “未出现的n-gram条件概率分布一个非零估计值,相应得需要降低已出现n-gram条件概率分布,且经数据平滑后一定保证概率和为1”。这就是平滑技术的基本思想。

拉普拉斯平滑

保证每个n-gram在训练语料中至少出现1次

古德图灵(Good Turing)平滑

·             出现0次的n元组也不能认为其是0次,应该给它一个比较小的估计值,比如为d0d0次。

·        为了保证总共的(出现和未出现的)n元组的次数不变,其他所有已出现的n元组的次数r应该打一个折扣,比如为drdr次。

·        然后再用新的drdr去计算各个条件概率。

 

 

 

七、小方法

    很多乘法运算,计算的时间开销比较大。尤其是对于篇幅比较长的邮件,几万个数相乘起来还是非常花时间的。如果能把这些乘法变成加法则方便得多。刚好数学中的对数函数log就可以实现这样的功能。两边同时取对数(本文统一取底数为2)

有一种方法可以省略提前选取关键词的步骤,就是直接选取一段文本中权重最高的K个词语,将其权重进行加和

八、朴素贝叶斯的局限性

   朴素贝叶斯的局限性来源于其条件独立假设,它将文本看成是词袋子模型,不考虑词语之间的顺序信息,就会把“武松打死了老虎”与“老虎打死了武松”认作是一个意思。那么有没有一种方法提高其对词语顺序的识别能力呢?有,就是这里要提到的N-gram语言模型。

联合概率链规则(chain rule) :

P(x1,x2,x3,x4,x5,,xn)P(x1,x2,x3,x4,x5,…,xn) =P(x1)P(x2|x1)P(x3|x1,x2)...P(xn|x1,x2,...,xn1)=P(x1)P(x2|x1)P(x3|x1,x2)...P(xn|x1,x2,...,xn−1)

从联合概率链规则到n-gram语言模型

    联合概率链规则公式考虑到词和词之间的依赖关系,但是比较复杂,在实际生活中几乎没办法使用,于是我们就想了很多办法去近似这个公式,比如我们要讲到的语言模型n-gram就是它的一个简化。

  参考宗成庆的自然统计基础and寒小阳。

 

0 1