例如從英文到中文的翻譯。

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分佈的。


推薦閱讀:
相關文章