184 Chapter 6. 基于扭曲度和繁衍率的模型 肖桐 朱靖波
6.2 基于繁衍率的模型
下面介绍翻译中的一对多问题,以及这个问题所带来的句子长度预测问题。
6.2.1 什么是繁衍率
从前面的介绍可知,IBM 模型 1 和模型 2 把不同的源语言单词看作相互独立的
单元来进行词对齐和翻译。换句话说,即使某个源语言短语中的两个单词都对齐到
同一个目标语单词,它们之间也是相互独立的。这样 IBM 模型 1 和模型 2 对于多个
源语言单词对齐到同一个目标语单词的情况并不能很好地进行描述。
这里将会给出另一个翻译模型,能在一定程度上解决上面提到的问题
[10, 242]
。该
模型把目标语言生成源语言的过程分解为如下几个步骤:首先,确定每个目标语言
单词生成源语言单词的个数,这里把它称为繁衍率或产出率(Fertility);其次,决定
目标语言句子中每个单词生成的源语言单词都是什么,即决定生成的第一个源语言
单词是什么,生成的第二个源语言单词是什么,以此类推。这样每个目标语言单词
就对应了一个源语言单词列表;最后把各组源语言单词列表中的每个单词都放置到
合适的位置上,完成目标语言译文到源语言句子的生成。
s
τ
ϕ
t
科学家
们
并不
知道
τ
0
1.NULL
τ
1
1. 科学家
2. 们
τ
2
1.NULL
τ
3
1. 并不
τ
4
1. 知道
ϕ
0
0 ϕ
1
2 ϕ
2
0 ϕ
3
1 ϕ
4
1
t
0 Scientists
do
not
know
把这些元语
言单词放在
合适的位置
确定生成元
语言单词
确定生成元
语言单词的
个数
ϕ
0
= 0,ϕ
1
= 2,ϕ
3
= 0,ϕ
4
= 1
τ
0
= {},τ
1
= {τ
11
=
′
科学家
′
,τ
12
=
′
们
′
},ϕ
3
= {τ
31
=
′
并不
′
},ϕ
4
= {τ
41
=
′
知道
′
}
π
0
= {},π
1
= {π
11
= 1,π
12
= 2},π
2
= {},π
3
= {π
31
= 3},π
4
= {π
41
= 4}
图 6.5 基于产出率的翻译模型执行过程
对于句对 (s, t),令 φ 表示产出率,同时令 τ 表示每个目标语言单词对应的源语
言单词列表。图6.5描述了一个英语句子生成汉语句子的过程。
• 首先,对于每个英语单词 t
i
确定它的产出率 φ
i
。比如“Scientists”的产出率是
2,可表示为 φ
1
= 2。这表明它会生成 2 个汉语单词;
• 其次,确定英语句子中每个单词生成的汉语单词列表。比如“Scientists”生成
“科学家”和“们”两个汉语单词,可表示为 τ
1
= {τ
11
=“科学家”,τ
12
=“们”}。
6.2 基于繁衍率的模型 185
这里用特殊的空标记 NULL 表示翻译对空的情况;
• 最后,把生成的所有汉语单词放在合适的位置。比如“科学家”和“们”分别放在
s 的位置 1 和位置 2。可以用符号 π 记录生成的单词在源语言句子 s 中的位置。
比如“Scientists”生成的汉语单词在 s 中的位置表示为 π
1
= {π
11
= 1,π
12
= 2}。
为了表述清晰,这里重新说明每个符号的含义。s、t、m 和 l 分别表示源语言句
子、目标语言译文、源语言单词数量以及译文单词数量。φ、τ 和 π 分别表示产出率、
生成的源语言单词以及它们在源语言句子中的位置。φ
i
表示第 i 个目标语言单词 t
i
的产出率。τ
i
和 π
i
分别表示 t
i
生成的源语言单词列表及其在源语言句子 s 中的位置
列表。
可以看出,一组 τ 和 π(记为 < τ,π >)可以决定一个对齐 a 和一个源语句子 s。
相反的,一个对齐 a 和一个源语句子 s 可以对应多组 < τ,π >。如图6.6所示,不同的
< τ,π > 对应同一个源语言句子和词对齐。它们的区别在于目标语单词“Scientists”
生成的源语言单词“科学家”和“们”的顺序不同。这里把不同的 < τ,π > 对应到的
相同的源语句子 s 和对齐 a 记为 < s,a >。因此计算 P (s, a|t) 时需要把每个可能结果
的概率加起来,如下:
P (s,a|t) =
X
<τ,π>∈<s,a>
P (τ,π|t) (6.9)
s
τ
ϕ
t
科学家
们
并不
知道
τ
0
1.NULL
τ
1
1.
科学家
2.
们
τ
2
1.NULL
τ
3
1. 并不
τ
4
1. 知道
...
... ...
< τ,π >
1
... ...
科学家
们
并不
知道
τ
0
1.NULL
τ
1
1.
们
2.
科学家
τ
2
1.NULL
τ
3
1. 并不
τ
4
1. 知道
...
... ...
< τ,π >
2
... ...
图 6.6 不同 τ 和 π 对应相同的源语言句子和词对齐的情况
不过 < s,a > 中有多少组 < τ, π > 呢?通过图6.5中的例子,可以推出 < s,a > 应
该包含
Q
l
i=0
φ
i
! 个不同的二元组 < τ,π >。这是因为在给定源语言句子和词对齐时,
186 Chapter 6. 基于扭曲度和繁衍率的模型 肖桐 朱靖波
对于每一个 τ
i
都有 φ
i
! 种排列。
进一步,P (τ,π|t) 可以被表示如图6.7的形式。其中 τ
k−1
i1
表示 τ
i1
···τ
i(k−1)
,π
k−1
i1
表示 π
i1
···π
i(k−1)
。可以把图6.7中的公式分为 5 个部分,并用不同的序号和颜色进
行标注。每部分的具体含义是:
P (τ,π|t) =
Q
l
i=1
× ×
Q
l
i
=0
Q
φ
i
k=1
×
Q
l
i
=1
Q
φ
i
k=1
×
Q
φ
0
k=1
P (φ
i
|φ
i−1
1
,t)
P (φ
0
|φ
l
1
,t)
P (τ
ik
|τ
k−1
i1
,τ
i−1
1
,φ
l
0
,t)
P (π
ik
|π
k−1
i1
,π
i−1
1
,τ
l
0
,φ
l
0
,t)
P (π
0k
|π
k−1
01
,π
l
1
,τ
l
0
,φ
l
0
,t)
图 6.7 P (τ,π|t) 的详细表达式
• 第一部分:对每个 i ∈ [1,l] 的目标语单词的产出率建模(红色),即 φ
i
的生成
概率。它依赖于 t 和区间 [1,i −1] 的目标语单词的产出率 φ
i−1
1
。
1
• 第二部分:对 i = 0 时的产出率建模(蓝色),即空标记 t
0
的产出率生成概率。
它依赖于 t 和区间 [1,i −1] 的目标语单词的产出率 φ
l
1
。
• 第三部分:对单词翻译建模(绿色),目标语言单词 t
i
生成第 k 个源语言单词
τ
ik
时的概率,依赖于 t、所有目标语言单词的产出率 φ
l
0
、区间 i ∈ [1,l] 的目
标语言单词生成的源语言单词 τ
i−1
1
和目标语单词 t
i
生成的前 k 个源语言单词
τ
k−1
i1
。
• 第四部分:对于每个 i ∈ [1, l] 的目标语言单词生成的源语言单词的扭曲度建模
(黄色),即第 i 个目标语言单词生成的第 k 个源语言单词在源文中的位置 π
ik
的概率。其中 π
i−1
1
表示区间 [1,i −1] 的目标语言单词生成的源语言单词的扭曲
度,π
k−1
i1
表示第 i 目标语言单词生成的前 k −1 个源语言单词的扭曲度。
• 第五部分:对 i = 0 时的扭曲度建模(灰色),即空标记 t
0
生成源语言位置的概
率。
6.2.2 IBM 模型 3
IBM 模型 3 通过一些假设对图6.7所表示的基本模型进行了化简。具体来说,对
于每个 i ∈ [1,l] ,假设 P (φ
i
|φ
i−1
1
,t) 仅依赖于 φ
i
和 t
i
,P (π
ik
|π
k−1
i1
,π
i−1
1
,τ
l
0
,φ
l
0
,t) 仅
依赖于 π
ik
、i、m 和 l。而对于所有的 i ∈ [0, l],假设 P (τ
ik
|τ
k−1
i1
,τ
i−1
1
,φ
l
0
,t) 仅依赖于
τ
ik
和 t
i
。这些假设的形式化描述为:
1
这里约定,当 i = 1 时,φ
0
1
表示空。
6.2 基于繁衍率的模型 187
P (φ
i
|φ
i−1
1
,t) = P (φ
i
|t
i
) (6.10)
P (τ
ik
= s
j
|τ
k−1
i1
,τ
i−1
1
,φ
t
0
,t) = t(s
j
|t
i
) (6.11)
P (π
ik
= j|π
k−1
i1
,π
i−1
1
,τ
l
0
,φ
l
0
,t) = d(j|i,m, l) (6.12)
通常把 d(j|i,m, l) 称为扭曲度函数。这里 P (φ
i
|φ
i−1
1
,t) = P (φ
i
|t
i
) 和 P (π
ik
= j|π
k−1
i1
,
π
i−1
1
,τ
l
0
,φ
l
0
,t) = d(j|i,m,l) 仅对 1 ≤ i ≤ l 成立。这样就完成了图6.7中第 1、3 和 4 部
分的建模。
对于 i = 0 的情况需要单独进行考虑。实际上,t
0
只是一个虚拟的单词。它要对
应 s 中原本为空对齐的单词。这里假设:要等其他非空对齐单词都被生成(放置)后,
才考虑这些空对齐单词的生成(放置)。即非空对齐单词都被生成后,在那些还有空
的位置上放置这些空对齐的源语言单词。此外,在任何空位置上放置空对齐的源语
言单词都是等概率的,即放置空对齐源语言单词服从均匀分布。这样在已经放置了
k 个空对齐源语言单词的时候,应该还有 φ
0
−k 个空位置。如果第 j 个源语言位置
为空,那么
P (π
0k
= j|π
k−1
01
,π
l
1
,τ
l
0
,φ
l
0
,t) =
1
φ
0
−k
(6.13)
否则
P (π
0k
= j|π
k−1
01
,π
l
1
,τ
l
0
,φ
l
0
,t) = 0 (6.14)
这样对于 t
0
所对应的 τ
0
,就有
φ
0
Y
k=1
P (π
0k
|π
k−1
01
,π
l
1
,τ
l
0
,φ
l
0
,t) =
1
φ
0
!
(6.15)
而上面提到的 t
0
所对应的这些空位置是如何生成的呢?即如何确定哪些位置是
要放置空对齐的源语言单词。在 IBM 模型 3 中,假设在所有的非空对齐源语言单词
都被生成出来后(共 φ
1
+ ···φ
l
个非空对源语单词),这些单词后面都以 p
1
概率随机
地产生一个“槽”用来放置空对齐单词。这样,φ
0
就服从了一个二项分布。于是得
到
P (φ
0
|t) =
φ
1
+ ···φ
l
φ
0
p
φ
1
+···φ
l
−φ
0
0
p
φ
0
1
(6.16)
其中,p
0
+ p
1
= 1。到此为止,已经完成了图6.7中第 2 和 5 部分的建模。最终根据
188 Chapter 6. 基于扭曲度和繁衍率的模型 肖桐 朱靖波
这些假设可以得到 P ( s |t ) 的形式为:
P (s|t) =
l
X
a
1
=0
···
l
X
a
m
=0
h
m −φ
0
φ
0
p
m−2φ
0
0
p
φ
0
1
l
Y
i=1
φ
i
!n(φ
i
|t
i
)
×
m
Y
j=1
t(s
j
|t
a
j
) ×
m
Y
j=1,a
j
̸=0
d(j|a
j
,m,l)
i
(6.17)
其中,n(φ
i
|t
i
) = P (φ
i
|t
i
) 表示产出率的分布。这里的约束条件为:
X
s
x
t(s
x
|t
y
) = 1 (6.18)
X
j
d(j|i,m,l) = 1 (6.19)
X
φ
n(φ|t
y
) = 1 (6.20)
p
0
+ p
1
= 1 (6.21)
6.2.3 IBM 模型 4
IBM 模型 3 仍然存在问题,比如,它不能很好地处理一个目标语言单词生成多
个源语言单词的情况。这个问题在模型 1 和模型 2 中也存在。如果一个目标语言单
词对应多个源语言单词,则这些源语言单词往往会构成短语。但是模型 1-3 把这些源
语言单词看成独立的单元,而实际上它们是一个整体。这就造成了在模型 1-3 中这些
源语言单词可能会“分散”开。为了解决这个问题,模型 4 对模型 3 进行了进一步
修正。
为了更清楚地阐述,这里引入新的术语
——
概念单元或概念(Concept)。词对
齐可以被看作概念之间的对应。这里的概念是指具有独立语法或语义功能的一组单
词。依照 Brown 等人的表示方法
[10]
,可以把概念记为 cept.。每个句子都可以被表示
成一系列的 cept.。这里要注意的是,源语言句子中的 cept. 数量不一定等于目标句子
中的 cept. 数量。因为有些 cept. 可以为空,因此可以把那些空对的单词看作空 cept.。
比如,在图6.8的实例中,“了”就对应一个空 cept.。
在 IBM 模型的词对齐框架下,目标语的 cept. 只能是那些非空对齐的目标语单
词,而且每个 cept. 只能由一个目标语言单词组成(通常把这类由一个单词组成的
cept. 称为独立单词 cept.)。这里用 [i] 表示第 i 个独立单词 cept. 在目标语言句子中的
位置。换句话说,[i] 表示第 i 个非空对的目标语单词的位置。比如在本例中“mind”
在 t 中的位置表示为 [3]。
另外,可以用 ⊙
i
表示位置为 [i] 的目标语言单词对应的那些源语言单词位置的
6.2 基于繁衍率的模型 189
我 改变
主意
了
。
1 2
3
4
5
t
0
I
changed
my
mind
.
[1] [2] [3] [4]
s
t
图 6.8 词对齐的汉译英句对及独立单词 cept. 的位置(记为 [i])
平均值,如果这个平均值不是整数则对它向上取整。比如在本例中,目标语句中第 4
个 cept. (“.”)对应在源语言句子中的第 5 个单词。可表示为 ⊙
4
= 5。
利用这些新引进的概念,模型 4 对模型 3 的扭曲度进行了修改。主要是把扭曲
度分解为两类参数。对于 [i] 对应的源语言单词列表 (τ
[i]
) 中的第一个单词 (τ
[i]1
),且
[i] > 0,它的扭曲度用如下公式计算:
P (π
[i]1
= j|π
[i]−1
1
,τ
l
0
,φ
l
0
,t) = d
1
(j −⊙
i−1
|A(t
[i−1]
),B(s
j
)) (6.22)
其中,第 i 个目标语言单词生成的第 k 个源语言单词的位置用变量 π
ik
表示。而对于
列表 (τ
[i]
) 中的其他的单词 (τ
[i]k
,1 < k ≤ φ
[i]
) 的扭曲度,且 [i] > 0,用如下公式计算:
P (π
[i]k
= j|π
k−1
[i]1
,π
[i]−1
1
,τ
l
0
,φ
l
0
,t) = d
>1
(j −π
[i]k−1
|B(s
j
)) (6.23)
这里的函数 A(·) 和函数 B(·) 分别把目标语言和源语言的单词映射到单词的词
类。这么做的目的是要减小参数空间的大小。词类信息通常可以通过外部工具得到,
比如 Brown 聚类等。另一种简单的方法是把单词直接映射为它的词性。这样可以直
接用现在已经非常成熟的词性标注工具解决问题。
从上面改进的扭曲度模型可以看出,对于 t
[i]
生成的第一个源语言单词,要考虑
中心 ⊙
[i]
和这个源语言单词之间的绝对距离。实际上也就要把 t
[i]
生成的所有源语言
单词看成一个整体并把它放置在合适的位置。这个过程要依据第一个源语言单词的
词类和对应的源语中心位置,以及前一个非空的目标语言单词 t
[i−1]
的词类。而对于
t
[i]
生成的其他源语言单词,只需要考虑它与前一个刚放置完的源语言单词的相对位
置和这个源语言单词的词类。
实际上,上述过程要先用 t
[i]
生成的第一个源语言单词代表整个 t
[i]
生成的单词
列表,并把第一个源语言单词放置在合适的位置。然后,相对于前一个刚生成的源
语言单词,把列表中的其他单词放置在合适的地方。这样就可以在一定程度上保证
由同一个目标语言单词生成的源语言单词之间可以相互影响,达到了改进的目的。
190 Chapter 6. 基于扭曲度和繁衍率的模型 肖桐 朱靖波
6.2.4 IBM 模型 5
模型 3 和模型 4 并不是“准确”的模型。这两个模型会把一部分概率分配给一
些根本就不存在的句子。这个问题被称作 IBM 模型 3 和模型 4 的缺陷(Deficiency)
。说得具体一些,模型 3 和模型 4 中并没有这样的约束:已经放置了某个源语言单
词的位置不能再放置其他单词,也就是说句子的任何位置只能放置一个词,不能多
也不能少。由于缺乏这个约束,模型 3 和模型 4 中在所有合法的词对齐上概率和不
等于 1。这部分缺失的概率被分配到其他不合法的词对齐上。举例来说,如图6.9所
示,“吃/早饭”和“have breakfast”之间的合法词对齐用直线表示。但是在模型 3 和
模型 4 中,它们的概率和为 0.9 < 1。损失掉的概率被分配到像 a5 和 a6 这样的对齐
上了(红色)。虽然 IBM 模型并不支持一对多的对齐,但是模型 3 和模型 4 把概率分
配给这些“不合法”的词对齐上,因此也就产生所谓的缺陷。
吃
早饭
have
breakfast
a
1
P (s,a
1
|t) = 0.5
吃早饭 ⇔ have breakfast
吃
早饭
have
breakfast
a
2
P (s,a
2
|t) = 0.1
吃
早饭
have
breakfast
a
3
P (s,a
3
|t) = 0.1
吃
早饭
have
breakfast
a
4
P (s,a
4
|t) = 0.1
吃
早饭
have
breakfast
a
5
P (s,a
5
|t) = 0.05
吃
早饭
have
breakfast
a
6
P (s,a
6
|t) = 0.05
图 6.9 IBM 模型 3 的词对齐及概率分配
为了解决这个问题,模型 5 在模型中增加了额外的约束。基本想法是,在放置一
个源语言单词的时候检查这个位置是否已经放置了单词,如果没有放置单词,则把
这个放置过程赋予一定的概率,否则把它作为不可能事件。基于这个想法,就需要
在逐个放置源语言单词的时候判断源语言句子的哪些位置为空。这里引入一个变量
v(j, τ
1
[i]−1
,τ
k−1
[i]1
),它表示在放置 τ
[i]k
之前(τ
[i]−1
1
和 τ
k−1
[i]1
已经被放置完了),从源语
言句子的第一个位置到位置 j(包含 j)为止还有多少个空位置。这里,把这个变量
简写为 v
j
。于是,对于 [i] 所对应的源语言单词列表(τ
[i]
)中的第一个单词(τ
[i]1
),
有:
P (π
[i]1
= j|π
[i]−1
1
,τ
l
0
,φ
l
0
,t) = d
1
(v
j
|B(s
j
),v
⊙
i−1
,v
m
−(φ
[i]
−1)) ·
(1 −δ(v
j
,v
j−1
)) (6.24)
6.2 基于繁衍率的模型 191
对于其他单词(τ
[i]k
, 1 < k ≤ φ
[i]
),有:
P (π
[i]k
= j|π
k−1
[i]1
,π
[i]−1
1
,τ
l
0
,φ
l
0
,t)
= d
>1
(v
j
−v
π
[i]k−1
|B(s
j
),v
m
−v
π
[i]k−1
−φ
[i]
+ k) ·(1 −δ(v
j
,v
j−1
)) (6.25)
这里,因子 1 −δ(v
j
,v
j−1
) 是用来判断第 j 个位置是不是为空。如果第 j 个位置为空
则 v
j
= v
j−1
,这样 P (π
[i]1
= j|π
[i]−1
1
,τ
l
0
,φ
l
0
,t) = 0 。这样就从模型上避免了模型 3 和
模型 4 中生成不存在的字符串的问题。这里还要注意的是,对于放置第一个单词的
情况,影响放置的因素有 v
j
,B(s
i
) 和 v
j−1
。此外还要考虑位置 j 放置了第一个源
语言单词以后它的右边是不是还有足够的位置留给剩下的 k −1 个源语言单词。参
数 v
m
−(φ
[i]
−1) 正是为了解决这个问题,这里 v
m
表示整个源语言句子中还有多
少空位置,φ
[i]
−1 表示源语言位置 j 右边至少还要留出的空格数。对于放置非第一
个单词的情况,主要是要考虑它和前一个放置位置的相对位置。这主要体现在参数
v
j
−v
φ
[i]
k−1
上。式(6.25) 的其他部分都可以用上面的理论解释,这里不再赘述。
实际上,模型 5 和模型 4 的思想基本一致,即,先确定 τ
[i]1
的绝对位置,然后再
确定 τ
[i]
中剩余单词的相对位置。模型 5 消除了产生不存在的句子的可能性,不过模
型 5 的复杂性也大大增加了。