n-gram语言模型及平滑算法

一、n-gram模型概念

n-gram模型也称为n-1阶马尔科夫模型,它有一个有限历史假设:当前词的出现概率仅仅与前面n-1个词相关,可以表示为:

                       

    当n取1、2、3时,n-gram模型分别称为unigram、bigram和trigram语言模型。n-gram模型的参数就是条件概率P(Wi|Wi-n+1,...,Wi-1)。假设词表的大小为100,000,那么n-gram模型的参数数量为100,000n。n越大,模型越准确,也越复杂,需要的计算量越大。最常用的是bigram,其次是unigram和trigram,n取≥4的情况较少。

二、n-gram模型的参数估计

模型的参数估计也称为模型的训练,n-gram模型的参数的估计表达式如下:

一般采用最大似然估计(Maximum Likelihood Estimation,MLE)的方法对模型的参数进行估计:

 

举个例子来说明一下,IBM Brown利用366M英语语料训练trigram,结果在测试语料中,有14.7%的trigram和2.2%的bigram在训练中没有出现;根据博士期间所在的实验室统计结果,利用500万字人民日报训练bigram模型,用150万字人民日报作为测试语料,结果有23.12%的bigram没有出现。这种问题也被称为数据稀疏(Data  Sparseness),解决数据稀疏问题可以通过数据平滑(Data Smoothing)技术来解决。

三、平滑算法

数据平滑是对频率为0的n元对进行估计,典型的平滑算法有加法平滑、Good-Turing平滑、Katz平滑、插值平滑等。

3.1 加法平滑

3.1.1  Laplace法则(加1平滑)

扫描二维码关注公众号,回复: 3618581 查看本文章

通过给每个n元组都加1,实现将一小部分概率转移到未知事件上,公式如下:

3.1.2  Lidstone 法则

3.2  Good-Turing估计

3.3 Katz回退算法

3.4. 线性插值

四、arpa文件的各部分参数详解

猜你喜欢

转载自blog.csdn.net/LZH_12345/article/details/82990101