语言模型公式推导

语言模型公式推导

    • 句子的概率P(S)及n-gram语法模型
    • bigram模型计算条件概率
    • n-gram模型计算条件概率

语言模型在信息检索、机器翻译、语音识别中承担着重要的任务。一个语言模型通常构建为字符串s的概率分布 p ( s ) p(s) p(s),这里 p ( s ) p(s) p(s)试图反映的是字符串 s s s作为一个句子出现的概率。

句子的概率P(S)及n-gram语法模型

若一个字符串句子由 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(BA)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(wnw1,w2,...,wn1)P(w1,w2,...,wn1)P(wnw1,w2,...,wn1)P(wn1w1,w2,...,wn2)P(w1,w2,...,wn2)...i=1nP(wiw1,w2,...,wl1)
如果满足马尔可夫假设,即 w i w_i wi仅与前一个历史词 w i − 1 w_{i-1} wi1有关,则上式化为二元语法模型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|)P(w_2|w_1)P(w_3|w_2)...P(w_n|w_{n-1})P(|w_n) \end{aligned} P(S)==i=1nP(wiw1,w2,...,wl1)P(w1,w2,...,wn)i=1nP(wiwi1)P(w1<BOS>)P(w2w1)P(w3w2)...P(wnwn1)P(<EOS>wn)
其中 < B O S > <BOS> < E O S > <EOS>分别表示句首标记和句尾标记。
更一般的,n元语法模型n-gram,是指假设一个词与前面n-1个历史词有关,其中n=1时的一元模型表示句中各词相互独立。
 

bigram模型计算条件概率

二元模型公式中的条件概率,可以通过简单地频次统计来估计。
统计二元语法 w i , w i − 1 w_i,w_{i-1} wi,wi1在训练语料库中出现的频次 c ( w i , w i − 1 ) c(w_i,w_{i-1}) c(wi,wi1),以及 w i − 1 w_{i-1} wi1在同样语料库中出现的频次 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(wiwi1)===P(wi1)P(wi,wi1)c(wi1)c(wi,wi1)wic(wi,wi1)c(wi,wi1)wic(wi2+1i)c(wi2+1i)
w i − 2 + 1 i w_{i-2+1}^i wi2+1i表示词 w i − 2 + 1 , . . . , w i w_{i-2+1},...,w_i wi2+1,...,wi。根据大数定理,只要统计量足够,相对比率就等于概率。该方法称为 P ( w i ∣ w i − 1 ) P(w_i|w_{i-1}) P(wiwi1)最大似然估计
 

n-gram模型计算条件概率

将上述计算公式推广至 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=1l+1P(wiwin+1i1)
其中 w i j w_i^j wij表示词 w i . . . w j w_i...w_j wi...wj,约定 w − n + 2 w_{-n+2} wn+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(wiwin+1i1)=wic(win+1i)c(win+1i)
n n n越大时,模型包含的词序信息越丰富,同时计算量也随之增大。与此同时,长度越长的文本序列出现的次数也会越少,根据公式估计条件概率,就会出现分子或者分母为了零的情况。为了解决这个问题,需要配合平滑算法对公式进行改进。

你可能感兴趣的:(自然语言处理NLP,NLP,n元模型)