Good-Turing smoothing
原文链接
Good-Turing基本思想是:用观察计数较高的N元语法数重新估计概率量的大小,并把它指派给那些具有零计数或者较低计数的N元语法。
公式:
c ∗ = ( c + 1 ) N c + 1 N c c^* = \frac{(c+1)N_{c+1}}{N_c} c∗=Nc(c+1)Nc+1
其中c为某个N-gram出现的频数, N c N_c Nc为出现次数为c的N-Gram的词组的个数, c ∗ 为 G o o d − T u r i n g 平 滑 计 数 c^*为Good-Turing平滑计数 c∗为Good−Turing平滑计数
例子:
对于a = [A,A,A,B,B,C,D,E] sum(len(a)) = 7
c A = 3 c_A = 3 cA=3 c C = 2 c_C = 2 cC=2
c B = c D = c E = 1 c_B = c_D = c_E = 1 cB=cD=cE=1
N 1 N_1 N1=4 N 2 N_2 N2=1 N 3 = 1 N_3=1 N3=1
thus
c A ∗ = 4 ∗ 0 3 = 0 c^*_A = 4*\frac{0}{3} = 0 cA∗=4∗30=0
c B ∗ = 3 ∗ 1 1 = 3 c^*_B = 3*\frac{1}{1} = 3 cB∗=3∗11=3
c C ∗ = c D ∗ = c E ∗ = 2 ∗ 1 4 = 1 2 c^*_C = c^*_D = c^*_E = 2*\frac{1}{4} = \frac{1}{2} cC∗=cD∗=cE∗=2∗41=21
(注意在他们求概率的时候都需要除以N = 7)
然而这样会导致最高频率的结果最后的计数为0,解决方法如下
- 可以对于较低的计数使用 P G T P_{GT} PGT,而对于较高的计数直接使用 P M L E = c N P_{MLE} = \frac{c}{N}