8.2 基于层次短语的模型 245
真实的情况会更加复杂。对于一个规则的源语言端,可能会有多个不同的目标
语言端与之对应。比如,如下规则的源语言端完全相同,但是译文不同:
X → ⟨ X
1
大幅度 下降 了, X
1
have drastically fallen ⟩
X → ⟨ X
1
大幅度 下降 了, X
1
have fallen drastically ⟩
X → ⟨ X
1
大幅度 下降 了, X
1
has drastically fallen ⟩
输入字符串:
进口 和 出口 大幅度 下降 了
匹配规则:
X → ⟨ X
1
大幅度 下降 了, X
1
have drastically fallen ⟩
X → ⟨ X
1
大幅度 下降 了, X
1
have fallen drastically ⟩
X → ⟨ X
1
大幅度 下降 了, X
1
has drastically fallen ⟩
Span[0,3] 下的翻译假设:
X:imports and exports
S:the import and export
替换 X
1
后生成的翻译假设:
X:imports and exports have drastically fallen
X:the import and export have drastically fallen
X:imports and exports have drastically fallen
X:the import and export have drastically fallen
X:imports and exports has drastically fallen
X:the import and export has drastically fallen
组合
图 8.12 不同规则目标语端及变量译文的组合
这也就是说,当匹配规则的源语言部分“X
1
大幅度 下降 了”时会有三个译文
可以选择。而变量 X
1
部分又有很多不同的局部翻译结果。不同的规则译文和不同的
变量译文都可以组合出一个局部翻译结果。图8.12展示了这种情况的实例。
假设有 n 个规则的源语言端相同,规则中每个变量可以被替换为 m 个结果,对
于只含有一个变量的规则,一共有 nm 种不同的组合。如果规则含有两个变量,这
种组合的数量是 nm
2
。由于翻译中会进行大量的规则匹配,如果每个匹配的源语言
端都考虑所有 nm
2
种译文的组合,解码速度会很慢。
在层次短语系统中,会进一步对搜索空间剪枝。简言之,此时并不需要对所有
nm
2
种组合进行遍历,而是只考虑其中的一部分组合。这种方法也被称作立方剪枝
(Cube Pruning)。所谓“立方”是指组合译文时的三个维度:规则的目标语端、第一
个变量所对应的翻译候选、第二个变量所对应的翻译候选。立方剪枝假设所有的译
文候选都经过排序,比如,按照短语翻译概率排序。这样,每个译文都对应一个坐
标,比如,(i,j,k) 就表示第 i 个规则目标语端、第一个变量的第 j 个翻译候选、第
二个变量的第 k 个翻译候选的组合。于是,可以把每种组合看作是一个三维空间中
的一个点。在立方剪枝中,开始的时候会看到 (0,0, 0) 这个翻译假设,并把这个翻译
假设放入一个优先队列中。之后每次从这个优先队里中弹出最好的结果,之后沿着
三个维度分别将坐标加 1,比如,如果优先队列弹出 (i,j , k),则会生成 (i + 1,j, k)、
(i,j + 1,k) 和 (i,j,k + 1) 这三个新的翻译假设。之后,计算出它们的模型得分,并压