n-gram模型中的平滑方法

当使用n-gram模型对测试语料中的句子进行评估时,如果句子中包含在训练集中未出现的n元语法,则计算出来句子出现的概率为0。例如上一篇博客语言模型和n元语法中的例子,此时用该模型来计算下面句子的概率:

因此,必须分配给所有可能出现的字符串一个非零的概率值来避免这种错误的发生。 平滑技术(smoothing)就是用来解决此类问题,基本思想是“劫富济贫",即提高低概率,降低高概率。常见的有加1法(additive smoothing)、减值法/折扣法(discounting)和插值法。

  • 加1法(additive smoothing)

         这是最简单直观的一种平滑算法,假设每个n元语法出现的次数比实际出现(训练集)的次数多一次。如下面式子,,此时取1,也有部分学者认为加1效果并不好,这个就得看实际情况了。

这种方法虽然直观的解决了零概率的问题,但是存在下面几个问题:

1、由于训练语料中未出现n-gram数量太多,平滑后,所有未出现的n-Gram占据了整个概率分布中的一个很大的比例。

2、认为所有未出现的n-Gram概率相等。

3、对于出现在训练语料中的那些n-Gram,都增加同样的频度值。

这些问题都还值得商榷。

  • 减值法/折扣法(discounting)

         基本思想:修改训练样本中事件的实际计数, 使样本中(实际出现的)不同事件的概率之和小 于1,剩余的概率量分配给未见概率。

1、Good-Turing估计法

2、Back-off(后退/后备)法

3、Absolute discounting(绝对减值法)

  • 插值法

猜你喜欢

转载自blog.csdn.net/Torero_lch/article/details/81667855