技术领域
[0001] 本发明属于计算机技术中的人工智能领域,尤其是人工智能中的自然语言处理和机器翻译领域,采用预训练模型Chinese‑BERT和数据增强算法,构建了一个“中‑英”机器翻译系统,该系统通过自注意力机制捕捉上下文的时态信息,能够有效的提升机器翻译模型在“中‑英”翻译时条件时态的翻译效果。
相关背景技术
[0002] 翻译,是一种将一个事物转化为另一个事物的过程,通常情况下是针对序列到序列的转化。自然语言处理(Natural Language Processing,NLP)领域主要关注的翻译问题是自然语言之间的翻译。翻译软件可以将用户输入的一段汉语自动转化为对应的英语表达,像这样的利用计算机进行自然语言翻译的技术被称作是机器翻译(Machine Translation,MT),其中待翻译的语言被称为源语言,翻译结果所对应的语言被称为目标语言。在没有特别标注的情况下,本说明书下来的内容中提到的“翻译”均指自然语言之间的翻译。
[0003] 时态信息是自然语言中的重要组成部分。在语法中,时态(tense)用于表示事情发生的时间,通常借由动词的各种形式来反映。
[0004] 英文中的条件时态(condition tense)是一种特殊的时态,它在使用频率上远不及现在时、过去时和将来时,但是其有着非常重要的作用。条件时态通常与虚拟语气同时出现,虚拟语气表示说话时人的主观愿望、猜疑、建议或与事实不符的假设等,不表示客观存在的事实。条件时态的句子大多使用情态动词,包括could、should、would和might。
[0005] 对于中文而言,不像现在时、过去时和将来时那般,可以用一些时间概念的辅助词来表达,条件时态则是通过一些与愿望、猜疑、建议或假设相关的词来表述一种虚拟语气,但是,很多时候单看一个中文句子很难判断是否应该使用条件时态,即使其包含了与虚拟语气相关的词。所以,想要正确地判断一个中文句子是否在翻译为英文时使用条件时态,需要充分理解其上下文的信息。
[0006] 神经网络模型Transformer能够利用注意力机制有效的对文本进行上下文信息的编码,而基于它演化而来的预训练模型则具有更强的信息表达能力。近年来随着人工智能技术的飞速发展,使用机器来代替人进行翻译工作也逐渐成为了现实。但是一些优秀的翻译模型却往往忽略了时态的翻译效果,尤其是像条件时态这样“样本少但十分重要”的时态。
具体实施方式
[0016] 为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
[0017] 本发明中涉及如下几项关键技术:利用自注意力机制对英文的上下文时态信息进行编码、利用预训练模型Chinese‑BERT构建一个条件时态分类器、设计了一个条件时态数据增强算法以及基于篇章级机器翻译模型HAN‑NMT构建的条件时态翻译器和非条件时态翻译器。
[0018] 1.利用自注意力机制对英文上下文时态信息进行编码
[0019] 自注意力机制是一种全局编码的方法,特点在于能够引入全局上下文信息。从广义上讲,注意力机制是一种获取序列化表示的上下文信息的手段。我们注意到从时态的角度看,英文中的条件时态可能与上下文的时态有一定的关系。举例来讲,条件时态往往在讲述一段事实的某处使用。这段事实通常会具有某种时态特征,通常是一致性特征,即使用条件时态的句子,其上下文通常会使用相同或类似的时态,比如现在时或过去时。
[0020] 所以,我们作出如下假设:使用条件时态的句子,其上下文的时态信息具有一定的特征。而注意力机制能够自动地帮助我们获得一段序列的上下文关系,因此,我们提出了一种基于自注意力机制的方法来引入上下文的时态信息。具体做法如下:
[0021] 对于文档中的第i个中文句子 定义其上下文时态信息 为:
[0022]
[0023] 其中,ctxSize为一个整型变量,用来定义上下文信息的范围大小,默认为3。为句子 前ctxSize个句子和后ctxSize个句子的时态信息;函数
SelfAttention用于计算 的自注意力编码结果。它们的具体定义为:
[0024]
[0025]
[0026] 其中Wq、Wk、Wv为三个线性变换矩阵, 的作用是防止softmax的分布过于陡峭。ti为句子 的时态信息,是一个由0和1组成的四维向量。我们设presi、pasti、futi和condi为四个0‑1变量,分别代表一般现在时、一般过去时、一般将来时和条件时态,当句子使用了上述的任意时态时,所对应的0‑1变量就设置为1,否则为0。
[0027] ti=(presi,pasti,futi,condi)
[0028] 2.基于Chinese‑BERT构建的条件时态分类器
[0029] 我们设计的条件时态分类器如图1所示,主要包括三个部分:1)一个中文预训练模型Chinese‑BERT,我们将该模型在上一节中构造的数据集上进行微调。2)在上文中所设计的上下文时态信息编码模块TenseAttention。3)一个线性分类神经网络,它接受预训练模型的输出,取[CLS]向量和TenseAttention的输出相连接作为分类的输入,输出一个二分类结果。
[0030] 我们用如下一组公式来对条件时态分类器的整个过程做一个形式化的定义:
[0031] 设 为第i个待分类的中文句子,其在预训练模型Chinese‑BERT上的隐层表示为:
[0032]
[0033] 我们取 的第一个向量作为线性神经网络的输入,记为
[0034]
[0035] 随后将 与 作连接处理,一同输入至线性分类层Linear,其输i
出为一个二维向量Output:
[0036]
[0037] 接着使用softmax函数对Outputi进行归一化处理,得到最终的分类得分Scorei:
[0038]
[0039] 此时 和 即可看作是句子 被分类为正样本/负样本的概率,因此取 和 中的较大值所对应的分类标签作为 的分类结果。
[0040] 我们使用交叉熵作为损失函数,用如下公式计算,其中 为句子 的真实分类标签,正样本为1,负样本为0:
[0041]
[0042] 3.条件时态数据增强算法
[0043] 我们的条件时态增强算法包含两部分,一是将非条件时态的句子转换为条件时态句子;另一个则相反,是将条件时态句子转换为非条件时态句子。这两个部分将IWSLT14数据集增强为两个数据集——条件时态增强数据集和非条件时态增强数据集,下面我们将介绍这两个数据集的增强算法。
[0044] 条件时态增强数据集CondData的定义及转换算法如下,其中0≤i≤N‑1,N为IWSLT14数据集所包含的“中‑英”平行语料数据的数量:
[0045]
[0046] 图2展示了构建CondData数据集的具体算法步骤,文字描述如下:
[0047] 1)对于IWSLT14数据集中的任一“中‑英”句对,记为
[0048] 2)判断 是否已经使用条件时态,若是,则跳转至第7步。
[0049] 3)判断 是否包含情态动词can/will/shall/may,若否,则跳转至第5步。
[0050] 4)将 中的情态动词按照如下规则替换:can→could,will→would,shall→should,may→might。
[0051] 5)使用NLTK工具对 进行分词和词性标注处理,获取 中的动词集合VERB。
[0052] 6)从VERB中随机选取一个非助动词(do/does/doing/done/did)的动词verb,使用NLTK工具获得verb的动词原型 从could/would/should/might中随机选取一个情态动词modal,将 中的verb替换为
[0053] 7)记此时的 为 将句对 加入至数据集CondData中。
[0054] 非条件时态增强数据集NoCondData的定义如下,其中0≤i≤N‑1,N为IWSLTl4数据集所包含的“中‑英”平行语料数据的数量:
[0055]
[0056] 与CondData相比,NoCondData的构建则较为简单,只需要将IWSLTl4中所有英文句子中的情态动词could/would/should/might替换为can/will/shall/may即可。不过,需要额外注意的一个细节是,由于英文中会出现类似“I’d like to go shopping.”这样包含“’d”的句子,其中的“’d”其实是“would”的缩写形式,所以需要额外的将所有的“’d”替换为“will”。
[0057] 4.条件时态翻译器&非条件时态翻译器
[0058] 基于3.中得到的两个数据集——条件时态增强数据集和非条件时态增强数据集,我们使用篇章级翻译模型HAN‑NMT分别在它们之上进行训练,得到两个翻译模型——条件时态翻译器和非条件时态翻译器,分别记为CondTranslator和NoCondTranslator。
[0059] 综上所述,我们最终的“中‑英”条件时态机器翻译系统的总体结构如图3所示,模型主要由三个部分组成:1)在2.中提出的条件时态分类器,并引入1.中所提出的上下文时态信息,记为TenseClassifierWithCtx,2)在4.中提出的条件时态翻译器CondTranslator和非条件时态翻译器NoCondTranslator,3)融合模块Fusioner,用于整合CondTranslator和NoCondTranslator的翻译结果。
[0060] 整个解决方案的处理步骤如下:
[0061] 1)对于一个中文文档中的每个中文句子 先将其输入给条件时态分类器TenseClassifier,设分类器的输出为X。
[0062] 2)若X=True,则将 输入给条件时态翻译器CondTranslator,得到使用条件时态的英文语句
[0063] 3)若X=False,则将 输入给非条件时态翻译器NoCondTranslator,得到不使用条件时态的英文语句
[0064] 4)融合模块Fusioner整合步骤2)或3)的输出,作为 加入到最终翻译结果的英文文档中。
[0065] 需要 指出的是 ,为了 加快计算 速度 ,在所有的 步骤开 始之前 ,TenseClassiferWithCtx中的TenseAttention层会从头至尾对文档进行一次完整的扫描,利用TMV‑annotator工具计算出测试集中每一个中文句子的上下文时态信息TenseCtx,并将其缓存至TenseCtxCache中,如此一来在后续数据流经过TenseAttention时模型不需要每次都调用TMV‑annotator去作时态分析和计算,只需要根据索引i去缓存TenseCtxCache中读取对应的TenseCtx即可。