N-gram 模型

                                          N-gram 模型

语言模型: 定义了自然语言中标记序列的概率分布,通俗一点考虑就是说,一个句子是自然语句的概率。

举例说明:

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

一般的解决方法是采用统计的方法。即比较上面的1、2和3这三句话哪一句在英语中出现的概率最高,哪句概率最高就把哪句返回给用户。那么如何计算一个句子出现的概率呢?说白了就是“数数”的方法。但是即使是“数数”也有很多种数法,其中,最简单的策略如下:

给定一个语料库,数出其中所有的长度为4的句子的个数,设为N,然后再看在这N个长度为4的句子中,“I have a gun”出现了多少次,不妨设为N0,那么句子“I have a gun”的概率就是N0/N。其它两个句子的概率也这么计算。

上述的这种数数方法,从逻辑上讲是完全OK的,但是因为自然语言的灵活多变性,以及语料库的规模总是有限的,对于一个稍长一点的句子,很可能语料库中根本就没有。比如说下面这个句子:“I am looking for a restaurant to eat breakfast”,直观上看,这句话在语料库中应该出现次数很多吧?但是如果把这句话输入到Google的搜索框中,点击搜索,你会发现返回的结果中根本就没有完全匹配上的。所以,我们需要提出更加有效的“数数”方法。

 

n-gram 模型定义: 一个条件概率--给定前n-1个标记后的第n个标记的条件概率。该模型利用这些条件概率分布的乘积定义较长序列的概率分布。

公式表达:

                              P(w1,w2,⋯,wm)=P(w1)P(w2|w1)P(w3|w1,w2)⋯P(wm|w1,⋯,wm−1)

典型例子:

 

特别地,对于 n 取得较小值的情况 
当 n=1, 一个一元模型(unigram model)即为 

 

P(w1,w2,⋯,wm)=∏ P(wi)


当 n=2, 一个二元模型(bigram model)即为 

P(w1,w2,⋯,wm)=∏   P(wi|wi−1)


当 n=3, 一个三元模型(trigram model)即为 

P(w1,w2,⋯,wm)=∏ P(wi|wi−2,wi−1)


接下来的思路就比较明确了,可以利用最大似然法来求出一组参数,使得训练样本的概率取得最大值。

 

  • 对于unigram model而言,其中c(w1,..,wn)c(w1,..,wn) 表示 n-gram w1,..,wnw1,..,wn 在训练语料中出现的次数,MM 是语料库中的总字数(例如对于 yes no no no yes 而言,M=5M=5) 

    P(wi)=C(wi)MP(wi)=C(wi)M

  • 对于bigram model而言, 

    P(wi|wi−1)=C(wi−1wi)C(wi−1)P(wi|wi−1)=C(wi−1wi)C(wi−1)

  • 对于nn-gram model而言, 

    P(wi|wi−n−1,⋯,wi−1)=C(wi−n−1,⋯,wi)C(wi−n−1,⋯,wi−1)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值