Good‐Turing Discounting浅析 2019-04-26

Discounting类包括:

Add-One Smoothing(加法平滑)

Good-Turing Discounting(图灵平滑)

加法平滑太简单就不说了。

图灵平滑。看了 统计自然语言处理 和 数学之美 对这部分的解析。


先看个例子:

训练集合:T={what is it what is small?}|T|=8

验证集合:V={what is it small ? flying birds are a bird.}, |V|=12

在训练集合上,我们得到:p()=p(it)=p(small)=p(?)=0.125, p(what)=p(is)=0.25,其他为0

如果不经过平滑处理,则验证集上两句子的概率分别为:

p(what is it?)=(0.25*2)*(0.125*2)≈0.001  

p(it is flying.)=0.125*0.25*(0*2)=0

但是实际上it is flying是有可能出现的。现在用古德-图灵算法进行平滑处理,如下:

首先计算,各发生 r 次 N 元组类别的数目,依次为N(0)=6,N(1)=4,N(2)=2,N(i)=0 ,i>2:

其次,重新估计各概率值。

对于发生0次的事件概率:

Pr(.)=p(flying)=p(birds)=p(are)=p(bird)=p(a)=(0+1)*N(0+1)/(8*N(0))=1*4/(8*6)≈0.083  

对于发生1次的时间概率:Pr(it)=p()=p(small)=p(?)=(1+1)*N(1+1)/(8*N(1))=2*2/(8*4)=0.125 

对于发生两次的时间概率:Pr(what)=Pr(is)=(2+1)*N(2+1)/(8*N(2))=3*0/(8*2)=0: 保持原值0.25

注意计算时候最高次的P的公式里面有,但是已经是最高次了这个值一定是零,那个最高位保持他原有的概率就可以了。

归一化处理,6*+4*+2*=1.5。这里的

所以,归一化处理后:

发生1次的时间概率:p’(it)=p’()=p’(small)=p’(?)=0.125/1.5 ≈0.08   (原概率0.125)  -0.045

发生2次的时间概率:p’(what)=p’(is)= 0.25/1.5 ≈ 0.17   (原概率0.25) -0.08

发生0次的时间概率:p’(.)=p’(birds)=p’(are)=p’(bird)=p’(a) = 0.083/1.5  ≈0.06(原概率是0)

因此:

p’(what is it?)=(0175*2)*(0.08*2) ≈ 0.0002  [原 p(what is it?)=(0.25*2)*(0.125*2)≈ 0.001]

p’(it is flying.) ≈ 0.08*0.17*(0.06*2)≈ 0.00004  [ 原 p(it is flying.)=0.125*0.25*(0*2)=0 ]

大概就是这么个情况。


下面开始看原理:

比如一个text文本

1 今天 天气 不错

2 北京 今天 堵车

3 今天 天气 很棒

4 今天 天气 还好

5 今天 天气 很棒 

6 你好 你好

7 你好 先生

8  你好 图灵

9  你好 小姐

10  你好 宝宝

11 .... ....

出现r次的n元语法的数目,一共有个。

其中三元语法有5次,二元语法有5次。  这样的5次一共有

不管几元语法,只考虑这个语法的出现次数r,剪掉的也是这个次数。

总词数 从出现0次的语法到出现最大次数的语法的总和就是总词数。

 原始=,现在是,剪掉的部分是。剪掉的部分次数给了出现零次的增加次数。

5-A的公式可以看到如果是正常计算的话,现在用

现在的概率如果不算r=0的部分的(r>0)话概率是

是匀给出现r=0的总次数、剩余量。的计算就是用到了(5-10)得出的。


END

你可能感兴趣的:(Good‐Turing Discounting浅析 2019-04-26)