当我们训练语言模型时候,就算使用一个相当大量的语料,如果直接用比值计算概率,大部分条件概率依然是零,这种模型称之为“不平滑”。在实际应用中,这种现象不可避免。 古德提出了在统计中相信可靠的统计数据,而对于不可行的统计数据打折扣的一种概率估计方法,同时将折扣出来的那一小部分概率分给未看见的事件(Unseen Events)。称为古德-图灵估计(Good-Turing Estimate)。
这种思想如上图所示,对于未出现的事件,我们应该认为它们是有概率出现的,因此需要从概率总和,也就是1,折扣出来一部分给他们,并且要根据“越是不可信的统计折扣越多”的方法来进行。 即: 假定在语料库中,出现r次的词有个,特别的,未出现的词数量为,语料库的大小为N,则有:
出现r此在整个语料中的相对频度则是 现在假定,当r比较小时,他的统计可能不可靠,因此在计算那些出现r词的词的概率是,要使用一个更小一点的次数,即 ,古德-图灵估计按照下面的公式计算:
我们容易得到:
一般来说,出现一次的词的数量比出现两次的词的数量多,出现两次的词的数量比出现三次的多,这种规律称之为Zipf定律。所以,当r越大,词的数量就越少,即 。因此,一般情况下,,而。这样就给未出现的词赋予了一个很小的值,从而解决了零概率的问题,同时下调了出现频率很低的词的概率。 在实际应用中,一般对出现次数超过某个阈值的词,频率不下调,低于这个阈值的,频率才下调,下调的频率分给未出现的词。这样出现r此的词的频率估计为。 对于二元组的条件概率估计 可以同样的处理。我们知道,通过前一个词w_i$,所有的条件概率总和应该为1,即:
对于出现频数非常少的二元组,需要按照Good-Turing来打折扣。 公式如下:
其中 T 是上面提到的阈值,一般是8-10左右,表示经过古德-图灵估计后的相对频度,而:
这样可以保证上面概率和为1的公式。这种平滑的方法称为Katz backoff。