上文提到,对于没有看见的事件,我们不能认为它发生的概率就是0,因此我们从概率的总量中分配一个很小的比例给这些没有看见的事件。所以对于任何一个出现了r
次的n元语法,我们都假定其出现了r*
次,r*
的计算方法如上式所示。
首先我们将,r=0
代入,可以发现新计算出来的r*
已经不等于0了,也即为这些未出现的词分配了一定的出现概率。
我们用相对频度来估计出现了r
次的词的概率和,也即r*nr/N
,N
为训练语料的大小。
总概率是一定的,既然r=0
的概率增加了,那谁的概率减少了呢?
我们考虑这样一个问题,一般出现次数越少的词的个数越多,也即出现一次的词的个数多于出现两次的词的个数,也多于出现三次的词的个数,这叫做Zipf定律。而且往往这种分布符合长尾理论,也即n2/n1
要比n3/n2
小,以此类推。
回到上面的式子中,n(r+1)
是小于nr
的,所以r*
等于r+1
乘以了一个小于1的数,这样一般情况下r*
是小于r
的,用r*
替代r
,代入r*nr/N
中计算,可以发现其概率减小了。
而且,其实词在训练语料中的出现次数越少,依照训练语料对其概率进行估计的结果就越不可信,而越是不可信的,其概率就越应该被折扣。所以往往我们定一个阈值,出现次数大于这个阈值的,仍然用原来的r
来表示其出现次数,概率不变;只对出现次数低于这个阈值的词,频率才下调,下调得到的频率总和给未出现的词。
这样,对于频率超过一定阈值的词,它们的概率估计就是它们在语料中的出现的相对频度,对于频率小于这个阈值的词,它们的概率估计就小于它们的相对频度,出现次数越少的,折扣越多(因为n2/n1
要比n3/n2
小,所以r
越小,r*
就比r
小的越多,所以算出来的概率也就小的更多)。对于未看见的词,也给予了一个比较小的概率,这样所有词的概率估计都很平滑了。
而且这样估计了,求和之后就会发现,总概率仍然等于1。
古德-图灵估计法是种经典的平滑方法,但仍然存在很多的不足,比如,我们为没出现的词平均分配了概率。需要明确的一点是,前面提到过,这里的『词』并不都指真正意义上的词,举个例子,在二元语法中,a b
是一个基元,是一个『词』,我们发现a b
不存在,所以我们用古德-图灵估计法为所有不存在的基元平均的赋予概率,比如赋予了同样没出现过的a b
和c d
同样的概率。但是我们考虑一个问题,如果a b
和c d
都没出现过,但要是a
、b
都出现过呢,如果a
、b
的出现概率都很高,只是a b
没有出现过而已,但对于c
和d
,不仅c d
,c
和d
也根本都没有出现过,那么a b
和c d
应该被赋予相同的出现概率吗?显然不该,平滑二元文法模型时应该考虑到一元文法模型,根据低阶的语法模型分配由于减值而节省下来的剩余概率给未见事件,要比将剩余概率平均分配给未见事件要合理的多。这就是Katz平滑方法的思想。
其实还有不足,比如『San Francisco』这个词中的『Francisco』,它作为一元模型时出现的次数是非常多,但是它只会跟在『San』后面,如果我们根据上一段的思想,因为它的一元模型出现次数很多,就在平滑时为『Francisco』和别的词的搭配赋予了更高的概率,这显然也是不对的。所以使用的一元文法的概率不应该单纯和它的出现次数有关,而是与它前面的不同单词的数目成正比。这就是Kneser-Ney平滑方法的思想。
平滑的方法还有很多,当前平滑效果最好的方法就是在Kneser-Ney平滑方法上经过修正得到的。
概率图模型
概述
这部分将会讲到贝叶斯网络、马尔可夫模型、隐马尔可夫模型、层次化的隐马尔可夫模型、马尔可夫网络、最大熵模型、最大熵马尔可夫模型和条件随机场,可以说这一章是书名中『统计』两个字的核心。
动态贝叶斯网络用于处理随时间变化的动态系统中的推断和预测问题。其中,隐马尔可夫模型(hidden Markov model,HMM)在语音识别、汉语自动分词与词性标注和统计机器翻译等若干语音语言处理任务中得到了广泛应用;卡尔曼滤波器则在信号处理领域有广泛的用途。马尔可夫网络又称马尔可夫随机场(MRF),马尔可夫网络下的条件随机场(CRF)广泛应用于自然语言处理中的序列标注、特征选择、机器翻译等任务,玻尔兹曼机近年来被用于依存句法分析和语义角色标注。