zoukankan      html  css  js  c++  java
  • 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{ 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估计的正确性

    参考文章:

    Good-turning估计

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

  • 相关阅读:
    sqlite
    c++primer
    c++ std find_last_of
    c语言
    boost serialization
    ssh autologin
    c/c++文件相关
    AndroidTreeView等例子
    and
    解决Gradle 依赖下载慢以及android开发释放c盘空间及android虚拟机访问网络--以及访问本机
  • 原文地址:https://www.cnblogs.com/yhzhou/p/13308734.html
Copyright © 2011-2022 走看看