例如从英文到中文的翻译。

Word1 = 英文

Word2, Word2 = 中文

[公式] = translate word from English to Chinese

[公式] = representation schemes (eg, word2vec)

[公式] = mapping between word-vector spaces

~ 表示这两个字是类似的,其向量位置应该是近似的。

问: [公式] 会不会是(近似)线性的?

(如何写代码 验证?)


没有完全理解题主想要问什么,如果使用同样的mapping(脱离上下文),那源端语言的一个单词怎样得到目标端语言的不同单词。

你所说的语言之间的映射,取决于语言之间的相似程度,大部分时候都不是线性的。直观上来说,很多中文/英文词都没有对应的翻译,说明他们在各自的语义空间里的分布是不完全相似的(比如,presentation就很难找一个贴切的中文翻译)。但是用线性关系去近似不同语言之间的embedding是比较方便的,同时,虽然整个embedding space可能没有线性映射关系,但是不妨碍局部存在线性映射(e.g. anchor words)。

比如Adversarial Training for Unsupervised Bilingual Lexicon Induction 里的猫马猪(英西)

Unsupervised Alignment of Embeddings with Wasserstein Procrustes里面的水空气土地(英法)

Learning bilingual word embeddings with (almost) no bilingual data 里面的数字

数字好处在于语义明确,通用性强,缺点是样本少。用字典的好处在于样本多,缺点是可能会在通用性上有一定的妥协,同时对于很多语言可能没有办法构造足够多的平行语料对,Word Translation without Parallel Data里面的CSLS一定程度上缓解了对于语言相似性和平行语料的依赖。

当然了,语言自身也是会不断演化的,选用词向量的时候,也要考虑历史的进程(雾

如果你要用的是基于上下文的表示/内容的表示的话,某种程度上已经超出了word embedding的范畴了,不妨考虑一下BERT。

仅为抛砖引玉


理想情况下, 完美的word2vec的嵌入,对于不同语言,应该是构造了相同的几何结构,不同语言之间的映射就大致可以认为是一个刚体变换,考虑到网路结构差异等因素,大致用 affine transformation也可以完成映射了吧。

不过一般情况可能不会这么理想, word间的距离不会用简单的变换来完成,应该还是个复杂度不高的非线性的变换。


可以认为是。

facebook在2017年的文章 Learning bilingual word embeddings with (almost) no bilingual data 就讨论了这个问题,并且在无监督的情况下把这玩意学习出来了。

后续的工作里还把这个方法用到了无监督的机器翻译上。


会不会是线性

简单的想了一下,如果两种语言的Skip Gram的上下文的分布是一致的,那么就有可能一致。

品味了一下觉得这个先验条件有点强,手头没有统计数据,只是直观上觉得似乎分布是不一致的( @王赟 Maigo 可能有这样的统计数据吧?)

典型例句:

the quick brown fox jumped over the lazy dog

的Skip gram是

([the, brown], quick), ([quick, fox], brown), ([brown, jumped], fox), ...

如果放在中文里,

那只快速的粽狐跳过了那只懒惰的狗

这个句子可以完全映射,但中英文句子有很多情况下,一来语序有变动,二来含义不能一一对应

另外,考虑中英文不使用共现数据集训练,这里涉及另一个问题:如果分布一致,独立的两个向量空间是线性关系吗?

这个问题等价于:用同样一个数据集训练word2vec,只是初始状态不同,最后的结果,这两个向量空间是线性变换关系吗?

粗糙的想了一下从初始状态迭代的流程,觉得是。坐等各位大拿给个严谨的证明

验证

一种方法是用T-SNE降维下来,找到对应词,肉眼看一下

另一种是把中英文对照关系保存下来,然后用Analogical Reasoning分析,Tensorflow教程里有对应的代码。https://www.tensorflow.org/code/tensorflow_models/tutorials/embedding/word2vec.py

也可以用它里面的loss,本质是个nce_loss来检查

另一点是,可以在原来两个网路的nce_loss上,多加一份两个语言之间映射的loss,可以最小化全局线性映射的最优试试


是线性的。

Facebook有个工作是用GAN的方法学习这个映射。


抛个砖头..

我感觉题目的表述有些晦涩,像评论里说的"一词多译",不大理解是什么含义。我在想题主的意思是不是类似这样的:

也就是在两个representation空间之间的对应("翻译")是否保留了vector之间的关系(有点functor的感觉)。简单的看,如果对应只是一个伸缩和旋转的变换的话,那只需要检验这一点(涉及到怎么近似的问题,当然情况应该没这么简单,需要某种alignment)。对于一个比较良好的局部,比如一点的邻域被映射到对应的邻域(「相似」的点),那或许可以考虑某种相似性的度量。


线性,猜的。

去年有篇论文,证明了如果单词是均匀分布的,训练出来的词向量就是线性的,现实中单词是z分布的。


推荐阅读:
相关文章