facebookresearch / MUSE

A library for Multilingual Unsupervised or Supervised word Embeddings
Other
3.19k stars 552 forks source link

How to align word embeddings of 3 languages? #20

Closed fallingstar621 closed 6 years ago

fallingstar621 commented 6 years ago

Thanks for releasing supervised word embeddings for 30 languages, aligned in a single vector space. My question is how would you do alignment of 3 languages? For example, how to align French, German and English in a single vector space? Your examples seem to only show how to align two languages. Thanks in advance!

aconneau commented 6 years ago

@fallingstar621 We used a pivot (which was the English embedding space in this case) and mapped all the other languages to that space. Note that we only lost ~4 points of word translation accuracy (e.g for German-French) by using a pivot, compared to aligning directly German-French for instance. Also, we only kept the languages for which we had good translation accuracy to English (> ~40/50%).

fallingstar621 commented 6 years ago

@aconneau Thanks for the prompt response. I notice that by default the input and output embeddings of the target language (say English) will be different. I checked the other issues and it seems that this is because of normalization. So to map all the other languages to the pivot language, we should avoid using normalization just to keep the embedding of the pivot language the same across all the other languages. Is that true? Will the normalization affect the translation accuracy?

Another question I have is, when using unsupervised adversarial training, I notice that by default "Use iterative Procrustes refinement" is set to false. How much will this affect the alignment of the embeddings? And how much more time it would take when applying the refinement?

Thanks in advance!

aconneau commented 6 years ago

@fallingstar621 1) The normalization of the target embeddings (say English) is the same if you translate from French to English or from German to English etc. So we just aligned all the languages to the target language. Since we are using the cosine similarity for NN/CSLS the normalization does not change the translation accuracy. In the near future, we will remove this normalization when saving the output src/tgt embeddings to avoid confusion.

2) iterative Procrustes refinement can have a large effect on translation accuracy, as shown in Table 1: https://arxiv.org/pdf/1710.04087.pdf . We will set the default argument back to True. Thanks for your remark!

fallingstar621 commented 6 years ago

@aconneau Thank you for the clarification! Cheers and Keep up the good work!