如何计算给定一个unigram语言模型_自然语言处理专栏——语言模型(一)

简介

语言模型:简单地说,语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否合理的概率。

应用:机器翻译,问答系统,语音识别,分词,输入法,搜索引擎的自动补全等也都应用到了语言模型。

语言模型建立

对于一个由T个词按顺序构成的句子:

a35be32db02bd59859e6a2819c48d68f.png

p(s)实际上求解的是字符串的联合概率,利用贝叶斯公式,链式分解如下:

30f33cbbdc66f4a7627c9f89f10c5492.png

从上面可以看到,一个统计语言模型可以表示成,给定前面的的词,求后面一个词出现的条件概率。

我们在求p(s)时实际上就已经建立了一个模型,这里的p(*)就是模型的参数,如果这些参数已经求解得到,那么很容易就能够得到字符串s的概率。

求解问题

695c2a608fad886d5c828902546cd62f.png

(1)自由参数数目:

假定字符串中字符全部来自于大小为V的词典,上述例子中我们需要计算所有的条件概率,对于所有的条件概率,这里的w都有V种取值,那么实际上这个模型的自由参数数目量级是V^6,6为字符串的长度。

从上面可以看出,模型的自由参数是随着字符串长度的增加而指数级暴增的,这使我们几乎不可能正确的估计出这些参数。

(2)数据稀疏性:

从上面可以看到,每一个w都具有V种取值,这样构造出了非常多的词对,但实际中训练语料是不会出现这么多种组合的,那么依据最大似然估计,最终得到的概率实际是很可能是0。

解决方法

基于统计的语言模型- N-gram语言模型

基于神经网络的语言模型:DNN/RNN/LSTM

N-gram语言模型

马尔科夫假设:

马尔科夫假设是指,每个词出现的概率只跟它前面的少数几个词有关。比如,二阶马尔科夫假设只考虑前面两个词,相应的语言模型是三元模型。引入了马尔科夫假设的语言模型,也可以叫做马尔科夫模型。

马尔可夫链(Markov chain)为状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。

也就是说,应用了这个假设表明了当前这个词仅仅跟前面几个有限的词相关,因此也就不必追溯到最开始的那个词,这样便可以大幅缩减上述算式的长度。即式子变成了这样:

76ab7b76f2333bd0bceb2842d88be6f6.png

确定m的取值:

通常情况下,m的取值不能够太大,否则自由参数过多的问题依旧存在:

(1)当m=1时,即一个词的出现与它周围的词是独立,这种我们称为unigram,也就是一元语言模型,此时自由参数量级是词典大小V。

(2)当m=2时,即一个词的出现仅与它前面的一个词有关时,这种我们称为bigram,叫二元语言模型,也叫一阶马尔科夫链,此时自由参数数量级是V^2。

(3)当m=3时,即一个词的出现仅与它前面的两个词有关,称为trigram,叫三元语言模型,也叫二阶马尔科夫链,此时自由参数数量级是V^3。

一般情况下只使用上述取值,因为从上面可以看出,自由参数的数量级是n取值的指数倍。

从模型的效果来看,理论上m的取值越大,效果越好。但随着m取值的增加,效果提升的幅度是在下降的。同时还涉及到一个可靠性和可区别性的问题,参数越多,可区别性越好,但同时单个参数的实例变少从而降低了可靠性。

N-gram语言模型的求解跟传统统计语言模型一致,都是求解每一个条件概率的值,简单计算N元语法在语料中出现的频率,然后归一化。

平滑化:

我们在传统统计语言模型提出了两个问题:自由参数数目和数据稀疏,上述N-gram只是解决了第一个问题,而平滑化就是为了解决第二个问题。

假设有一个词组在训练语料中没有出现过,那么它的频次就为0,但实际上能不能认为它出现的概率为0呢?显然不可以,我们无法保证训练语料的完备性。那么,解决的方法是什么?如果我们默认每一个词组都出现1次呢,无论词组出现的频次是多少,都往上加1,这就能够解决概率为0的问题了。

上述的方法就是加1平滑,也称为拉普拉斯平滑。平滑化还有许多方法,这里就不展开介绍了:

(1)加法平滑

(2)古德-图灵平滑

(3)K平滑

待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值