简述
一个句子是否合理,就看他的可能性大小如何。
概括来说:假定S表示某一个有意义的句子,由一连串特定顺序排列的词
w1,w2,...,wn
组成,这里的n表示句子的长度。则概率P(S)表示上面句子的合理性。
P(S)=P(w1,w2,...,wn)
利用条件概率公式:
P(w1,w2,...,wn)=P(w1)P(w2|w1)P(w3|w1,w2)...P(wn|w1,w2,...,wn−1)
上式中, P(w1) 表示第一个词出现的概率, P(w2|w1) 是在已知第一个词的前提下,第二个词出现的额概率,以此类推。简答的看一下上面的公式,可以发现除了 P(w1) 以及后面的 P(w2|w1) 比较好算以外,其他的项计算难度都比较大。
俄国科学家马尔科夫给出了一个假设—–假设任意一个词 wt 出现的概率只同它前面的词 wt−1 有关。于是上面的公式就可以简化为:
P(w1,w2,...,wn)=P(w1)P(w2|w1)P(w3|w2)...P(wn|wn−1)
上式对应的统计语言模型是 二元模型。
对于上面公式的求解,可以利用贝叶斯公式:
P(wi|wi−1)=P(wi−1,wi)/P(wi−1)
其中 P(wi−1,wi) 可以用样本的相对频率(样本数量足够)来统计。具体公式如下:
P(wi−1,wi)=N(wi−1,wi)/N(wi−1)
其中 N(wi−1,wi) 代表在样本中 wi−1,wi 和前后相邻出现了多少次。 N(wi−1) 表示在样本中 wi−1 出现了多少次。
延伸
高阶语言模型:假定文本中的没个词 wi 和前面的N-1个词有关,而与更前面的词无关,这样当前词 wi 的概率只取决于前面N-1个词 P(wi−N+1,wi−N+2,...,wi−1) ,因此:
P(wi|w1,w2,...,wi−1)=P(wi|wi−N+1,wi−N+2,...,wi−1)
上式对应的就是N元模型(N-Gram Model).对于上面介绍的模型,比如说二元模型,假设样本中 N(wi,wi−1) 出现的词数为0,这样的话能否说明 P(wi|wi−1) 概率为0。答案是否定的。对于未出现的事件,我们怎么处理??1953年古德和图灵给出了一个概率计算公式。
- 古德-图灵估计得原理:对于没有看见的事件,我们不能认为它发生的概率就是零,因此我们从概率的总量中,分配一个很小的比例给这些没有看见的事件。这样一来,看见的那些事件的概率总和就要小于1了,因此,需要将所有看见的事件概率调小一点。至于小多少,要根据“越是不可信的统计折扣越多”的方法进行。
- 举例:假定在语料库中出现r次的词有
Nr
个,特别的,未出现的词数量为
N0
。语料库的大小为N。那么:
N=∑r=1∞rNr
出现r次的词在整个语料库中的相对频率则是 rNr/N ,如果不做任何优化处理,就以这个相对频度作为这些词的概率估计。古德-图灵估计按照下面的公式计算 dr :
dr=(r+1)Nr+1/Nr
显然:
∑rdrNr=N
一般来说,出现一次的词的数量比出现两次的多,出现两次的比出现三次的多。这种规律成为zipf规律。所以r越大,词的数量 Nr 越小,即 Nr+1<Nr ,因此,一般情况下, dr<r ,而 d0>0 。这样的话就给未出现的词赋予了一个很小的非零值,从而解决了零概率的问题,同时下调了出现频率很低的词的概率。当然在实际应用中,一般对出现次数超过某个阈值的词,频率不下调,只对出现次数低于这个阈值的词,频率才下调,下调得到的频率总和给未出现的词。这样子的话出现r次的词的概率估计为 dr/N 。 - 按照上面的介绍,二元组
(wi−1,wi)
的条件概率估计
P(wi|wi−1)
也可以做同样的处理。对于二元组来说,所有可能的情况的概率总和应该为1,即:
∑wi∈VP(wi|wi−1)=1
对于出现次数少的二元组,按照古德-图灵的方法打折扣:
P(wi|wi−1)=⎧⎩⎨⎪⎪f(wi|wi−1)fgt(wi|wi−1)Q(wi−1)f(wi)if N(wi−1,wi)≥Tif 0≤N(wi−1,wi)≤Totherwise
其中, fgt() 表示经过古德-图灵估计后的相对频率,而
Q(wi−1)=(1−∑wi seenP(wi|wi−1))/∑wi unseenf(wi)
这种平滑的方式,最早由IBM的数学家卡茨提出,故称为卡茨退避法。