須要平滑緣由有二:一,致使0機率,沒法計算困惑度;二,對於一些未見過的句子,機率爲0。it
training set:
denied the reports
Test set:
denied the offer
P(offer| denied the) = 0io
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) + Vim
會形成特別大的變化,效果並非特別好,不適合用於N-grams.總結
總結:
加1平滑 適用於文本分類;
Kneser-Ney (Interpolation擴展用的最廣;
對於很大的Web數據,用Backoff數據
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。
更好的估計低機率的unigram。Good-Turing、Kneser-Ney、Witten-Bell 利用出現過一次的詞來估計不曾出現過的詞的機率,把機率「分」一些給不曾出現過的,原有的機率會下降。