NLP中数据稀疏问题的解决——数据平滑

 转载自: https://www.cnblogs.com/yiyi-xuechen/p/3561769.html

 在上一篇N-gram模型中提到稀疏问题,即某些在文本中通常很少出现的词,在某一局部文本中突然大量地出现,本篇主要讨论它的解决办法--数据平滑(data smoothing)。

问题描述

  N-gram存在问题,训练语料毕竟是有限的,这样导致很多事件,如trigram中,w1 w2 w3根本没有出现过。根据最大似然估计,这些事件的概率为零。然而这些事件的真实概率并不一定为零。这个问题被成为数据稀疏问题。

  -- MLE给训练样本中未观察到的事件赋以0概率。

  -- 若某n-gram在训练语料中没有出现,则该n-gram的概率必定是0

  -- 解决的办法是扩大训练语料的规模。但是无论怎样扩大训练语料,都不可能保证所有的词在训练语料中均出现。

  -- 由于训练样本不足而导致所估计的分布不可靠的问题,称为数据稀疏问题。

  -- 在NLP领域中,数据稀疏问题永远存在,不太可能有一个足够大的训练语料,因为语言中的大部分词都属于低频词。

  Zipf 定律

  (1)告诉我们语言中只有很少的常用词,语言中大部分词都是低频词(不常用的词)

  (2)解释是Principle of Least effort(讲话的人和听话的人都想省力的平衡);说话人只想使用少量的常用词进行交流;听话人只想使用没有歧义的词(量大低频)进行交流

  (3)对于语言中的大多数词,它们在语料中的出现是稀疏的.只有少量词语料库可以提供它们规律的可靠样本。

定义

  把在训练样本中出现多的事件的概率适当减小,把减小得到的概率密度分配给训练语料中没有出现过的事件。这个过程有时也称为减值(Discounting)。

--减值法

  修改训练样本中的事件的实际计数,是样本中不同时间的概率之和小于1,剩余的概率量分配给未见概率。

--调整方法:最大似然规则

  (1)他可保证模型中任何概率均不为0

  (2)数据平滑使模型参数概率分布趋向于更加均匀。低概率(包括0概率)被调高,高概率被调低。

--数据平滑技术

  (1)加法平滑

  Add-one

  1.每一种情况出现的次数加1

  2.规定任何一个n-gram在训练语料至少出现一次(即规定没有出现过的n-gram在训练语料中出现了一次),则: new_count(n-gram) = old_count(n-gram) + 1

  3.没有出现过的n-gram的概率不再是0

  例如,对于uni-gram,设w1, w2, w3 三个词,概率分别为:1/3, 0, 2/3,加1后情况?

         2/6, 1/6, 3/6

  Add-delta平滑

  Lidstone不是加1,而是加一个小于1的正数  ,  通常= 0.5,此时又称为Jeffreys-Perks LawELE 效果比Add-one好,但是仍然不理想

  (2)Good-turning平滑

  基本思想:利用高频率n-gram的频率调整低频的n-gram的频率。

  具体操作:假设是样本数据的大小, nr是在N元模型的训练集中正好出现次的事件的数目(在这里,事件为N元对 ),nr表示有多少个N元对出现了r

  Good-Turing估计适合单词量大并具有大量的观察数据的情况下使用,在观察数据不足的情况下,本身出现次数就是不可靠的,利用它来估计出现次数就更不可靠了。缺乏利用低元模型对高元模型进行线性插值的思想。

  (3)Backing-off平滑

  (4)Jelinek-mercer平滑

  线性插值平滑(Linear Interpolation Smoothing)方法通常也被称作Jelinek-Mercer 平滑。Jelinek Mercer 1980 年首先提出了这种数据平滑算法的思想,Brown 1992 年给出了线性插值的平滑公式:

 

  该参数平滑技术的基本思想是利用低元n-gram 模型对高元n-gram 模型进行线性插值。用降元的方法来弥补高元的数据稀疏问题,数据估计有一定的可靠性。但是参数估计较困难。

  (5)Katz平滑

  (6)Church-gale平滑

 

posted @ 2021-03-31 17:50  _starsky  阅读(1885)  评论(0编辑  收藏  举报