Good-turning估计

在学习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{\theta }\left ( r \right )=\frac{1}{N}\left (r+1 \right )\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{\theta }\left ( r \right )N_r=1 \]

证明

\[\sum_{r}^{ }\hat{\theta }\left ( r \right )N_r=\frac{1}{N}\sum_{r}^{ }\left (r+1 \right )\frac{N_{r+1}}{N_r}N_r=\frac{1}{N}\sum_{r}^{ }\left (r+1 \right )N_{r+1} \]

我们知道

\[\sum_{r}^{ }\left (r+1 \right )N_{r+1}=\sum_{r}^{ }rN_r \]

另外

\[\frac{1}{N}\sum_{r}^{ }rN_r=\frac{N}{N}=1 \]

\[\sum_{r}^{ }\hat{\theta }\left ( r \right )N_r=\frac{1}{N}\sum_{r}^{ }\left (r+1 \right )N_{r+1}=\frac{1}{N}\sum_{r}^{ }rN_r=1 \]

故上述证明说明了Good-turning估计的正确性

参考文章:

Good-turning估计

srilm语言模型中的平滑算法——Good-Turing平滑算法

posted @ 2020-07-15 23:02  yhzhou  阅读(759)  评论(0编辑  收藏  举报