语言模型

语言模型

统计语言模型

一个语言模型通常构建为字符串s的概率分布p(s),这里的p(s)实际上反应的是s作为一个句子出现的概率。这里的概率指的是组成字符串的这个组合的概率或是在训练语料中出现的似然,与句子是否合乎语法无关。
对于一个由T个词按顺序构成的句子
在这里插入图片描述
p(s)实际上求解的是字符串s的联合概率,利用贝叶斯公式,链式分解如下:
在这里插入图片描述
从上式中可以看到,一个统计语言模型可以表示为,给定前面的词,求后面一个词出现的条件概率。
上述其实就是一个建立的模型,这里的p(*)就是模型的参数,如果这些参数已经求解得到,那么很容易就能够得到字符串s的概率。

求解的问题示例

假定字符串s为“I want to drink some water”,那么根据上面所建立的模型,可以得到
在这里插入图片描述
问题归结为如何求解上面的每一个概率,比如p(drink | I want to)。一种比较直观的方法就是分别计算出"I want to"和"I want to drink" 在语料中出现的频次
在这里插入图片描述
这里存在两个问题:
1.假定字符串中字符全部来自于大小为V的词典,上述例子中需要计算所有的条件概率,对于所有的条件概率,这里的w都有V种取值,那么实际上这个模型的自由参数数目量级是V的N次方,N为字符串的长度。
从上面可以看出,模型的自由参数是随着字符串长度的增加而指数级暴增的,这使我们几乎不可能正确的估计出这些参数。
2.数据稀疏性:
从上面可以看到,每一个w都具有V种取值,这样构造出了非常多的词对,但实际中训练语料是不会出现这么多种组合的,那么依据最大似然估计,最终得到的概率实际是很可能是0。

N-gram语言模型

为了解决自由参数数目过多的问题,引入了马尔科夫假设:随意一个词出现的概率只与它前面出现的有限的n个词有关。基于上述假设的统计语言模型被称为N-gram语言模型。
通常情况下,n的取值不能够太大,否则自由参数过多的问题依旧存在:

  • n=1时
    即一个词的出现与它周围的词是独立,这种称为unigram,也就是一元语言模型,此时自由参数量级是词典大小V。
  • n=2时
    当n=2时,即一个词的出现仅与它前面的一个词有关时,这种称为bigram,叫二元语言模型,也叫一阶马尔科夫链,此时自由参数数量级是V的2次方。
  • n=3时
    即一个词的出现仅与它前面的两个词有关,称为trigram,叫三元语言模型,也叫二阶马尔科夫链,此时自由参数数量级是V的3次方。
    从模型的效果来看,理论上n的取值越大,效果越好。但随着n取值的增加,效果提升的幅度是在下降的。同时还涉及到一个可靠性和可区别性的问题,参数越多,可区别性越好,但同时单个参数的实例变少从而降低了可靠性。
    N-gram语言模型的求解跟传统统计语言模型一致,都是求解每一个条件概率的值,简单计算N元语法在语料中出现的频率,然后归一化。

平滑化

在传统统计语言模型提出了两个问题:自由参数数目和数据稀疏,上述N-gram只是解决了第一个问题,而平滑化就是为了解决第二个问题。
最基本的方法就是每个量都加1平滑,即拉普拉斯平滑。当然平滑化还有许多方法,比如,加法平滑,Good-Turing平滑,以及K平滑。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值