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
)
\\begin{aligned} 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) \\end{aligned}
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) = \\frac{C(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? 使用最大似然方法,就是在训练预料上进行数数。 以上是关于n-gram语言模型LM的主要内容,如果未能解决你的问题,请参考以下文章
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}) = \\frac{C(w_{i-N+1}^{i-1}w_i)}{C(w_{i-N+1}^{i-1})}
P