深度学习系列--3.N-gram语言模型

首先,语言模型用于解决什么问题呢?常用的两个场景:

1. 机器翻译、语音识别系统中用于判断一个句子是否合理

假设用户说了这么一句话:“I have a gun”,因为发音的相似,该语音识别系统发现如下几句话都是可能的候选:1、I have a gun. 2、I have a gull. 3、I have a gub. 那么问题来了,到底哪一个是正确答案呢?

这个问题可以转化为,以上三个句子的概率

 

2. 用户输入提示, 如下图

这个问题可以转化为,在输入是“deep learning“的情况下,下一个单词是XXX的概率

 

那么问题来了, 假设一个句子$w_1, w_3, ....w_m$,这个句子的概率$P(w_1, w_2....w_m)$怎么计算呢?

首先根据链式法则:

$$P(w_1, w_2....w_m) = P(w_1)P(w_2|w_1)P(w_3|w_1,w_2)...P(w_m|w_1,..., w_{m-1})$$

第二,利用马尔科夫链的假设,当前词只与前面有限的n个词相关,即

$$P(w_i|w_1,..., w_{i-1}) \approx P(w_i|w_{i-(n-1)},...,w_{i-1})$$ 

 

$n=1$时为Uni-gram,$P(w_3|w_1,..., w_2) \approx P(w_3)$

$n=2$时为Bi-gram,$P(w_3|w_1,..., w_2) \approx P(w_3|w_2)$

$n=3$时为Tri-gram,$P(w_3|w_1,..., w_2) \approx P(w_3|w_1, w_2)$

实际工作中,最多的情况是$n=3$

 

第三,根据大数定理,当语料库够大时,

$$P(w_i|w_{i-(n-1)},...,w_{i-1}) \approx \frac{Count(w_{i-(n-1)},..., w_{i-1}, w_i)}{Count(w_{i-(n-1)},..., w_{i-1})} $$

其中 $Count(w_i, w_{i+1}, ..., w_j)$ 表示语料库中序列$w_i, w_{i+1}, ..., w_j$出现的次数

 

 

假设基于一个语料库,我们统计出如下信息:

    每个单词出现次数

    Bi-gram 次数

$P(want|i) = \frac{Count(i, want)}{Count(i)}=\frac{827}{2533}=0.326$

$P(i|want) = \frac{Count(want, i)}{Count(want)}=\frac{2}{927}=0.00216$

显然,i want比want i更make sence

 

 

可以注意到,上面的Bu-gram 统计表中有些位置为0,这表示当前的语料库中没有这些序列,但并不能说明测试环境中不存在这样的序列

为了避免这种序列概率为0的情况,N-gram 语言模型会加入平滑处理

 

 

参考:

N-gram语言模型简单介绍

自然语言处理中的N-Gram模型详解

转载于:https://www.cnblogs.com/NicoleLiu/p/10726540.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值