—Course notes for NLP by Michael Collins, Columbia University
学习笔记
1.1引言
这一章的主要目的是从一些例句中抽出语言模型
下面是定义
-
v
是所有单词的集合
-
语言模型的定义
一个语言模型包含一个有限集合
v
,一个函数
于是
1.对于任意
<x1...xn>∈v+,p(x1,x2...xn)≥0
<script id="MathJax-Element-8" type="math/tex">
\in v^+, p(x_1,x_2...x_n)\geq 0</script>
2.
∑<x1...xn>∈v+p(x1,x2,...xn)=1
于是
p(x1,x2,...xn)
是一个句子在
v+
中的联合分布率
1.2马尔科夫模型
1.2.1 定长句子的马尔科夫模型
我们的目的是求出
P(X1=x1,X2=x2,...,Xn=xn)
的联合分布率
ps:
Xi是变量,可取任何在v中的xi
但是对于
x1...xn
有
|v|n
种可能的序列,所以要列出
|v|n
是不现实的,所以我们需要一个更实用的方法:
一层的马尔科夫模型:
P(X1=x1,X2=x2,...,Xn=xn)
=P(X1=x1∏ni=2P(Xi=xi|X1=x1,...,Xi−1=xi−1)
=P(X1=x1∏ni=2P(Xi=xi|Xi−1=xi−1)
1.2.2变长句子的马尔科夫模型
上一节讨论了定长句子的模型,但是显然大多数应用中句子是变长的,所以这一节我们介绍最通用的语言模型方法。
方法很简单:使一个序列中
Xn
总是等于终止符
stop
,举例来说,对于二阶马尔科夫模型:
P(X1=x1,X2=x2,...,Xn=xn)
=∏ni=1P(Xi=xi|Xi−2=xi−2,Xi−1=xi−1)
计算方法如下:
1. 初始化
i=1,x0=x−1=∗
2. 从
P(Xi=xi|Xi−2=xi−2,Xi−1=xi−1)
的分布中生成
xi
3. 如果
xi=stop
,则返回序列
x1...xi
,否则
i=i+1
,继续步骤2
这样我们就有可以生成任何长度序列的模型了
1.3 三元语言模型
我们将关注三元语言模型,讨论它的最大似然参数估计,最后讨论三元语言模型的缺点。
1.3.1 基本定义
在马尔科夫模型中,我们模型化每个句子为n个任意变量
X1,...,X2
组成的序列,
Xn是终止符stop
在二元马尔科夫模型中
—————句子
x1...x2
的概率是—————————-
P(X1=x1,X2=x2,...,Xn=xn)
=∏ni=1P(Xi=xi|Xi−2=xi−2,Xi−1=xi−1)
其中假设
x0=x−1=∗
.
又假设
P(Xi=xi|Xi−2=xi−2,Xi−1=xi−1)=q(xi|xi−2,xi−1)
其中对任意
(u,v,w)
,
q(w|u,v)
是此模型的参数
于是我们的模型的形式改变如下:
p(x1...xn)=∏ni=1q(xi|xi−2,xi−1)
举例来说,如何计算三元模型
the
dog
barks
STOP
p(
the
dog
barks
STOP
)
=
对于任何
u,v
有
∑w∈v⋃STOPq(w|u,v)=1
但是,想象如果语料库中有10000个单词,那么这个模型就有
100003=1012
,显然这是非常大的
1.3.2 最大似然估计
我们首先最一般的方法入手来估计参数–最大似然估计法。我们将会看到这些估计值是有缺陷的,但是我们仍然展示为什么这些参数在实际中非常有效。
首先,假设 c(u;,v,w) 是三元模型 (u,v,w) 的次数,同样的 定义 c(u,v) 是二元模型 (u,v) 的语料中出现的次数,对于任意 w,u,v 定义
q(w|u,v)=c(u,v,w)u,v
这样我们对 p( barks | the, dog ) 的参数估计就变成了
(表示barks在 the dog 出现的情况下 的概率的计算方法是 the dog barks 出现的次数比上 the dog 出现的次数?)
但是这样就会有两个问题:
- 很多 q(w|u,v)=0 ,这意味着uvw的语序出现概率是0,但是这只能代表训练语料中为零,在更多的情境中,这很可能不是0.
- 万一 c(u,v) 等于0
//待续
1.3.3 评价语言模型:复杂度
我们使用一组不存在于训练语料库中的句子
x(1),x(2),...,x(m)
每个句子
x(i),i∈1...m
都由单词
x(i)1,...,x(i)n
组成
对于一个测试句子,我们能通过语言模型衡量其概率
p(x(i))
一个普通的衡量方法就是语言模型分给所有测试句子的概率,也就是
∏mi=1p(x(i))