n-gram语言模型LM
Posted 栋次大次
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了n-gram语言模型LM相关的知识,希望对你有一定的参考价值。
目录
感谢阅读,笔者能力有限,有错误请指正!
为什么要加入语音模型?
对于连续语音识别,可能有上万个词,解码过程是复杂的,识别结果组合很多,只使用声学模型是不够的,需要引入语言模型来约束识别结果。
统计语言模型
一个统计语言模型包含一个有限集合V,和一个函数 p ( x 1 , x 2 , … , x n ) p\\left(x_1, x_2, \\ldots, x_n\\right) p(x1,x2,…,xn);
-
对于任意 ⟨ x 1 , ⋯ , x n ⟩ ∈ v + , p ( x 1 , x 2 , … , x n ) ≥ 0 \\left\\langle x_1, \\cdots, x_n\\right\\rangle \\in v^+, \\quad p\\left(x_1, x_2, \\ldots, x_n\\right) \\geq 0 ⟨x1,⋯,xn⟩∈v+,p(x1,x2,…,xn)≥0
-
∑ < x 1 , … , x n > ∈ v + p ( x 1 , x 2 , … , x n ) = 1 \\sum_<x_1, \\ldots, x_n>\\in v^+ p\\left(x_1, x_2, \\ldots, x_n\\right)=1 ∑<x1,…,xn>∈v+p(x1,x2,…,xn)=1
统计语言模型是所有词序列上的一个概率分布。它有什么用?
- 可以给出我们任意词序列的概率,帮助确定哪个词序列的可能性大;
- 给定一个词序列,可以预测下一个最可能出现的词。
给定一个词序列
S
=
(
w
1
,
…
,
w
n
)
S=\\left(w_1, \\ldots, w_n\\right)
S=(w1,…,wn), 它的概率可以表示为:
P
(
S
)
=
P
(
x
1
=
w
1
,
…
x
n
=
w
n
)
=
P
(
w
1
n
)
=
P
(
w
1
)
P
(
w
2
∣
w
1
)
P
(
w
3
∣
w
1
2
)
…
P
(
w
n
∣
w
1
n
−
1
)
=
∏
k
=
1
n
P
(
w
k
∣
w
1
k
−
1
)
\\beginaligned P(S) &=P\\left(x_1=w_1, \\ldots x_n=w_n\\right)=P\\left(w_1^n\\right) \\\\ &=P\\left(w_1\\right) P\\left(w_2 \\mid w_1\\right) P\\left(w_3 \\mid w_1^2\\right) \\ldots P\\left(w_n \\mid w_1^n-1\\right) \\\\ &=\\prod_k=1^n P\\left(w_k \\mid w_1^k-1\\right) \\endaligned
P(S)=P(x1=w1,…xn=wn)=P(w1n)=P(w1)P(w2∣w1)P(w3∣w12)…P(wn∣w1n−1)=k=1∏nP(wk∣w1k−1)
如何获得语言模型中的概率?在语料库中计数。
N-gram语言模型与评价方法
举个栗子:It is going to be a fine day
P
(
d
a
y
∣
I
t
i
s
g
o
i
n
g
t
o
b
e
a
f
i
n
e
)
=
C
(
I
t
i
s
g
o
i
n
g
t
o
b
e
a
f
i
n
e
d
a
y
)
C
(
I
t
i
s
g
o
i
n
g
t
o
b
e
a
f
i
n
e
)
P(day|It\\ is\\ going\\ to\\ be\\ a\\ fine) = \\fracC(It\\ is\\ going\\ to\\ be\\ a\\ fine\\ day)C(It\\ is\\ going\\ to\\ be\\ a\\ fine)
P(day∣It is going to be a fine)=C(It is going to be a fine)C(It is going to be a fine day)
问题:当历史信息越长,越难在预料库中找到完全一致的序列。
引入马尔科夫假设:随意一个词出现的概率只与前面出现的有限的n-1个词有关,则可以用最近的几个历史词代替整个历史词串,从而近似。
N-gram:用前N-1个词作为历史,估计当前第N个词。
P
(
w
i
∣
w
i
i
−
1
)
=
P
(
w
i
∣
w
i
−
N
+
1
i
−
1
)
P(w_i|w_i^i-1)=P(w_i|w_i-N+1^i-1)
P(wi∣wii−1)=P(wi∣wi−N+1i−1)
如2-gram(bigram):
P
(
w
i
∣
w
i
i
−
1
)
=
P
(
w
i
∣
w
i
−
1
)
P(w_i|w_i^i-1)=P(w_i|w_i-1)
P(wi∣wii−1)=P(wi∣wi−1)
如何估计N-gram? 使用最大似然方法,就是在训练预料上进行数数。
P
(
w
i
∣
w
i
−
N
+
1
i
−
1
)
=
C
(
w
i
−
N
+
1
i
−
1
w
i
)
C
(
w
i
−
N
+
1
i
−
1
)
P(w_i|w_i-N+1^i-1) = \\fracC(w_i-N+1^i-1w_i)C(w_i-N+1^i-1)
P(w以上是关于n-gram语言模型LM的主要内容,如果未能解决你的问题,请参考以下文章