1、N-gram存在的问题

N-gram作为统计语言模型的重要部分,是学习统计自然语言的重要基石,了解N-gram十分重要。N-gram会因为数据稀疏而导致效果变差,也就是某些n元组在训练样本中未出现,则其样本概率为0,这是一个很差的概率估计,会导致模型估计效果变差,可以通过数据平滑来解决数据稀疏问题。

2、平滑算法

2.1 加法平滑

2.1.1 Laplace平滑

通过给每个n元组都加1,实现将一小部分概率转移到未知事件上,公式如下:
数据挖掘什么是平滑 平滑算法_自然语言处理
其中,数据挖掘什么是平滑 平滑算法_数据挖掘什么是平滑_02为总样本数,数据挖掘什么是平滑 平滑算法_数据挖掘什么是平滑_03数据挖掘什么是平滑 平滑算法_自然语言处理_04元组的总数。这样做其实是假设每个数据挖掘什么是平滑 平滑算法_自然语言处理_04元组都存在相同的先验概率。但是对于一个大词表的稀疏数据集,Laplace平滑就会将太多的概率转移到了未知事件上。

2.1.2 Lidstone平滑

针对Laplace平滑存在的过估计问题,Lidstone不加1,而加一个通常较小的正值数据挖掘什么是平滑 平滑算法_自然语言处理_06
数据挖掘什么是平滑 平滑算法_机器学习_07
它可以看作是在MLE估计和统一的先验概率之间的线性插值,这样可以解决太多的概率空间被转移到未知时间上的缺点。但是这种方法依然存在着两个缺点:1)需要预先猜测一个合适的数据挖掘什么是平滑 平滑算法_自然语言处理_06;2)使用Lidstone法则的折扣总是在MLE频率上给出一个线性的概率估计,但是这和低频情况下的经验分布不能很好地吻合。

2.2 Good-Turing估计

Good-Turing估计是很多平滑技术的核心,于1953年古德(I.J.Good)引用图灵(Turing)的方法而提出来的。其基本思想是:利用频率的类别信息来平滑频率。对于任何出现 数据挖掘什么是平滑 平滑算法_机器学习_09 次的数据挖掘什么是平滑 平滑算法_自然语言处理_04元组,都假设它出现了 数据挖掘什么是平滑 平滑算法_算法_11 次。
数据挖掘什么是平滑 平滑算法_人工智能_12
其中,数据挖掘什么是平滑 平滑算法_自然语言处理_13是训练语料中正好出现数据挖掘什么是平滑 平滑算法_机器学习_09次的数据挖掘什么是平滑 平滑算法_自然语言处理_04元组的个数,也就是说,发生数据挖掘什么是平滑 平滑算法_机器学习_09次的数据挖掘什么是平滑 平滑算法_自然语言处理_04元组的调整由发生数据挖掘什么是平滑 平滑算法_机器学习_09次的数据挖掘什么是平滑 平滑算法_自然语言处理_04元组与发生数据挖掘什么是平滑 平滑算法_机器学习_20次的数据挖掘什么是平滑 平滑算法_自然语言处理_04元组两个类别共同决定。假设m-gram的数据挖掘什么是平滑 平滑算法_数据挖掘什么是平滑_22出现了数据挖掘什么是平滑 平滑算法_机器学习_23次,Good_Turing给出其出现的概率为:
数据挖掘什么是平滑 平滑算法_自然语言处理_24
那么对于数据挖掘什么是平滑 平滑算法_机器学习_25(训练样本中未出现)的样本有:
数据挖掘什么是平滑 平滑算法_数据挖掘什么是平滑_26
因此仍然有数据挖掘什么是平滑 平滑算法_人工智能_27的概率余量分配给未出现的元组。

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的插值:
数据挖掘什么是平滑 平滑算法_自然语言处理_28
bigram的插值:
数据挖掘什么是平滑 平滑算法_数据挖掘什么是平滑_29