【Machine Translation】仅由单语数据生成双语词典

Word translation without parallel data

考虑在只有单语数据的情况下,如何生成双语词典。

基于假设:

相似的上下文中的单词具有相似的语义;在两个不同语言的词向量空间中,两个具有相似语义的单词在各自空间中具有相似的相对空间位置,因此只要学习一个线性映射就可以实现大致的对齐。

实现步骤:

A:对于语言X和Y,首先,各自训练词向量矩阵(300维)。

​ 这里学习词向量用的是facebook的fastText而不是Word2vec。

B:学习旋转矩阵W,实现近似对齐。这里用到的方法是对抗学习

​ b1:首先学习一个判别器,使用的方法是多层感知机,判别器的作用是区分在矩阵W作用下X的词向量仍然属于X语言,Y词向量依然属于Y语言,使得这个概率尽量大;

​ b2:而矩阵W的作用是,使得判别器尽可能区分不了WX与Y,即经W变换后的X词向量,和Y的词向量差别最小。

​ 综合来说,即最小化下面两个目标函数:

C:优化W矩阵。

扫描二维码关注公众号,回复: 3529485 查看本文章

上 面的学习并没有考虑不同频率的单词会给学习带来很大的影响。X中频率小的单词可能在向Y的映射中根本就没有一个匹配,这样在B中训练W时,频率的问题可能带来很大的影响,因此在C步骤中我们消除这种影响:考虑频度最高的单词(如5k),用\(min |WX - Y|\)的方法建立一个暂时的假的词典,利用特定提高方法(使用的是Procrustes algorithm),不断迭代,这个过程不断更新词典和W,得到更新的W。实验发现,这个做法的提高并不是很大。

D:进行最终的翻译。

这里的翻译并不是指用W直接旋转X后得到Y,而是重新定义了单词与单词之间的距离度量,称作CSLS。CSLS的做法是定义一个二部图,即:对于X每个单词,找到Y中与它距离最近的K个单词,作为它的邻居,Y亦然。之后,定义新的距离度量为:

这样,最终根据这个度量最小找到X在Y中的翻译单词到底是哪个。对X中每一个单词都应用上述步骤,最终得到双语词典。

猜你喜欢

转载自www.cnblogs.com/duye/p/9771649.html