统计语言模型Python实现

Posted 小基基o_O

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计语言模型Python实现相关的知识,希望对你有一定的参考价值。

文章目录

原理简述

统计语言模型(Statistical Language Model),可用于计算一个句子的合理程度。
S S S 表示句子,由有序的 n n n 个词 w 1 , w 2 , w 3 , . . w n w_1,w_2,w_3,..w_n w1,w2,w3,..wn 组成,句子概率 P ( S ) P(S) P(S) 的计算公式如下:

N-gram

P ( S ) = P ( w 1 , w 2 , . . . w n ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) . . . P ( w n ∣ w 1 , w 2 , . . . w n − 1 ) P(S) =P(w_1,w_2,...w_n) =P(w_1)P(w_2|w_1)P(w_3|w_1,w_2)...P(w_n|w_1,w_2,...w_n-1) P(S)=P(w1,w2,...wn)=P(w1)P(w2w1)P(w3w1,w2)...P(wnw1,w2,...wn1)

unigram

P ( S ) = P ( w 1 ) P ( w 2 ) . . . P ( w n ) = ∏ i = 1 n P ( w i ) P(S)=P(w_1)P(w_2)...P(w_n)=\\prod^n_i=1P(w_i) P(S)=P(w1)P(w2)...P(wn)=i=1nP(wi)
log ⁡ P ( S ) = ∑ i = 1 n log ⁡ P ( w i ) \\log P(S) = \\sum^n_i=1 \\log P(w_i) logP(S)=i=1nlogP(wi)

bigram

P ( S ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 2 ) . . . P ( w n ∣ w n − 1 ) = P ( w 1 ) ∏ i = 2 n P ( w i ∣ w i − 1 ) P(S) =P(w_1)P(w_2|w_1)P(w_3|w_2)...P(w_n|w_n-1) =P(w_1)\\prod^n_i=2P(w_i|w_i-1) P(S)=P(w1)P(w2w1)P(w3w2)...P(wnwn1)=P(w1)i=2nP(wiwi1)
log ⁡ P ( S ) = log ⁡ P ( w 1 ) + ∑ i = 2 n log ⁡ P ( w i ∣ w i − 1 ) \\log P(S) = \\log P(w_1) + \\sum^n_i=2 \\log P(w_i|w_i-1) logP(S)=logP(w1)+i=2nlogP(wiwi1)

Add-k Smoothing

k=1;bigram;C表示count
P A d d − 1 ( w i ∣ w i − 1 ) = C ( w i − 1 , w i ) + 1 C ( w i − 1 ) + V P_Add-1(w_i|w_i-1)=\\fracC(w_i-1,w_i)+1C(w_i-1)+V PAdd1(wiwi1)=C(wi1)+VC(wi1,wi)+1
e.g.

我很帅
她很美
P ( 帅 ∣ 很 ) = 1 + 1 2 + 5 = 2 7 P(帅|很)=\\frac1+12+5=\\frac27 P()=2+51+1=72
P ( 美 ∣ 很 ) = 1 + 1 2 + 5 = 2 7 P(美|很)=\\frac1+12+5=\\frac27 P()=2+51+1=72
P ( 我 ∣ 很 ) = 0 + 1 2 + 5 = 1 7 P(我|很)=\\frac0+12+5=\\frac17 P()=2+50+1=7以上是关于统计语言模型Python实现的主要内容,如果未能解决你的问题,请参考以下文章

统计语言模型

理解n-gram及神经网络语言模型

NLP_统计语言模型

处理语料篇

实验一:训练Bigram模型并预测句子概率|自然语言

分词原理