若一个字符串句子由 n n n个词构成:
s = w 1 w 2 . . . w n s=w_1w_2...w_n s=w1w2...wn
那么期概率的计算公式可以表示为:
P ( S ) = P ( w 1 , w 2 , . . . , w n ) P(S)=P(w_1,w_2,...,w_n) P(S)=P(w1,w2,...,wn)
由全概率公式 P ( A B ) = P ( B ∣ A ) P ( A ) P(AB)=P(B|A)P(A) P(AB)=P(B∣A)P(A)可以推广得到:
P ( w 1 , w 2 , . . . , w n ) = P ( w n ∣ w 1 , w 2 , . . . , w n − 1 ) P ( w 1 , w 2 , . . . , w n − 1 ) = P ( w n ∣ w 1 , w 2 , . . . , w n − 1 ) P ( w n − 1 ∣ w 1 , w 2 , . . . , w n − 2 ) P ( w 1 , w 2 , . . . , w n − 2 ) = . . . = ∏ i = 1 n P ( w i ∣ w 1 , w 2 , . . . , w l − 1 ) \begin{aligned} P(w_1,w_2,...,w_n) =& P(w_n|w_1,w_2,...,w_{n-1})P(w_1,w_2,...,w_{n-1}) \\ =& P(w_n|w_1,w_2,...,w_{n-1})P(w_{n-1}|w_1,w_2,...,w_{n-2})P(w_1,w_2,...,w_{n-2}) \\ =& ...\\ =& \prod_{i=1}^nP(w_i|w_1,w_2,...,w_{l-1}) \end{aligned} P(w1,w2,...,wn)====P(wn∣w1,w2,...,wn−1)P(w1,w2,...,wn−1)P(wn∣w1,w2,...,wn−1)P(wn−1∣w1,w2,...,wn−2)P(w1,w2,...,wn−2)...i=1∏nP(wi∣w1,w2,...,wl−1)
如果满足马尔可夫假设,即 w i w_i wi仅与前一个历史词 w i − 1 w_{i-1} wi−1有关,则上式化为二元语法模型bigram(或称为一阶Markov chain):
P ( S ) = ∏ i = 1 n P ( w i ∣ w 1 , w 2 , . . . , w l − 1 ) P ( w 1 , w 2 , . . . , w n ) ≈ ∏ i = 1 n P ( w i ∣ w i − 1 ) = P ( w 1 ∣ < B O S > ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 2 ) . . . P ( w n ∣ w n − 1 ) P ( < E O S > ∣ w n ) \begin{aligned} P(S) =& \prod_{i=1}^nP(w_i|w_1,w_2,...,w_{l-1})P(w_1,w_2,...,w_n) \\ \approx& \prod_{i=1}^nP(w_i|w_{i-1}) \\ =& P(w_1|
其中 < B O S >
更一般的,n元语法模型n-gram,是指假设一个词与前面n-1个历史词有关,其中n=1时的一元模型表示句中各词相互独立。
二元模型公式中的条件概率,可以通过简单地频次统计来估计。
统计二元语法 w i , w i − 1 w_i,w_{i-1} wi,wi−1在训练语料库中出现的频次 c ( w i , w i − 1 ) c(w_i,w_{i-1}) c(wi,wi−1),以及 w i − 1 w_{i-1} wi−1在同样语料库中出现的频次 c ( w i ) c(w_i) c(wi) ,两者的比率就是:
P ( w i ∣ w i − 1 ) = P ( w i , w i − 1 ) P ( w i − 1 ) ≈ c ( w i , w i − 1 ) c ( w i − 1 ) = c ( w i , w i − 1 ) ∑ w i c ( w i , w i − 1 ) = c ( w i − 2 + 1 i ) ∑ w i c ( w i − 2 + 1 i ) \begin{aligned} P(w_i|w_{i-1}) =&{P(w_i,w_{i-1}) \over P(w_{i-1})}\\ \approx& c(w_i,w_{i-1}) \over c(w_{i-1}) \\ =& c(w_i,w_{i-1}) \over \sum_{w_i} c(w_i,w_{i-1}) \\ =& c(w_{i-2+1}^i) \over \sum_{w_i} c(w_{i-2+1}^i) \end{aligned} P(wi∣wi−1)=≈==P(wi−1)P(wi,wi−1)c(wi−1)c(wi,wi−1)∑wic(wi,wi−1)c(wi,wi−1)∑wic(wi−2+1i)c(wi−2+1i)
w i − 2 + 1 i w_{i-2+1}^i wi−2+1i表示词 w i − 2 + 1 , . . . , w i w_{i-2+1},...,w_i wi−2+1,...,wi。根据大数定理,只要统计量足够,相对比率就等于概率。该方法称为 P ( w i ∣ w i − 1 ) P(w_i|w_{i-1}) P(wi∣wi−1)的最大似然估计。
将上述计算公式推广至 n n n元语言模型。 l l l个词构成的句子,其 n n n元 ( n > 2 ) (n>2) (n>2)语言模型概率公式为:
P ( S ) = ∏ i = 1 l + 1 P ( w i ∣ w i − n + 1 i − 1 ) P(S)=\prod_{i=1}^{l+1}P(w_i|w_{i-n+1}^{i-1}) P(S)=i=1∏l+1P(wi∣wi−n+1i−1)
其中 w i j w_i^j wij表示词 w i . . . w j w_i...w_j wi...wj,约定 w − n + 2 w_{-n+2} w−n+2到 w 0 w_0 w0为 ⟨ B O S ⟩ \langle BOS \rangle ⟨BOS⟩,取 w l + 1 w_{l+1} wl+1为 ⟨ E O S ⟩ \langle EOS \rangle ⟨EOS⟩
其中条件概率估计为:
P ( w i ∣ w i − n + 1 i − 1 ) = c ( w i − n + 1 i ) ∑ w i c ( w i − n + 1 i ) P(w_i|w_{i-n+1}^{i-1})={c(w_{i-n+1}^i) \over \sum_{w_i} c(w_{i-n+1}^i)} P(wi∣wi−n+1i−1)=∑wic(wi−n+1i)c(wi−n+1i)
当 n n n越大时,模型包含的词序信息越丰富,同时计算量也随之增大。与此同时,长度越长的文本序列出现的次数也会越少,根据公式估计条件概率,就会出现分子或者分母为了零的情况。为了解决这个问题,需要配合平滑算法对公式进行改进。