1、N-gram存在的问题
N-gram作为统计语言模型的重要部分,是学习统计自然语言的重要基石,了解N-gram十分重要。N-gram会因为数据稀疏而导致效果变差,也就是某些n元组在训练样本中未出现,则其样本概率为0,这是一个很差的概率估计,会导致模型估计效果变差,可以通过数据平滑来解决数据稀疏问题。
2、平滑算法
2.1 加法平滑
2.1.1 Laplace平滑
通过给每个n元组都加1,实现将一小部分概率转移到未知事件上,公式如下:
其中,为总样本数,为元组的总数。这样做其实是假设每个元组都存在相同的先验概率。但是对于一个大词表的稀疏数据集,Laplace平滑就会将太多的概率转移到了未知事件上。
2.1.2 Lidstone平滑
针对Laplace平滑存在的过估计问题,Lidstone不加1,而加一个通常较小的正值:
它可以看作是在MLE估计和统一的先验概率之间的线性插值,这样可以解决太多的概率空间被转移到未知时间上的缺点。但是这种方法依然存在着两个缺点:1)需要预先猜测一个合适的;2)使用Lidstone法则的折扣总是在MLE频率上给出一个线性的概率估计,但是这和低频情况下的经验分布不能很好地吻合。
2.2 Good-Turing估计
Good-Turing估计是很多平滑技术的核心,于1953年古德(I.J.Good)引用图灵(Turing)的方法而提出来的。其基本思想是:利用频率的类别信息来平滑频率。对于任何出现 次的元组,都假设它出现了 次。
其中,是训练语料中正好出现次的元组的个数,也就是说,发生次的元组的调整由发生次的元组与发生次的元组两个类别共同决定。假设m-gram的出现了次,Good_Turing给出其出现的概率为:
那么对于(训练样本中未出现)的样本有:
因此仍然有的概率余量分配给未出现的元组。
2.3 Katz回退
n-gram允许回退(back off)到越来越短的历史上,它的思路就是如果一个n-gram的条件概率为0,则用(n-1)-gram的条件概率取代,如果(n-1)-gram的条件概率依然为0,继续回退,直到1-gram概率,如果1-gram依然为0,就直接忽略掉该词。
2.4 线性插值
unigram的插值:
bigram的插值: