在自然语言处理中,经常会遇到要计算单词或者句子在词典或文档中出现的频次,但是会存在某个单词在词典中没有出现的情况,计算时概率为0,为了改善这种情况,人们提出的平滑方法。
1、Add-one Smoothing(Laplace Smoothing)
2、Add-k Smoothing
3、Interpolation
4、Good-Turning Smoothing
以Bigram为例。
在计算某个单词在语料库中的Bigram时,其计算公式为:
MLE为最大似然估计
使用Add-one Smoothing后,计算公式为:
V为词典库的大小。
使用Add-k Smoothing后,计算公式为:
而使用Interpolation方法。核心思路是在计算Trigram概率的同时考虑Unigram,Bigram,Trigram出现的频次。
计算公式为:
对于Good Turning Smoothing
出现C次的单词的个数
对于没有出现过的单词, = 0,使用GT公式:
/
,N1为出现1次的单词个数,N为单词的总个数。
对于出现过的单词 , ,使用GT公式: