自然语言处理之N-Gram模型

自然语言处理之N-Gram模型

1.什么是语言模型
语言模型就是这样一个模型:对于任意的词序列,它能够计算出这个序列是一句话的概率。或者说语言模型能预测单词序列的下一个词是什么。
2. 什么是N-Gram模型
N-Gram是一种基于统计语言模型的算法。其基本思想是将文本里面的内容按照字节及逆行大小为N的滑动窗口曹祖,形成了长度为N的字节片段序列。每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。
这个模型就是基于一种这样的假设,第N个词的出现只与前面N-1个词有关,整句话出现的概率就是各个概率的乘积,这些概率可以通过直接从语料中统计N个词同时出现的次数得到。
3.N-Gram模型推导讲解
如果我们有一个由 m 个词组成的序列(或者说一个句子),我们希望算得概率p(w1,w2,…w3),根据链式规则,可得:
自然语言处理之N-Gram模型
这样的话,这个概率值不是很好算,我们可以利用马尔科夫链的假设,也就是当前这个词仅仅与前面的有限个词有关,这样一来就大大降低了计算难度,提高效率。也就是如下的公式。
自然语言处理之N-Gram模型
下面给出一元模型,二元模型,三元模型的定义:
当n=1时,也就是一个一元模型(unigram model)即为:
自然语言处理之N-Gram模型
当 n=2, 一个二元模型(bigram model)即为 :
自然语言处理之N-Gram模型
当 n=3, 一个三元模型(trigram model)即为:
自然语言处理之N-Gram模型
接下来就是在给定的训练语料中,利用贝叶斯公式将上述的概率统计计算出来即可。
自然语言处理之N-Gram模型
4.N-Gram中的N值大小对性能的影响
n更大的时候
n: 对下一个词出现的约束性信息更多,更大的辨别力,但是更稀疏,并且n-gram的总数也更多,为 [公式] 个(V为词汇表的大小)
n更小的时候
在训练语料库中出现的次数更多,更可靠的统计结果,更高的可靠性 ,但是约束信息更少
其中当N为特定值的时候,我们来看一下n-gram可能的总数,如下表:
自然语言处理之N-Gram模型
对于上图,我用一个例子来进行解释,加入目前词汇表中就只有三个单词,”我爱你“,那么bigram的总数是3^2=9个,有”我我“,我爱,我你,爱爱,爱你,爱我,你你,你我,你爱等这9个。

文章参考:https://zhuanlan.zhihu.com/p/32829048