2. N-gram模型
2.1 统计语言模型
在自然语言处理中,统计语言模型(Statistic Language Model)是很重要的一环。简单来说,统计语言模型就是计算一个句子的概率的概率模型,即,语料库中出现这个句子的概率。
假设 W = w 1 T : = ( w 1 , w 2 , . . . , w T ) W=w_1^T:=(w_1, w_2, ..., w_T) W=w1T:=(w1,w2,...,wT) 表示由 T T T个词 w 1 , w 2 , . . . , w T w_1, w_2, ..., w_T w1,w2,...,wT按照顺序构成的一个句子,则该句子的概率模型就是 w 1 , w 2 , . . . , w T w_1, w_2, ..., w_T w1,w2,...,wT的联合概率,即:
p ( W ) = p ( w 1 T ) = p ( w 1 , w 2 , . . . , w T ) ( 利 用 B a y e s 链 式 分 解 ) = p ( w 1 ) ⋅ p ( w 2 ∣ w 1 ) ⋅ p ( w 3 ∣ w 1 2 ) ⋅ ⋅ ⋅ p ( w T ∣ w 1 T − 1 ) p(W)=p(w_1^T)=p(w_1, w_2, ..., w_T) \\(利用Bayes链式分解)\\ =p(w_1)·p(w_2|w_1)·p(w_3|w_1^2)···p(w_T|w_1^{T-1}) p(W)=p(w1T)=p(w1,w2,...,wT)(利用Bayes链式分解)=p(w1)⋅p(w2∣w1)⋅p(w3∣w12)⋅⋅⋅p(wT∣w1T−1)
其中,
p
(
w
1
)
p(w_1)
p(w1),
p
(
w
2
∣
w
1
)
p(w_2|w_1)
p(w2∣w1),
p
(
w
3
∣
w
1
2
)
p(w_3|w_1^2)
p(w3∣w12) ···
p
(
w
T
∣
w
1
T
−
1
)
p(w_T|w_1^{T-1})
p(wT∣w1T−1) 就是语言模型的参数。
已知这些参数,即可得到句子的出现概率。
注:
p
(
w
3
∣
w
1
2
)
=
p
(
w
3
∣
w
2
,
w
1
)
p(w_3|w_1^2)=p(w_3|w_2,w_1)
p(w3∣w12)=p(w3∣w2,w1)
问题在于,当前面给定的单词序列很长时,无法计算这个单词的确切概率,即 p ( w T ∣ w 1 T − 1 ) p(w_T|w_1^{T-1}) p(wT∣w1T−1)。
因此,需要借助N-gram模型来进行简化。
2.2 N-gram模型
2.2.1 概念
考虑 p ( w k ∣ w 1 k − 1 ) ( k > 1 ) p(w_k|w_1^{k-1}) (k>1) p(wk∣w1k−1)(k>1)的近似计算,利用 B a y e s Bayes Bayes公式,有:
p ( w k ∣ w 1 k − 1 ) = p ( w 1 k ) p ( w 1 k − 1 ) 根 据 大 数 定 理 , 当 语 料 库 够 大 时 ≈ c o u n t ( w 1 k ) c o u n t ( w 1 k − 1 ) p(w_k|w_1^{k-1}) =\frac{p(w_1^k)}{p(w_1^{k-1})} \\根据大数定理,当语料库够大时\\ \approx \frac{count(w_1^k)}{count(w_1^{k-1})} p(wk∣w1k−1)=p(w1k−1)p(w1k)根据大数定理,当语料库够大时≈count(w1k−1)count(w1k)
其中, p ( w 1 k ) p(w_1^k) p(w1k)表示句子中从第 1 1 1个到第 k k k个的词构成的词串, c o u n t ( w 1 k ) count(w_1^k) count(w1k)表示词串 w 1 k w_1^k w1k在语料中出现的次数。
由此可见,一个词出现的概率与它前面所有的词都相关。
假设这个词只与它前面 n − 1 n-1 n−1个词相关( n − 1 n-1 n−1阶 M a r k o v Markov Markov假设),那么,上述公式可以简化为:
p ( w k ∣ w 1 k − 1 ) ≈ p ( w k ∣ w k − n + 1 k − 1 ) ≈ c o u n t ( w 1 k ) c o u n t ( w k − n + 1 k − 1 ) p(w_k|w_1^{k-1}) \approx p(w_k|w_{k-n+1}^{k-1})\\ \approx \frac{count(w_1^k)}{count(w_{k-n+1}^{k-1})} p(wk∣w1k−1)≈p(wk∣wk−n+1k−1)≈count(wk−n+1k−1)count(w1k)
2.2.2 经验
对于参数的选取,可以从以下两个角度进行考虑:
(1) 计算复杂度:
n
n
n越大,计算复杂度越大(指数级增长)。
(2) 模型效果:理论上
n
n
n越大越好,但
n
n
n越大,模型效果的提升幅度越小。
因此,实际常选用 n = 3 n=3 n=3。
此外,还需要考虑到「平滑化」的问题。
因为假如词串在统计时计数为0,即
c
o
u
n
t
(
w
k
−
n
+
1
k
−
1
)
=
0
count(w_{k-n+1}^{k-1})=0
count(wk−n+1k−1)=0,并不能认为
p
(
w
k
∣
w
1
k
−
1
)
=
0
p(w_k|w_1^{k-1})=0
p(wk∣w1k−1)=0,否则会导致连乘时,整个词串的概率都为0。
参考
博客:Word2Vec-知其然知其所以然
Speech and Language Processing - chapter 3: N-gram Language Models