一种基于多粒度语义对齐的多语言通用翻译方法

文档序号:27213588发布日期:2021-11-03 15:20阅读:208来源:国知局
一种基于多粒度语义对齐的多语言通用翻译方法

1.本发明涉及机器翻译领域,更具体地,涉及一种基于多粒度语义对齐的多语言通用翻译方法。


背景技术:

2.机器翻译作为自然语言处理的核心任务之一,常年来一直受到众多学者的关注。机器翻译通过理解、分析源语言的含义,在尽可能保持原意的同时将其转换为目标语言。近年来,机器翻译的一种实现方案神经机器翻译不仅在学术领域而且在商业领域都成为了主导范式。相比较于传统的统计机器翻译,神经机器翻译主要受益于分布式词向量以及端到端的模型设计,前者使得细粒度的特征成为可能,后者减少了误差传递,提高了模型的性能。研究者原本关注在两种语言之间的翻译并设计合适的神经机器翻译模型,而在后续的研究中研究者发现,神经机器翻译模型天然适用于多语言的机器翻译,也就是该模型可以在多个语言对之间进行翻译。多语言神经机器翻译的终极目标是在尽可能利用可用的语言资源的前提下,使用同一个模型翻译尽可能多的语言对。
3.预训练语言模型属于自然语言理解领域,是近年来的热点之一。预训练语言模型的原理是创建一个理解语言的黑匣子,然后使用它执行任意的特定任务。预训练语言模型的使用方式一般为使用大量的语料训练模型,使用特定任务的数据集进行微调,最后在特定任务上执行。在多语言预训练语言模型方面,谷歌首席首先根据bert的原理通过扰动编码进行训练,并使用共享词表,发布了mbert模型。lample and conneau在预训练语言模型xlm中,利用tlm的方法进一步提升了模型跨语言的能力,并使用共享子词表在一定程度上使得词向量对齐。conneau等人发布了xlm

r模型,在仅使用扰动编码的训练方式下,通过增加模型参数以提升模型容量的方法,达到了比xlm更好的效果。然而目前并没有高效能高质量利用已有多语言预训练语言模型里的知识的多语言机器翻译模型,具体而言:
4.(1)目前的方法侧重于为每个语言设计单独的编码器或解码器,导致了一个庞大的不方便的模型,或者设计具有大量参数、要求大量平行语料训练的共享编码器和解码器,这两者都很难训练;
5.(2)现有方法中,已有的利用多语言预训练模型的机器翻译模型依旧被设计为两种语言的单语言机器翻译模型,不能利用到训练语言以外的多语言知识;
6.(3)现有方法中,不同语言的向量空间对齐仅考虑到单词向量的对齐,而较少考虑高层特征向量如短语向量、句向量的对齐,这降低了不同语言中同一个意义的短语/句子的语义关联度。


技术实现要素:

7.本发明提供一种基于多粒度语义对齐的多语言通用翻译方法,该方法能迁移、融合多语言预训练语言模型中的知识,在不同粒度上提升不同语言语义特征的关联度,进一步提升多语言通用翻译的效果。
8.为了达到上述技术效果,本发明的技术方案如下:
9.一种基于多粒度语义对齐的多语言通用翻译方法,包括以下步骤:
10.s1:进行语料预处理;
11.s2:通过通用依赖解析器获取通用依赖;
12.s3:对通用依赖进行局部翻译;
13.s4:下游模型训练。
14.进一步地,所述步骤s1的具体过程是:
15.s11:使用mbert相同的预处理方式分别处理s、t以保证单词存在于多语言预训练语言模型的词表中,其中包含且不限于分词、标准化等预处理工作,得到子词序列;
16.s12:在子词序列的前后分别加上[cls]和[sep],得到通用依赖解析器的输入序列,记作e=[e1,e2,

,e
e
],也就是token序列,在单词的层面上,记作x=[x1,x2,

,x
x
]。
[0017]
进一步地,所述步骤s2的具体过程是:
[0018]
s21:把x
i
替换为[mask],此时mbert的句向量表示记作h
θ
(x\{x
i
}),再将x
i
、x
j
同时替换为[mask],此时mbert的句向量表示记作h
θ
(x\{x
i
,x
j
});
[0019]
s22:计算h
θ
(x\{x
i
})和h
θ
(x\{x
i
,x
j
})之间的距离dis(h
θ
(x\{x
i
}),h
θ
(x\{x
i
,x
j
}))表示了x
j
对x
i
的贡献程度,也就是xi对xj的依赖程度,计算出任意一个词对另一个词之间的依赖关系,得到一个词的相关矩阵;
[0020]
s23:通过词的相关矩阵,使用无监督句法分析的基本思路,递归地将x=[x1,x2,

,x
x
]划分为((x<k),(x
k
,(x>k))),划分结果包含两个类,x<k和x≥k,k为最佳分割点,使得这两个类的类内相关性尽可能大,与另一个类的相关性高尽可能小,得到叶子节点都为单词的通用依赖ud。
[0021]
进一步地,所述步骤s3的具体过程是:
[0022]
s31:通过随机数种子判断是否翻译;如果翻译,进入s32,如果不翻译直接将ud作为该模块的输出局部翻译后的通用依赖ud
pt

[0023]
s32:随机选取一种参与预训练语言模型训练但非源语言的对齐语言a;
[0024]
s33:随机选取一个节点,该节点可能是非叶子节点,也可能是叶子节点;
[0025]
s34:如果是叶子节点,使用多语言预训练语言模型mbert将该节点表示的单词翻译为目标语言的单词;如果是非叶子节点,则从属于该节点的所有叶子节点都进行翻译,使得叶子节点都是对齐语言单词,此时将整棵树称为局部翻译后的通用依赖udpt。
[0026]
进一步地,所述步骤s4的具体过程是:
[0027]
s41:通用依赖和局部翻译后的通用依赖都是树形结构,采用treenet对它们的根节点分别进行编码得到句向量特征表示s(ud),s(ud
pt
);
[0028]
s42:通用依赖的句向量特征表示s(ud)输入到翻译器transformer中,输出目标语言文本p,通过p和t计算bleu指标以衡量性能效果;
[0029]
s43:局部翻译后的通用依赖的向量特征表示s(ud
pt
)输入到语言判别器中,输出0/1判断是否为同种语言,也就是判断是否经过了局部翻译;
[0030]
s44:s43和s44中产生的加权误差通过反向传播,使用随机梯度下降算法进行训练。
[0031]
进一步地,步骤s1中,针对不同的语言,进行分词成为词表中的token;步骤s2中,
基于预训练语言模型的扰动编码可以得到词与词之间的依赖程度,从而分析得到句子的句法结构的树形表示,对参与多语言预训练模型训练的任意语言适用,以此句法结构作为通用依赖;步骤s3中,在通用依赖中,随机选取节点进行随机翻译,随机翻译含义为有可能不翻译,保持原状,如果翻译则得到局部翻译后的通用依赖。
[0032]
进一步地,步骤s4中,通用依赖和局部翻译后的通用依赖输入树形结构表示器分别得到通用表示和局部翻译的通用表示;局部翻译的通用表示输入至语言判别器中,判断是否为同一种语言,同时通用表示输入到翻译器中得到目标语言文本,其中翻译器和语言判别器的误差通过加权得到一个总误差,并反向传播到翻译器和语言判别器中进行训练;局部翻译后的通用依赖的向量特征表示输入到语言判别器中,输出0/1判断是否为同种语言,也就是判断是否经过了局部翻译。
[0033]
与现有技术相比,本发明技术方案的有益效果是:
[0034]
本发明针对多语言预训练模型单词向量未对齐的问题,首次提出了局部翻译的方法,在不同粒度上实现语义特征的对齐;利用多语言预训练模型已经学习到的知识,将其融合、迁移到新语言上,是有效面向低资源语料也是有效服务零样本学习的方法;通过多语言预训练模型解析获取到单词之间的依赖,从而实现多语言版本的句法结构分析,以树的结构获得不同语言的通用依赖,消除了不同语言词序不同的影响,进一步提升模型的泛化性,使其成为一个通用翻译模型;验证了多语言预训练模型可以迁移知识到新语言上,具有良好的泛化性和实用性。
附图说明
[0035]
图1是本发明整体训练流程图;
[0036]
图2是翻译流程图。
具体实施方式
[0037]
附图仅用于示例性说明,不能理解为对本专利的限制;
[0038]
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
[0039]
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0040]
下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0041]
如图1

2所示,本实施例中,数据集中的源语言句子记作s,源语言记作l
s
,目标语言句子记作t,目标语言记作l
t
,是否经过局部翻译的标签集合记作h,h={是,否}。对于数据集中的一个数据,即平行句子对记作(s,t)。通用依赖记作ud,经过局部翻译模块后的通用依赖记作ud
pt

[0042]
步骤一、语料预处理:语料预处理:针对不同的语言,进行分词成为词表中的token:
[0043]
s11:使用mbert相同的预处理方式分别处理s、t以保证单词存在于多语言预训练语言模型的词表中,其中包含且不限于分词、标准化等预处理工作,得到子词序列;
[0044]
s12:在子词序列的前后分别加上[cls]和[sep],得到通用依赖解析器的输入序
列,记作e=[e1,e2,

,e
e
],也就是token序列。在单词的层面上,我们记作x=[x1,x2,

,x
x
]。
[0045]
步骤2、通过通用依赖解析器获取通用依赖:基于预训练语言模型的扰动编码可以得到词与词之间的依赖程度,从而分析得到句子的句法结构的树形表示,该方法对参与多语言预训练模型训练的任意语言适用,以此句法结构作为通用依赖:
[0046]
s21:我们把x
i
替换为[mask],此时mbert的句向量表示记作h
θ
(x\{x
i
})。再将x
i
、x
j
同时替换为[mask],此时mbert的句向量表示记作h
θ
(x\{x
i
,x
j
});
[0047]
s22:计算h
θ
(x\{x
i
})和h
θ
(x\{x
i
,x
j
})之间的距离dis(h
θ
(x\{x
i
}),h
θ
(x\{x
i
,x
j
}))表示了x
j
对x
i
的贡献程度,也就是x
i
对x
j
的依赖程度。由此我们可以计算出任意一个词对另一个词之间的依赖关系,得到一个词的相关矩阵;
[0048]
s23:通过词的相关矩阵,我们使用无监督句法分析的基本思路,递归地将x=[x1,x2,

,x
x
]划分为((x<k),(x
k
,(x>k))),划分结果包含两个类,x<k和x≥k。k为最佳分割点,使得这两个类的类内相关性尽可能大,与另一个类的相关性高尽可能小。由此我们可以得到叶子节点都为单词的通用依赖ud。
[0049]
步骤3、对通用依赖进行局部翻译:在通用依赖中,随机选取节点进行随机翻译。随机翻译含义为有可能不翻译,保持原状,如果翻译则得到局部翻译后的通用依赖:
[0050]
s31:通过随机数种子判断是否翻译。如果翻译,进入s32,如果不翻译直接将ud作为该模块的输出局部翻译后的通用依赖ud
pt

[0051]
s32:随机选取一种参与预训练语言模型训练但非源语言的对齐语言a;
[0052]
s33:随机选取一个节点,该节点可能是非叶子节点,也可能是叶子节点;
[0053]
s34:如果是叶子节点,使用多语言预训练语言模型mbert将该节点表示的单词翻译为目标语言的单词。如果是非叶子节点,则从属于该节点的所有叶子节点都进行翻译,使得叶子节点都是对齐语言单词。此时将整棵树称为局部翻译后的通用依赖ud
pt

[0054]
步骤4、下游模型训练:通用依赖和局部翻译后的通用依赖输入树形结构表示器分别得到通用表示和局部翻译的通用表示。局部翻译的通用表示输入至语言判别器中,判断是否为同一种语言,同时通用表示输入到翻译器中得到目标语言文本。其中翻译器和语言判别器的误差通过加权得到一个总误差,并反向传播到翻译器和语言判别器中进行训练:
[0055]
s41:通用依赖和局部翻译后的通用依赖都是树形结构,采用treenet对它们的根节点分别进行编码得到句向量特征表示s(ud),s(ud
pt
)。
[0056]
s42:通用依赖的句向量特征表示s(ud)输入到翻译器transformer中,输出目标语言文本p,通过p和t计算bleu指标以衡量性能效果。
[0057]
s43:局部翻译后的通用依赖的向量特征表示s(ud
pt
)输入到语言判别器中,输出0/1判断是否为同种语言,也就是判断是否经过了局部翻译。
[0058]
s44:s43和s44中产生的加权误差通过反向传播,使用随机梯度下降算法进行训练。
[0059]
相同或相似的标号对应相同或相似的部件;
[0060]
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
[0061]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可
以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1