数学之美:统计语言模型

一个有意义的句子是由一定顺序的词组成,则一个句子出现的可能性可以使用如下表示:
数学之美:统计语言模型
这是典型的条件概率理论,也就是说当我们知道第一词w1后,要预测下一个w2的概率时是在基于已知词w1的情况下预测的。但是当一个句子很长时,越是后面的词,其条件概率的类型越多,难以估算。因为在这个词前面有n-1个词,这也就是说P(wn|w1,w2…wn-1)的种类由于每个wi都有字典长度个数L的可能性,导致变量空间是有L^n种可能性。因此如何降低这种高度依赖性是个问题。
幸好马尔可夫提出了著名的马尔可夫链。假设每个词出现的概率只与前一个词有关,因此上式可依据马尔科夫假设变成如下:
数学之美:统计语言模型
上述模型称为二元模型,如果一个词与前面的n-1个词有关就叫n元模型(一般高一点也就是3元,因为太高就会出现前面所说的N的指数倍复杂度)。如下:
数学之美:统计语言模型
接下来就是如何计算这些概率了,基于联合概率和大数理论,但样本的数量足够多时,概率接近频率。
数学之美:统计语言模型
因此对于上式很简单,只要统计相连两词wi和wi-1在整个文本中出现的次数除以总数就能得到频率。
这种方式很简单,但在实际中有更多的细节问题需要解决。
零概率问题
前面提到模型参数最终落点到对出现频数的统计。但一个问题是如果(wi,wi-1)没有在文中出现怎么办?如果出现次数为0,计算所得概率就为0.这会导致对这种类型的句子预测概率一直为0.
最好的办法是增加数据量,但这在实际中耗时耗力。而且即使尽可能收集数据也可能无法满足所有的情况都能出现。
古德-图灵估计理论认为在统计过程中相信那些量大的较为可靠的统计数据,而对于那些量小的由于波动的可能性较大,应该对其统计的概率进行折扣,并将折扣的这部分概率赋予那些从未见过的事件,从而避免概率为0的情况。具体如下:
定义语料库中出现r次的词的个数为Nr。如果不做优化的话,该词出现的概率可用r/N来表示。但当一个词出现的频数过小时,按照古德-图灵估计,对于该次的统计是不够准确的,应该用一个小于r的次数(dr)表示。古德-图灵估计按以下公式计算dr:
数学之美:统计语言模型
数学之美:统计语言模型
首先上式依然保证了最终概率和为1,其次由于一般情况下出现一次的词的量要比出现两次的词的量多,也即Nr+1<Nr,因此一般情况下dr<r。且由于未见过词的存在,d0=N1/N0>0.这样保证了即使是未见过词,其概率只是很小,也不是为0.
这样一个词的频率就为dr/N。在实际自然语言处理过程中,对于出现次数超过一定阈值是不用下调频率的,对那些出现次数小于阈值的才会下调,且越小折扣越大。
解释一下公式dr的设计思想,其中r+1中加1应该是为了避免当r等于0时dr=0,之所以使用Nr+1除以Nr,是因为当r越小Nr越大,基于下图的观察就会发现r越小,dr对于r的折扣程度越大。
数学之美:统计语言模型

对于二元模型也采用类似措施:
数学之美:统计语言模型
上面公式很好理解,就是从1中减去所有看到的词的条件概率,然后根据未看见对于单个词统计的频率比例分配剩余概率。这种平滑方法更具体的见卡茨退避法。
之前在朴素贝叶斯中同样遇到这类问题,使用的laplace平滑方法,可作为借鉴。