赞
踩
语言模型的本质是计算一个句子序列的概率。
即对于语言序列
ω
1
,
ω
2
,
…
,
ω
n
ω_1,ω_2,…,ω_n
ω1,ω2,…,ωn ,语言模型就是计算
P
(
ω
1
,
ω
2
,
…
,
ω
n
)
P(ω_1,ω_2,…,ω_n )
P(ω1,ω2,…,ωn) 。
由此引入乘法公式:
P
(
A
B
C
D
)
=
P
(
A
)
P
(
B
│
A
)
P
(
C
│
A
B
)
P
(
D
│
A
B
C
)
(1)
P(ABCD)=P(A)P(B│A)P(C│AB)P(D│ABC)\tag{1}
P(ABCD)=P(A)P(B│A)P(C│AB)P(D│ABC)(1)
P
(
ω
1
,
ω
2
,
…
,
ω
n
)
=
∏
i
P
(
ω
i
│
ω
1
,
ω
2
,
…
,
ω
i
−
1
)
(2)
P(ω_1,ω_2,…,ω_n )=∏_iP(ω_i│ω_1,ω_2,…,ω_{i-1} ) \tag{2}
P(ω1,ω2,…,ωn)=i∏P(ωi│ω1,ω2,…,ωi−1)(2)
统计语言模型又叫做N-Gram模型,这里N是指词典
V
V
V 中的词数。
定义
V
V
V 为一个具有
∣
V
∣
|V|
∣V∣ 个单词的词典,即所有词的词集合;
ω
n
e
x
t
∈
V
ω_{next}∈V
ωnext∈V 。
对于公式:
P
(
ω
n
e
x
t
│
判
断
,
这
个
,
词
,
的
)
=
c
o
u
n
t
(
ω
n
e
x
t
,
判
断
,
这
个
,
词
,
的
)
c
o
u
n
t
(
判
断
,
这
个
,
词
,
的
)
(3)
P(ω_{next}│判断,这个,词,的)=\frac{count(ω_{next},判断,这个,词,的)}{count(判断,这个,词,的) }\tag{3}
P(ωnext│判断,这个,词,的)=count(判断,这个,词,的)count(ωnext,判断,这个,词,的)(3)
使用马尔科夫链思想:
P
(
ω
n
e
x
t
│
判
断
,
这
个
,
词
,
的
)
≈
P
(
ω
n
e
x
t
│
词
,
的
)
(4)
P(ω_{next}│判断,这个,词,的)≈P(ω_{next}│词,的)\tag{4}
P(ωnext│判断,这个,词,的)≈P(ωnext│词,的)(4)
假设
ω
n
e
x
t
ω_{next}
ωnext 只和它之前的
k
k
k 个词有相关性,
k
=
1
k=1
k=1 时称作一个单元语言模型,
k
=
2
k=2
k=2 时称为二元语言模型。由此可以推出二元语言模型的公式为:
P
(
ω
i
│
ω
i
−
1
)
=
c
o
u
n
t
(
ω
i
,
ω
i
−
1
)
c
o
u
n
t
(
ω
i
−
1
)
(5)
P(ω_i│ω_{i-1} )=\frac{count(ω_i, ω_{i-1} )}{count(ω_{i-1} )}\tag{5}
P(ωi│ωi−1)=count(ωi−1)count(ωi,ωi−1)(5)
有时会出现数据稀疏的情况,这时我们为了避免0值的出现,使用平滑策略(分子分母都加入一个非0正数)【注:这里还有其它的平滑策略,可以查到】,此时将公式(5)改为:
P
(
ω
i
│
ω
i
−
1
)
=
c
o
u
n
t
(
ω
i
,
ω
i
−
1
)
+
1
c
o
u
n
t
(
ω
i
−
1
)
+
∣
V
∣
(6)
P(ω_i│ω_{i-1} )=\frac{count(ω_i, ω_{i-1} )+1}{count(ω_{i-1} )+|V|}\tag{6}
P(ωi│ωi−1)=count(ωi−1)+∣V∣count(ωi,ωi−1)+1(6)
引入神经网络架构估计单词分布,能够通过词向量衡量单词之间的相似度,对于没有出现过的单词,也可以通过整个句子序列进行词向量的估计,可以有效解决数据稀疏问题。
上图NNLM神经网络共有三层:
NNLM最大的贡献在于将神经网络引入了LM中,此外,Word Embedding(参数矩阵
C
C
C )作为NNLM的副产品,在后续研究中也起到了很关键的作用。
另一方面,NNLM的缺点在于,它只能处理定长的序列,本质上还是遵从了马尔科夫假设,相当于用神经网络编码的N-Gram Model,无法解决长期依赖的问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。