在学习NLP过程中,遇到了Good-turning的介绍,网上找了相关的资料查看,总结如下。
思想:
其主要思想是从概率的总量中分配少量的比例给零概率项。
思路:
假定给定的语料库中出现 (r)次数的词有(N_r)个,则有
[N = sum_{i=1}^{infty }rN_r
]
当(r)较小时,我们使用(d_r)代替(r),这里(d_r < r),(d_r)的值可有下式表示
[d_r = ( r+1 )N_{r+1}/N_r
]
其期望可以表示为
[hat{ heta }left ( r
ight )=frac{1}{N}left (r+1
ight )frac{N_{r+1}}{N_r}
]
其中(N)为现有语料库中所有单词频数的总和,这样可以保证
[N = sum_{r}^{ }d_rN_r
]
一般情况下,发生次数为(r)的词个数大于发生次数为(r+1)的词个数,(r)越大,词的数量(N_r)越小。通过Good-turning smooth可以让数据稀疏度有效的降低,所有词的概率估计会看起来很平滑。
证明:
要证明上述假设的正确性,只需要证明期望和为1即可,即
[sum_{r}^{ }hat{ heta }left ( r
ight )N_r=1
]
证明
[sum_{r}^{ }hat{ heta }left ( r
ight )N_r=frac{1}{N}sum_{r}^{ }left (r+1
ight )frac{N_{r+1}}{N_r}N_r=frac{1}{N}sum_{r}^{ }left (r+1
ight )N_{r+1}
]
我们知道
[sum_{r}^{ }left (r+1
ight )N_{r+1}=sum_{r}^{ }rN_r
]
另外
[frac{1}{N}sum_{r}^{ }rN_r=frac{N}{N}=1
]
则
[sum_{r}^{ }hat{ heta }left ( r
ight )N_r=frac{1}{N}sum_{r}^{ }left (r+1
ight )N_{r+1}=frac{1}{N}sum_{r}^{ }rN_r=1
]
故上述证明说明了Good-turning估计的正确性