平滑算法解决的数据的稀疏性的问题
假如,有unigram,bigram,···,Ngram训练数据出现的次数为0。不利于语言模型的计算。
good-turing smoothing就是解决这个问题
Vocab size : 1 0 4 10^4 104
#trigrams: 1 0 12 10^{12} 1012 (所有可能的三元组的概率,一万的四次方)
Data
-
total trigrams 1 0 6 10^6 106
-
Occuring once 7.5 ∗ 1 0 5 7.5*10^5 7.5∗105
-
Occuring twice 2 ∗ 1 0 5 2*10^5 2∗105
-
Occuring three times 9 ∗ 1 0 4 9* 10^4 9∗104
-
Occuring zero time 1 0 12 − 1 0 6 ≈ 1 0 12 10^{12}-10^6≈10^{12} 1012−106≈1012
r ∗ N r = C r − 1 ∗ N r − 1 ⟹ C r − 1 = r ∗ N r N r − 1 \begin{aligned} r*N_r&=C_{r-1}*N_{r-1}\\ \Longrightarrow C_{r-1}&=\frac{r*N_r}{N_{r-1}}\\ \end{aligned} r∗Nr⟹Cr−1=Cr−1∗Nr−1=Nr−1r∗Nr
意味着将本来没有出现的词,加上了一个概率进行平滑处理。出现次数多的次数拿出来放到出现次数少的词上。
2.5.1 Naive Bayes Text Classification
Input : text document d d = w 1 w 2 w 3 . . . w n d = w_1w_2w_3...w_n d=w