概率模型
N-gram就是一个简化的概率模型,所以我们先从未简化的概率模型入手。
从统计语言模型的角度讲,判断一个句子是否合理,就是看它的可能性大小如何。
对于一个句子S,假设它是由词汇 [w1, w2,…,wn] 组成,对于 S 语句是否合理,就是看S出现的可能性大小,也就是数学上S出现的概率P(S)。
P(S) = P(w1, w2, …, wn)
由条件概率可知,上式可以写为如下表达:
P(S) = p(w1)p(w2|w1)p(w3|w2,w1)…p(wn|w1,w2,…,wn-1)
这就是模型的计算式,对于第一项p(w1)的计算很简单,第二项的计算也不难,第三项的计算就比较复杂了,涉及到 3 个变量,每个变量的可能性(可能取的值)是整个语料库的大小,所以,式子越往后,计算越复杂。而且这仅仅是一个句子。对于一个新句子,又得重新统计。
模型简化
为了解决这个问题,俄国数学家马尔可夫提出一种方法:假设一个词汇只依赖于前一个词汇,而不是依赖于前面所有的词汇,按照这种假设,计算就很简单了,实际上这被称为马尔可夫假设。那么上面的条件概率式子可以简化为下式:
P(S) = p(w1)p(w2 | w1)p(w3 | w2)…p(wn | wn-1)
我们取其中一个条件概率项具体计算一下:
p(wi | wi-1) = p(wi, wi-1) / p(wi-1)
p(wi, wi-1)的计算:统计词汇 wi 和 wi-1 在文本中相邻出现的次数 num(wi, wi-1),设文本中