一、统计语言模型基本原理
一个句子是否合理,就看它出现的可能性大小如何。至于可能性就用概率来衡量
假设 S 表示某个句子,此句子有一连串按照特定顺序排列的词 w1, w2, ..., wn 组成,其中 n 表示词的个数。现在我们想知道 S 在文本中出现的可能性,用数学表示就是 S 的概率 P(S)。既然 S = w1, w2, w3, ..., wn,不妨把 P(S) 展开表示:
P(S) = p(w1, w2, w3, ..., wn)
(3.1)
= p(w1) * p(w2 / w1) * p(w3 / w1, w2) * ... * p(wn / w1, w2, ..., wn-1)
(3.2)
其中,p(wi) 表示 wi 在文本中出现的概率,p(wi / wi-1) 表示在已经 wi-1 出现的条件下,wi 紧跟着出现的概率。
从计算上来看,第一个词的概率 p(w1) 很容易计算,第二个词的条件概率 p(w2 / w1) 计算也不算太麻烦,第三个词的条件概率 p(w3 / w1, w2) 计算已经很难了,因为三个词任意组合太多了,到了最后一个词 wn 的条件概率 p(wn / w1, w2, ..., wn-1) 的可能性太多,无法估算。
为了解决这个问题,俄罗斯的数学家马尔科夫做了一个假设,假设任意一个词 wi 出现的概率只和它前面的词 wi-1 有关。于是,问题就变得很简单了,现在 S 出现的概率为:
P(S) = p(w1) * p(w2 / w1) * p(w3 / w2) * ... * p(wn / wn-1)
(3.3)
公式 3.3 对应的统计语言模型是二元模型 (bigram model).
接下来就是如何估计条件概率 p(wi / wi-1),根据它的定义: