语言模型:n-gram语言模型和神经网络语言模型

语言模型

    • n-gram语言模型
    • 神经网络语言模型(NNLM)


n-gram语言模型

什么是n-gram语言模型:n-gram语言模型是基于统计建立的,可以由此计算概率的模型。

计算不同的概率使语言模型有两种应用:

  1. 计算一个句子的合理程度。
  2. A language model can take a list of words, and attempt to predict the word that follows them. 即通过一些预先输入的词预测下一个词,如输入法的预测功能。

应用1:

计算概率:
P ( w 1 w 2 w 3 . . . w m ) ( 1 ) P(w_1w_2w_3...w_m)\qquad(1) P(w1w2w3...wm)1
根据链式法则,计算式(1)即为计算:
P ( w 1 w 2 w 3 . . . w m ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 w 2 ) . . . P ( w m ∣ w 1 w 2 w 3 . . . w m − 1 ) ( 2 ) P(w_1w_2w_3...w_m) = P(w_1)P(w_2|w_1)P(w_3|w_1w_2)...P(w_m|w_1w_2w_3...w_{m-1})\qquad(2) P(w1w2w3...wm)=P(w1)P(w2w1)P(w3w1w2)...P(wmw1w2w3...wm1)(2)
为了简化计算,通常会利用多阶马尔可夫链的假设,即每次状态的转移只与前几个(通常为1或2)状态有关。于是产生了n-gram语言模型

当n等于1时,式(2)被简化为:
P ( w 1 w 2 w 3 . . . w m ) = ∏ i = 1 m P ( w i ) , n = 1 P(w_1w_2w_3...w_m) = \prod_{i=1}^mP(w_i),n=1 P(w1w2w3...wm)=i=1mP(wi),n=1
当n等于2时,式(2)被简化为:
P ( w 1 w 2 w 3 . . . w m ) = ∏ i = 2 m P ( w i ∣ w i − 1 ) P ( w 1 ) , n = 2 P(w_1w_2w_3...w_m) = \prod_{i=2}^mP(w_i|w_{i-1})P(w_1),n=2 P(w1w2w3...wm)=i=2mP(wiwi1)P(w1),n=2
当n等于3时,式(2)被简化为:
P ( w 1 w 2 w 3 . . . w m ) = ∏ i = 3 m P ( w i ∣ w i − 2 w i − 1 ) P ( w 2 ∣ w 1 ) P ( w 1 ) , n = 3 P(w_1w_2w_3...w_m) = \prod_{i=3}^mP(w_i|w_{i-2}w_{i-1})P(w_2|w_1)P(w_1),n=3 P(w1w2w3...wm)=i=3mP(wiwi2wi1)P(w2w1)P(w1),n=3
在现实计算时,式子中的概率都会基于统计得出。


应用2:

当使用n-gram语言模型时:
P ( w i ∣ w 1 w 2 w 3 . . . w i − 1 ) = P ( w i ∣ w i − n + 1 w i − n + 2 . . . w i − 1 ) = C o u n t ( w i − n + 1 w i − n + 2 . . . w i ) C o u n t ( w i − n + 1 w i − n + 2 . . . w i − 1 ) P(w_i|w_1w_2w_3...w_{i-1}) = P(wi|w_{i-n+1}w_{i-n+2}...w_{i-1}) = \frac{Count(w_{i-n+1}w_{i-n+2}...w_i)}{Count(w_{i-n+1}w_{i-n+2}...w_{i-1})} P(wiw1w2w3...wi1)=P(wiwin+1win+2...wi1)=Count(win+1win+2...wi1)Count(win+1win+2...wi)
最大时的w_i为语言模型预测的下一个词。


神经网络语言模型(NNLM)

语言模型:n-gram语言模型和神经网络语言模型_第1张图片
如上图,NNLM首先对单词用one-hot编码,然后乘矩阵Q获得向量C(Wi),然后把C(Wi)拼接起来,经过hidden layer,然后接softmax去预测后面的单词。

可以看到,NNLM和word2vec很像,NNLM的“副产品”矩阵Q就是word2vec想要得到的分布式表示。不过NNLM和word2vec在构造训练集时有很大差别,虽然都使用了n-gram,但NNLM只关注一个词及其之前的n-1个词,而word2vec关注一个词及其周围的词,来得到该词的context.


参考资料:
[1]: NNLM: https://mp.weixin.qq.com/s/p16IEzlaDGRNt8h6WkP-dQ
[2]: n-gram LM: https://zhuanlan.zhihu.com/p/32829048

你可能感兴趣的:(自然语言处理)