古德-图灵估计可以解决n元语法模型(n-gram)中的数据的稀疏问题。主要的思想是把非零的n元语法的概率降低匀给一些低概率n元语法,以修改最大似然估计与真实概率之间的偏离。是实用比较多的平滑算法。
图:从左到右的变化:把一部分看得见的事件的概率匀给未看见的事件
以统计词典中的概率为例,来说明古德-图铃公式。
假定在语料库中出现r次的词有Nr个,特别的出现0次(未登录词)出现的次数为N0个。语料库中词语的个数为N,显然
出现r次的词在词典中的相对频度为r/N。如果不做任何优化处理,就依这个相对频度作为这些词的概率估计。
加入当r非常小时,这么统计可能不可靠,因此出现r次的那些词在计算它们的概率时要使用一个更小一点的数,是dr,而不是r。古德-图灵估计按照下面的公式计算dr:
dr=(r+1)* Nr+1/Nr
显然
一般来说,出现一次的词的数量比出现两次的词的数量多,出现两次的词的数量比出现三次的数量多。这叫做Zipf定律。下图是一个小语料库中,出现次数r和对应的数量Nr之间的关系。
这样就给未登录词一个很小的非零值,从而解决了零概率问题。同时下调了出现频率很低的词的概率。在实际的自然语言处理中,一般对出现次数超过某个阈值的词概率不下调;只对低于这个阈值的词,概率下调;下调的频率之和等于未登录词的概率。
对于二元组(wi-1,wi)的条件概率估计P(wi|wi-1)也可以做同样的处理。因通过前一个词wi-1预测后一个词wi时,所有可能情况的条件总和应该为1,即
对于出现次数非常少的二元组(wi-1|wi),它们出现的次数需要按着古德-图灵的方法打折扣,这样意味着有一部分概率没有分配出去,留给了未登录的二元组(wi-1wi)。基于这种思想,估计二元模型概率公式如下:
其中T是一个阈值,一般在8-10左右,fgt表示经过古德-图灵估计后的相对频度。
部分摘自《数学之美》 吴军