模型介绍
NLP早期常用的统计方法,对于一个sequenc的句子
S
(
w
1
w
2
w
3
⋯
w
n
,
w
i
S (w_1w_2w_3{\cdots}w_n, w_i
S(w1w2w3⋯wn,wi表示某个词),其出现的概率计算如下:
P
(
S
)
=
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
)
(1)
P(S)=P(w_1){\cdot}P(w_2|w_1){\cdot}P(w_3|w_1w_2){\cdots}P(w_{n}|w_1w_2{\cdots}w_{n-1}) \tag1
P(S)=P(w1)⋅P(w2∣w1)⋅P(w3∣w1w2)⋯P(wn∣w1w2⋯wn−1)(1)
引入马尔可夫假设,任意一个词出现的概率,只和前N-1个词有关, 特别的当N=2的时候,公式1变为如下
P
(
S
)
=
P
(
w
1
)
⋅
P
(
w
2
∣
w
1
)
⋅
P
(
w
3
∣
w
2
)
⋯
P
(
w
n
∣
w
n
−
1
)
(2)
P(S)=P(w_1){\cdot}P(w_2|w_1){\cdot}P(w_3|w_2){\cdots}P(w_{n}|w_{n-1}) \tag2
P(S)=P(w1)⋅P(w2∣w1)⋅P(w3∣w2)⋯P(wn∣wn−1)(2)
核心思想
- 一个句子的合理性为该句子在语料中出现的概率
- 句子出现的概率为句子中词按顺序出现的概率
- 引入马尔可夫假设:N-gram模型为任意一个词出现的概率,和前N-1个词有关,以上公式(1)为Bigram,当前词的概率只和前一个有关
那么如何计算
P
(
w
n
∣
w
n
−
1
)
)
P(w_n|w_{n-1}))
P(wn∣wn−1))呢 ,
P
(
w
n
∣
w
n
−
1
)
P(w_n|w_{n-1})
P(wn∣wn−1)为条件概率,根据定义有
P
(
w
n
∣
w
n
−
1
)
=
P
(
w
n
−
1
,
w
n
)
P
(
w
n
−
1
)
(3)
P(w_n|w_{n-1}) =\frac{P(w_{n-1},w_n)}{P(w_{n-1})} \tag3
P(wn∣wn−1)=P(wn−1)P(wn−1,wn)(3)
其中
P
(
w
n
−
1
,
w
n
)
P(w_{n-1},w_n)
P(wn−1,wn)为联合概率密度, 只要语料库够大
P
(
w
n
−
1
,
w
n
)
=
#
(
w
n
−
1
,
w
n
)
#
P(w_{n-1},w_n)=\frac{\#(w_{n-1}, w_n)}{\#}
P(wn−1,wn)=##(wn−1,wn),
P
(
w
n
−
1
)
=
#
(
w
n
−
1
)
#
P(w_{n-1})=\frac{\#(w_{n-1})}{\#}
P(wn−1)=##(wn−1),
#
(
w
n
−
1
,
w
n
)
\#(w_{n-1}, w_n)
#(wn−1,wn)为
w
n
−
1
w
n
w_{n-1}w_n
wn−1wn这个二元组在语料corpus中出现的次数,对
P
(
w
n
−
1
)
P(w_{n-1})
P(wn−1)为0的情况
缺点
- Ngram是由词频率和共同出现的频率来估计概率的,算力的问题随着Ngram的N变大而指数增大
- 当N不太大的时候,无法解决长文本的依赖问题
- 对于共现次数为0的情况, w n − 1 w n w_{n-1}w_n wn−1wn出现的次数为0,需要考虑平滑处理,N越大,情况越严重
- N元组的共现无法体现语义相似
优点
- 原理简单,语料库来自人类的自然文本,数据量巨大且不用标注
- 奠定了之后NLP语言模型的发展基石