平滑
需要平滑原因有二:一,导致0概率,无法计算困惑度;二,对于一些未见过的句子,概率为0。
training set:
denied the reports
Test set:
denied the offer
P(offer| denied the) = 0
加1(拉普拉斯?) 平滑
Maximun Likelihood E stimates: P(Wi|Wi-1) = C(Wi-1, Wi) / C(Wi-1)
加1: P(Wi|Wi-1) = C(Wi-1, Wi) +1 / C(Wi-1) + V
会造成特别大的变化,效果并不是特别好,不适合用于N-grams.
Backoff: 如果没有证据证明trigram效果好,用bigram,unigram
Interpolation: 混合unigram、bigram、trigram. ——效果好些
总结:
加1平滑 适用于文本分类;
Kneser-Ney (Interpolation扩展用的最广;
对于很大的Web数据,用Backoff
Good-Turing
Nc : 出现c次的个数 I-3 am-2 is-2 则:N2=2 N3=1
Good-Turing平滑:
Pgt(things with 0 frequency) = N1/N
C*= (c+1) Nc+1/ Nc
Pgt* = C*/N
但其实,很高的数,并不会直接这么算
可以和interpolation结合,加入unigram。
Kneser-Ney平滑:
更好的估计低概率的unigram。
Good-Turing、Kneser-Ney、Witten-Bell 利用出现过一次的词来估计未曾出现过的词的概率,把概率“分”一些给未曾出现过的,原有的概率会降低。