17.4 篇章级翻译 599
17.4 篇章级翻译
目前大多数机器翻译系统是句子级的。由于缺少了对篇章上下文信息的建模,
需要依赖上下文的翻译场景中,模型的翻译效果总是不尽人意。篇章级翻译的目的
就是对篇章上下文信息进行建模,进而改善机器翻译在整个篇章上的翻译质量。篇
章级翻译的概念在早就已经出现
[1101]
,随着近几年神经器翻译取得了巨大进展,
篇章级神经机器翻译也成为了重要的方向
[1102, 1103]
。基于此,本节将对篇章级神经机
器翻译的若干问题展开讨论。
17.4.1 篇章级翻译的挑战
“篇章”在这里是指一系列连续的段落或句子所构成的整体,从形式和内容上,
篇章中的各个句子间都具有一定的连贯性和一致性
[142]
。这些联系主要体现在衔接以
及连贯两个方面。其中衔接体现在显性的语言成分和结构上,包括篇章中句子间的
语法和词汇的联系,而连贯体现在各个句子之间的逻辑和语义的联系上。因此,篇
章级翻译就是要将这些上下文之间的联系考虑在内,从而生成比句子级翻译更连贯
和准确的翻译结果。实例17.1就展示了一个使用篇章信息进行机器翻译的实例。
实例 17.1 上下文句子:我/上周/针对/这个/问题/做出/解释//咨询//他的/意见/
待翻译句子:他//同意/我的/看法/
句子级翻译结果:He also agrees with me .
篇章级翻译结果:And he agreed with me .
不过由于不同语言的特性多种多样,上下文信息在篇章级翻译中的作用也不尽
相同。比如,在德语中名词是分词性的,因此在代词翻译的过程中需要根据其先行
词的词性进行区分,而这种现象在其它不区分名词词性的语言中是不存在的。这意
味着篇章级翻译在不同的语种中可能对应不同的上下文现象。
正是这种上下文现象的多样性,使评价篇章级翻译模型的性能变得相对困难。
前篇章级机器翻译主要针对一些常见的上下文现象进行优化,比如代词翻译、省略、
连接和词汇衔接等,而第四章介绍的 BLEU 通用自动评价指标通常对这些上下文
依赖现象不敏感,因此篇章级翻译需要采用一些专用方法来对这些具体现象进行评
价。
在统计机器翻译时代就已经有大量的研究工作专注于篇章信息的建模,这些工
作大多针对某一具体的上下文现象,比如,篇章结构
[1104, 1105, 1106]
代词回指
[1107, 1108, 1109]
词汇
[1110, 1111, 1112, 1113]
和篇连接
[1114, 1115]
等。区于篇章级统计器翻译,篇
级神经机器翻译不需要针对某一具体的上下文现象构造相应的特征,而是通过翻译
模型从上下文句子中抽取并融合上下文信息。通常情况下,篇章级机器翻译可以采
用局部建模的手段将前一句或者周围几句作为上下文送入模型。如果篇章翻译中需
要利用长距离的上下文信息,也可以使用全局建模的手段直接从篇章的所有句子中
提取上下文信息。近几年多数研究工作都在探索更有效的局部建模或全局建模方法,
600 Chapter 17. 多模态、多层次机器翻译 肖桐 朱靖波
主要包括改进输
[1116, 1117, 1118, 1119]
、多编码器结构
[490, 1120, 1121]
、层次结构
[1122, 1123, 1124, 1125]
及基于缓存的方法
[1126, 1127]
等。
此外,篇章级机器翻译面临的另外一个挑战是数据稀缺。篇章级机器翻译所需要
的双语数据需要保留篇章边界,数量相比于句子级双语数据要少很多。除了在之前提
到的端到端方法中采用预训练或者参数共享的手段(见第十六章)也可以采用新的
建模手段来缓解数据稀缺问题。这类方法通常将篇章级翻译流程进行分离:先训练一
个句子级的翻译模型,再通过一些额外的模块来引入上下文信息。比如,在句子级翻
译模型的推断过程中,通过在目标端结合篇章级语言模型引入上下文信息
[1128, 1129, 1130]
或者基于句子级的翻译结果,使用两阶段解码等手段引入上下文信息,进而对句子
级翻译结果进行修正
[1131, 1132, 1133]
17.4.2 篇章级翻译的评价
BLEU 等自动评价指标能够在一定程度上反映译文的整体质量,但是并不能
效地评估篇章级翻译模型的性能。这是由于很多标准测试集中需要篇章上下文的情
况相对较少。而且,n-gram 的匹配很难检测到一些具体的语言现象,这使得研究人
员很难通过 BLEU 得分来判断篇章级翻译模型的效果。
为此,研究人员总结了机器翻译任务中存在的上下文现象,并基于此设计了相
应的自动评价指标。比如针对篇章中代词的翻译问题,首先借助词对齐工具确定源
语言中的代词在译文和参考答案中的对应位置,然后通过计算译文中代词的准确率
和召回率等指标对代词翻译质量进行评价
[1107, 1134]
针对篇章中的词汇衔接,使用词汇
Lexical Chain
1
来获取能够反映词汇衔接质量的分数,然后通过加权的方式
常规的 BLEU METEOR 等指标结合在一起
[1135, 1136]
针对篇章中的连接词,使用候
选词典和词对齐工具对源文中连接词的正确翻译结果进行计数,计算其准确率
[1137]
除了直接对译文打分,也有一些工作针对特有的上下文现象手工构造了相应的
测试套件用于评价翻译质量。测试套件中每一个测试样例都包含一个正确翻译的结
果,以及多个错误结果,一个理想的翻译模型应该对正确的翻译结果评价最高,排
在所错误之上, 时就根据型是挑选正确结果评估
性能。这种方法可以很好地衡量翻译模型在某一特定上下文现象上的处理能力,比
如词义消歧
[1138]
、代词翻译
[1117, 1139]
和一些衔接问题
[1132]
等。但是该方法也存在使用范
围受限于测试集的语种和规模的缺点,因此扩展性较差。
17.4.3 篇章级翻译的建模
在理想情况下,篇章级翻译应该以整个篇章为单位作为模型的输入和输出。然
而由于现实中篇章对应的序列过长,因此直接建模整个篇章序列难度很大,这使得
主流的序列到序列模型很难直接使用。一种思路是采用能够处理超长序列的模型对
篇章序列建模,比如,使用第十五章中提到的处理长序列的 Transformer 模型就是一
1
词汇链指篇章中语义相关的词所构成的序列。
17.4 篇章级翻译 601
种的解决方法
[545]
。不过,这类模型并不针对篇章级翻译的具体问题,因此并不是篇
章级翻译中的主流方法。
现在常见的端到端做法还是从句子级翻译出发,通过额外的模块来对篇章中的
上下文句子进行表示,然后提取相应的上下文信息并融入到当前句子的翻译过程中。
形式上,篇章级翻译的建模方式如下:
P ( Y |X) =
T
Y
i=1
P ( Y
i
|X
i
,D
i
) (17.2)
其中,X Y 分别为源语言篇章和目标语言篇章,X
i
Y
i
分别为源语言篇章和目
标语言篇章中的第 i 个句子,T 表示篇章中句子的数目。为了简化问题,这里假设源
语言和目标语言具有相同的句子数目 T ,而且两个篇章间句子是顺序对应的。D
i
示翻译第 i 个句子时所对应的上下文句子集合,理想情况下,D
i
中包含源语言篇
和目标语言篇章中所有除第 i 句之外的句子,但实践中通常仅使用其中的部分句
作为上下文。
上下文范围的选取是篇章级神经机器翻译需要着重考虑的问题,比如上下文句
子的多
[
489, 1122, 1140]
,是否考虑目标端上下文句
[1116, 1140]
等。此外,不同的上下文
围也对应着不同的建模方法,接下来将对一些典型的方法进行介绍,包括改进输入
形式
[1116, 1117, 1118, 1119]
多编码器结构
[490, 1120, 1121]
层次结构模型
[489, 1141, 1142]
以及基于缓存的
方法
[1126, 1127]
1. 输入形式
一种简单的方法是直接复用传统的序列到序列模型,将篇章中待翻译句子与其
上下文句子拼接后作为模型输入。如实例17.2示,这种做法不需要改动模型结构,
操作简单,适用于大多数神经机器翻译系统
[1116, 1140, 1143]
。但是由于过长的序列会导致
模型难以训练,通常只会选取局部的上下文句子进行拼接,比如只拼接源语言端前
一句或者周围几句
[1116]
此外,也可以引入目标语言端的上下文
[1117, 1140, 1143]
在解码时,
将目标语言端的当前句与上下文拼接在一起,同样会带来一定的性能提升。但是过
大的窗口会造成推断速度的下降
[1140]
,因此通常只考虑前一个目标语言句子。
实例 17.2 传统模型训练输入:
源语言:你/看到///
目标语言:Do you see them ?
改进后模型训练输入:
源语言:他们/// <sep> /看到///
目标语言:Do you see them ?
其他改进输入的做法相比于拼接的方法要复杂一些,首先需要对篇章进行处理,
602 Chapter 17. 多模态、多层次机器翻译 肖桐 朱靖波
得到词汇链
2
或者篇章嵌入等信息
[1118, 1119]
,然后将这些信息与当前句子一起送入模型
中。目前,这种预先提取篇章信息的方法是否适合机器翻译还有待论证。
2. 多编码器结构
另一种思路是对传统的编码器-解码器框架进行更改,引入额外的编码器来对上
下文句子进行编码,该结构被称为多编码器结构
[491, 1144]
这种结构最早被应用在基于
循环神经网络的篇章级翻译模型中
[1117, 1120, 1145, 1146]
,后期证明 Transformer 模型上同
样适用
[490, 1121]
。图17.16展示了一个基于 Transformer 模型的多编码器结构,基于源语
言当前待翻译句子的编码表 h 和上下文句子的编码表示 h
pre
,模型首先通过注意
力机制提取句子间上下文信息 d
d = Attention(h,h
pre
,h
pre
) (17.3)
其中,h Query(查询)h
pre
Key(键) Value(值)然后通过门控机制将待翻
译句子中每个位置的编码表示和该位置对应的上下文信息进行融合,具体方式如下:
λ
t
= σ([h
t
;d
t
]W
λ
+ b
λ
) (17.4)
e
h
t
= λ
t
h
t
+ (1 λ
t
)d
t
(17.5)
其中,
e
h 为融合了上下文信息的最终序列表示结果,
e
h
t
为其第 t 个位置的表示。W
λ
b
λ
为模型可学习的参数,σ Sigmoid 数,用来获取门控权值 λ除了在编码
端融合源语言上下文信息,也可以直接用类似机制在解码器内完成源语言上下文信
息的融合
[1121]
编码器 编码器
h
pre
h
前一个句子 当前句子
注意力机制
d
解码器
注意力机制
目标语言句子(位置 j 之前)
...
...
目标语言句子
17.16 多编码器结构
[491]
此外,由于多编码器结构引入了额外的模块,模型整体参数量大大增加,同时增
2
词汇链指篇章中语义相关的词所构成的序列。
17.4 篇章级翻译 603
加了模型训练的难度。为此,一些研究人员提出使用句子级模型预训练的方式来初始
化模型参数
[1120, 1121]
,或者将两个编码器的参数进行共享来降低模型复杂度
[490, 1145, 1146]
3. 层次结构模型
多编码器结构通过额外的编码器对前一句进行编码,但是当处理更多上下文句
子的时候仍然面临效率低下的问题。为了捕捉更大范围的上下文,可以采用层次结
构来对更多的上下文句子进行建模。层次结构是一种有效的序列表示方法,而且人
类语言中天然就具有层次性,比如,句法树、篇章结构树等。类似的思想也成功的应
用在基于树的句子级翻译模型中(见第八章和第十五章)
17.17描述了一个基于层次注意力的模型结构
[489]
首先通过翻译模型的编码器
获取前 K 个句子的词序列编码表示 ( h
pre1
,...,h
preK
)然后针对前文每个句子的词序
列编码表示 h
prek
使用词级注意力提取当前句子内部的注意力信息 s
k
然后在这 K
个句子级上下文信 s = (s
1
,. ..,s
K
) 的基础上,使用句子级注意力提取篇章上下文
信息 d。由于上下文信息 d 的获取涉及到词级和句子级两个不同层次的注意力操作,
因此将该过程称为层次注意力。实际上,这种方法并没有使用语言学的篇章层次结
构。但是,句子级注意力在归纳统计意义上的篇章结构,因此这种方法也可以捕捉
不同句子之间的关系。
h
prek
h
pre1
q
s
q
w
d
t
s
1
s
k
......
h
t
e
h
t
前几个句子 当前句子
17.17 层次注意力结构
[489]
为了增强模型的表示能力,层次注意力中并未直接使用当前句子第 t 个位置的
编码表示 h
t
作为注意力操作的 Query(查询)而是通过两个线性变换分别获取词级
注意力和句子级注意力的查询
q
w
q
s
定义如公式
(
17.6)(17.7)其中 W
w
W
s
b
w
b
s
分别是两个线性变换的权重和偏置。
q
w
= h
t
W
w
+ b
w
(17.6)
q
s
= h
t
W
s
+ b
s
(17.7)
604 Chapter 17. 多模态、多层次机器翻译 肖桐 朱靖波
之后,分别计算词级和句子级注意力模型。需要注意的是句子级注意力添加了一个
前馈全连接网络子层 FFN。其具体计算方式如下:
s
k
= WordAttention(q
w
,h
prek
,h
prek
) (17.8)
d
t
= FFN(SentAttention(q
s
,s, s)) (17.9)
其中,WordAttention(·) SentAttention(·) 都是标准的自注意力模型。在得到最终的
上下文信 d 后,模型同样采用门控机制(如公式(17.5) 公式(17.4))与 h 行融
合来得到一个上下文相关的当前句子表示
e
h
通过层次注意力,模型可以在词级和句子级两个维度从多个句子中提取更充分
的上下文信息,除了使用编码器,也可以使用解码器来获取目标语言的上下文信息。
为了进一步编码整个篇章的上下文信息,研究人员提出选择性注意力来对篇章的整
体上下文有选择地进行信息提取
[1122]
此外,也有研究人员使用循环神经网络
[1141]
忆网络
[1123]
、胶囊网络
[1124]
和片段级相对注意力
[1125]
等结构来对多个上下文句子进行
上下文信息提取。
4. 基于缓存的方法
除了以上提到的建模方法,还有一类基于缓存的方法
[1126, 1127]
这类方法最大的特
点在于将篇章翻译看作一个连续的过程,即依次翻译篇章中的每一个句子,该过程
中通过一个额外的缓存来记录一些相关信息,且在每个句子的推断过程中都使用这
个缓存来提供上下文信息。17.18描述了一种基于缓存的篇章级翻译模型结构
[1127]
在这里,翻译模型于循环神网络(见第章),但是这种方同样适用包括
Transformer 在内的其他神经机器翻译模型。
模型中篇章上下文的建模依赖于缓存的读和写操作。缓存的写操作指的是:按
照一定规则,将翻译历史中一些译文单词对应的上下文向量作为键,将其解码器端
的隐藏状态作为值,共同写入到缓存中。而缓存的读操作是指将待翻译句子中第 t
单词的上下文向 C
t
作为 Query(查询),与缓存中的所有键分别进行匹配,并根
据其匹配程度进行带权相加,最后得到当前待翻译句子的篇章上下文信息 d该方法
中,解码器端隐藏状态 s
t
与对应位置的上下文信息 d
t
的融合也是基于门控机制。
实上,由于该方法中缓存空间是有限的,其内容的更新也存在一定的规则:在当前
句子的翻译结束后,如果单词 y
t
的对应信息未曾写入缓存,则写入其中的空槽或者
替换最久未使用的键值对;如果 y
t
已作为翻译历史存在于缓存中,则将对应的键值
对按照以下规则进行更新:
k
i
=
k
i
+ c
t
2
(17.10)
v
i
=
v
i
+ s
t
2
(17.11)
17.4 篇章级翻译 605
其中,i 表示 y
t
在缓存中的位置,k
i
v
i
分别为缓存中对应的键和值。这种方法
存的都是目标语言历史的词级表示,因此能够解决一些词汇衔接的问题,比如词汇
一致性和一些搭配问题,产生更连贯的翻译结果。
缓存
d
t
读取
s
t
e
s
t
融合
C
t
匹配
y
t1
y
t
17.18 基于缓存的解码器结构
[1127]
17.4.4 在推断阶段结合篇章上下文
前面介绍的方法主要是对篇章中待翻译句子的上下文句子进行建模,通过端到
端的方式对上下文信息进行提取和融合。由于篇章级双语数据相对稀缺,这种复杂
的篇章级翻译模型很难得到充分训练,通常可以采用两阶段训练或参数共享的方式
来缓解这个问题。此外,由于句子级双语数据更为丰富,一个自然的想法是以高质
量的句子级翻译模型为基础,通过在推断过程中结合上下文信息来构造篇章级翻译
模型。
在句子级翻译模型中引入目标语言端的篇章级语言模型是一种结合上下文信息
的常用手段
[1128, 1129, 1130]
。相比于篇章级双语数据,篇章级单语数据更容易获取。在
语数据稀缺的情况下,通过引入目标语言端的篇章级语言模型可以更充分的利用这
些单语数据,比如,可以把这个语言模型与翻译模型做插值,也可以将其作为重排
序阶段的一种特征。
另一种方法是两阶段翻译。这种方法不影响句子级翻译模型的推断过程,而是
在完成翻译后使用额外的模块进行第二阶段的翻译
[1131, 1132]
。如图17.19示,这种两
阶段翻译的做法相当于将篇章级翻译的问题进行了分离和简化:在第一阶段翻译中
使用句子级翻译模型完成对篇章中某个句子的翻译,为了进一步地引入篇章上下文
信息,第二阶段的翻译过程在第一阶段翻译结果的基础上,利用两次注意力操作,
合并引入源语言和目标语言的篇章上下文信息和当前句子信息。该方法适用于篇章
级双语数据稀缺的场景。基于类似的思想,也可以使用后编辑的做法对翻译结果进
606 Chapter 17. 多模态、多层次机器翻译 肖桐 朱靖波
行修正。区别于两阶段翻译的方法,后编辑的方法无需参考源语言信息,只利用目
标语言端的上下文信息对译文结果进行修正
[1133]
解码器 解码器
编码器 编码器
前文
源语言句子
句子级翻译结果
一阶段翻译
注意力机制
注意力机制
前馈神经网络
解码器
×N
基于上下文的修正结果
二阶段翻译
17.19 两阶段翻译