码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-10-11 12:18:34      阅读:386      评论:0      收藏:0      [点我收藏+]

标签:machine   ocr   sina   data   变换   facebook   词向量   roc   word2vec   

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矩阵。

上 面的学习并没有考虑不同频率的单词会给学习带来很大的影响。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中每一个单词都应用上述步骤,最终得到双语词典。

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

标签:machine   ocr   sina   data   变换   facebook   词向量   roc   word2vec   

原文地址:https://www.cnblogs.com/duye/p/9771649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!