Skip to content

Instantly share code, notes, and snippets.

@davidalbertonogueira
Last active October 16, 2018 14:08
Show Gist options
  • Save davidalbertonogueira/122c80e3262124373fc9439c78cd8799 to your computer and use it in GitHub Desktop.
Save davidalbertonogueira/122c80e3262124373fc9439c78cd8799 to your computer and use it in GitHub Desktop.
MUSE cross lingual embeddings
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Loading word embeddings"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import io\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def load_vec(emb_path, nmax=50000):\n",
" vectors = []\n",
" word2id = {}\n",
" with io.open(emb_path, 'r', encoding='utf-8', newline='\\n', errors='ignore') as f:\n",
" next(f)\n",
" for i, line in enumerate(f):\n",
" word, vect = line.rstrip().split(' ', 1)\n",
" vect = np.fromstring(vect, sep=' ')\n",
" assert word not in word2id, 'word found twice'\n",
" vectors.append(vect)\n",
" word2id[word] = len(word2id)\n",
" if len(word2id) == nmax:\n",
" break\n",
" id2word = {v: k for k, v in word2id.items()}\n",
" embeddings = np.vstack(vectors)\n",
" return embeddings, id2word, word2id"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"src_path = '/private/home/aconneau/projects/MUSE/dumped/debug/8gqhcyvoto/vectors-en.txt'\n",
"tgt_path = '/private/home/aconneau/projects/MUSE/dumped/debug/8gqhcyvoto/vectors-es.txt'\n",
"nmax = 50000 # maximum number of word embeddings to load\n",
"\n",
"src_embeddings, src_id2word, src_word2id = load_vec(src_path, nmax)\n",
"tgt_embeddings, tgt_id2word, tgt_word2id = load_vec(tgt_path, nmax)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Get nearest neighbors"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def get_nn(word, src_emb, src_id2word, tgt_emb, tgt_id2word, K=5):\n",
" print(\"Nearest neighbors of \\\"%s\\\":\" % word)\n",
" word2id = {v: k for k, v in src_id2word.items()}\n",
" word_emb = src_emb[word2id[word]]\n",
" scores = (tgt_emb / np.linalg.norm(tgt_emb, 2, 1)[:, None]).dot(word_emb / np.linalg.norm(word_emb))\n",
" k_best = scores.argsort()[-K:][::-1]\n",
" for i, idx in enumerate(k_best):\n",
" print('%.4f - %s' % (scores[idx], tgt_id2word[idx]))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nearest neighbors of \"cat\":\n",
"1.0000 - cat\n",
"0.7322 - cats\n",
"0.6453 - kitten\n",
"0.6381 - dog\n",
"0.6218 - kittens\n"
]
}
],
"source": [
"# printing nearest neighbors in the source space\n",
"src_word = 'cat'\n",
"get_nn(src_word, src_embeddings, src_id2word, src_embeddings, src_id2word, K=5)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nearest neighbors of \"cat\":\n",
"0.6201 - gato\n",
"0.5380 - perro\n",
"0.4922 - gorila\n",
"0.4809 - mapache\n",
"0.4751 - conejo\n"
]
}
],
"source": [
"# printing nearest neighbors in the target space\n",
"src_word = 'cat'\n",
"get_nn(src_word, src_embeddings, src_id2word, tgt_embeddings, tgt_id2word, K=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Visualize multilingual embeddings"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Variance explained: 0.07\n"
]
}
],
"source": [
"from sklearn.decomposition import PCA\n",
"pca = PCA(n_components=2, whiten=True) # TSNE(n_components=2, n_iter=3000, verbose=2)\n",
"pca.fit(np.vstack([src_embeddings, tgt_embeddings]))\n",
"print('Variance explained: %.2f' % pca.explained_variance_ratio_.sum())"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"def plot_similar_word(src_words, src_word2id, src_emb, tgt_words, tgt_word2id, tgt_emb, pca):\n",
"\n",
" Y = []\n",
" word_labels = []\n",
" for sw in src_words:\n",
" Y.append(src_emb[src_word2id[sw]])\n",
" word_labels.append(sw)\n",
" for tw in tgt_words:\n",
" Y.append(tgt_emb[tgt_word2id[tw]])\n",
" word_labels.append(tw)\n",
"\n",
" # find tsne coords for 2 dimensions\n",
" Y = pca.transform(Y)\n",
" x_coords = Y[:, 0]\n",
" y_coords = Y[:, 1]\n",
"\n",
" # display scatter plot\n",
" plt.figure(figsize=(10, 8), dpi=80)\n",
" plt.scatter(x_coords, y_coords, marker='x')\n",
"\n",
" for k, (label, x, y) in enumerate(zip(word_labels, x_coords, y_coords)):\n",
" color = 'blue' if k < len(src_words) else 'red' # src words in blue / tgt words in red\n",
" plt.annotate(label, xy=(x, y), xytext=(0, 0), textcoords='offset points', fontsize=19,\n",
" color=color, weight='bold')\n",
"\n",
" plt.xlim(x_coords.min() - 0.2, x_coords.max() + 0.2)\n",
" plt.ylim(y_coords.min() - 0.2, y_coords.max() + 0.2)\n",
" plt.title('Visualization of the multilingual word embedding space')\n",
"\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAqkAAAIWCAYAAAB0uhRnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAMTQAADE0B0s6tTgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XecFdX9//H3h6VJU2QBkVWKAgZB\nkNhQUcQu9orGguWnftUokcQYo0hETUzEWKIxVowmggVjI2pQMCq2KCiKCiogICCIKEVxgfP743Ov\nM3P33i2ysLPL6/l4zGPvzJw5c2bu3d3PPW0shCAAAAAgTerVdAEAAACAXASpAAAASB2CVAAAAKQO\nQSoAAABShyAVAAAAqUOQCgAAgNQhSAUAAEDqEKSizjKzUWb2wAY612Azm7uhzp17vppgZo3M7CEz\n+8bMKj3hspkNN7OX12fZqouZzTKzsyqbxsw6mlkws20z6zX+PuWTKeN+NV2OODN7wMxGbeBz9s/c\ni/rVnO/LZja8nP37xX9natPvBLAhEaSi1jGzp83soQL7/mRm72VWL5J0/oYrWUK1nbvAP+8xknas\njvzXwQmS+kvaXVK7fAkq+mddm5jZtpmApmPOrp0l/aPAYWl4n5B+10s6vKYLAaRNtX57BDaQ+yTd\nZ2abhRCWZjeaWT1JJ0m6UZJCCF/XUPnW+7lDCN9K+nZ9nqMSOkv6IITwXoUp67AQwqJy9qXhfUoN\nMzNJ9UMIpTVdljQJISyv6TIAaURNKmqjxyV9J+m4nO37SWqrTK1WbpO7mQ0xs5lmtsrM5mZr+HKb\naDPbEs2AZra7mU0ws6VmtsjMHjSz4kIFjJ870+Qb8iyDM/vPNLMpZrbCzGab2YjYeYdL+pmk07LH\nxfKMdy+ob2Z/NLMvzOxbM/uPmXWJ7R+eqdW8wMzmm9niTHor5xqamtldZvaVmS03s0fNrG32+iRd\nKWmvTLkm5rsHkvaQdGUmzayc/QXLYmatzewfmfu9OPO6VTllzV7fRZk8l5rZZZkuCbdnuiR8bGb7\n5x5T6H3LY0bm58zM9QzPHFOwS0Ce92lUpmb8ajNbYmafm9nFOcfsZ2YfZd7Hp8zs1/F7Z2YTzezq\nnGPiXQ4amdnfzWxO5jP1lpkNKHTv8pT5ZjO7L7Z+r5mVmlnTzPqumc9D9jO6i5m9mvm9mmNml+Tk\n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\nG8yMhct01G2TNGT0lB8C1dI1a/WXFz5efyeNz8f5ySfSPfdE67n9KIuKpAMPjNZfesnnLs21aJF0\nxx0+P2vW8897AJydr7WoyAPII49MjjKPN21vskky33nzKnNFSbl9Lq+7Luov+vXX0h//WPjY3PlP\nmzSJXt99d7Ifaty++ybLPmYuQRjOAAAgAElEQVRM2VkEFixIdqsoT+4sB9de62WXvJ/wb39bfnoA\ndRJBKoANpmNxU+3dtbWenjpfQ0ZP0XelazRk9BS9NvPL9XfSXXdNTuWU7ZNYr5506qll0w8b5oOH\nJK8pHTzYa1wHDvTgaLvtfKL7c87xR3dmTZ4snXii18Zut50Hj4cfLnXtKv33v1G6Ll2i161bJ7sj\njB8v7b57NFArt79pPkcfnazZfOUVP8eBB/q5y+tvmvto0t128+vccUcfJFaopnfzzZMDskLwgL9L\nF+9z26ePD8iq7AT6hx0m7bJLtP7mm57XQQf5Ndx7b7SvVSvpoosqly+AWo2BUwA2mAZF9XTjoN6S\npKenztfTU32k9ZBOBZqVq8vgwWVHue+/f7IZPqtXL68ZPPXUaLDQJ5/4kqt+nj+h33/vNZD5aiFb\ntJB+97toPfvkpfh8o6++Gr0ePtxnBShPw4YeDO63X9Q/9vPPfZGkc8+Vbr89mT7rwgs9AMwGw998\nE42cP/hgrxUu1JR/5ZXSl196v9asjz/2parMfH7TgQOlKVN826JF0rPPJtO1aeNPyGrTpurnAFDr\nUJMKYINqUFRPI4/vldh23j7brN+TnnJK2YAy32M5s444wvt2Xn651zZutpk33zdv7iPPTz5Zuv/+\n5GM/jztOGjnSB2t16+a1jUVFPrq8Z0+v/XvnnbKjz6+7zqe56tIlGUBWxW67+eNJjzzSp7hq0sS3\njR3r5YrbYovodatWHhSffLK/btTIay5HjPBrK2/QkZk/5nXSJL+XXbr4eRs39m4ORxxR/j3OteWW\n0muv+XRY++7rNdL163tgv9NOHrC//77Ut28VbgyA2szC+h6luYGUlJSEufERuwBSqXTNWg0ZPeWH\nWlRJGtiznW4c1FsNivje/KN8+aUHh/FBX5JUWupdDuJPxpowITnYCwA2IDObF0LI04xVFs39ADaY\neIA6sGc7jTy+l4Y+9M4PASuB6o80YYJ3T9hnHx+k1bKlD1x65plkv9a99iJABVBrEKQC2GBmLV6h\n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\nJrNXL++3+t57yZrYSy+Vfv/7aL1/f+nFF5Nla9LE70tRkec9aZI0frx04IFek5y9xr59Pc0rr0Tl\na9RIeuMNL4/k5+7Uqey9/+lPfZaCN9+MtplJn3wSpV+82Gt0490dmjb1a9tkE79vCxZIkydHNb7D\nhkkjRkTp27b1Gtevv5ZefdXfV0nq3NnvzSablC0b0s/M5oUQSiqVuLLRbNoXalIBYOMxaFCyhu2I\nI0JYujTav3p1CKNHh7BiRQjvvptM26FDCHPnRmmvuCK5/2c/i/bl1qRKITzxhO9bs8ZrVuP7JkxI\nljNek9ihQ9nruPXW5PEPPBDtW7MmhOOOi/Y1ahTCokXR/tya1C5dvPYza9Uq/7nzzsmayM8/j9LM\nnh1Cy5bR/mOOifbl1qRKIdx8c7T/7LOT++69N9p36aXJfX37Js8bQgjPPBPCnDn+evFir83Npj/k\nkKj8Ifg9j+d3yy1l7yVqB1WhJpWBUwCAWmXtWunpp6P1Jk2ke+7x/qVZRUXSCSf463//O3n8RRdJ\n7dtH65dd5v0mv/kmf/q4fv2kww7z1/XqSQcdJD3zTLR//vyqXctTT0Wv69WTHnvMl6zZs6PXq1Z5\nf83jj8+f14gRyRkDGjaUvvgiWeNZVOT9UuOKiqLXzz7r97denhErHTpI558frR9yiHTHHdF6/Nqf\neCJ57L33eh/euAMPjF4//7zX/GYtXiyddFK0ntvoO26cdMEFZcuIuoUgFWWtXCndeKP09tvSBx/4\nX4uvvvK/eFtuKe22m/R//+ftRXHxkQB77y099JD029/6X6sVK7zn+4gR3kaV7eF/553+V3jLLaVT\nTvH2nvp5PpaLF3v72bhx3vt/xQqpZUtvJzrhBD+2QYPkMYMHS/fdF63PnOltd7feKk2b5unphQ/U\nOl9+KS1bFq137y5tvnnh9PEmc0nafvvkeuPG0jbbeNOz5N0Eli3zATu5dtwxud6sWXJ91apyi15u\n2daulR59tPz08aA1V79+5ecv+Z/BmTML57F8ud/f1q3L7uvVKxm8lnft8fMWF0vduhU+Z75yvvGG\nL4WUdx9QdxCkoqwlSzy4zFVa6h2nZsyQHnjAqx5yv5JnLVrknbbif3leflnaf3/pued8GOu//hXt\nmzXLA9h588pOLPjKK9JRR3mecV984Xk995x/nX/yyfx/WbMuvTTZKS1e7QKg1ljXoRS5I+urkmfL\n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\nREQkdv4/wadfMFHnJzwAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2e98102190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# get 5 random input words\n",
"src_words = ['university', 'love', 'history', 'tennis', 'research', 'conference']\n",
"tgt_words = ['universidad', 'amor', 'historia', u'tenis', u'investigación', 'conferencia']\n",
"\n",
"# assert words in dictionaries\n",
"for sw in src_words:\n",
" assert sw in src_word2id, '\"%s\" not in source dictionary' % sw\n",
"for tw in tgt_words:\n",
" assert tw in tgt_word2id, '\"%s\" not in target dictionary' % sw\n",
"\n",
"plot_similar_word(src_words, src_word2id, src_embeddings, tgt_words, tgt_word2id, tgt_embeddings, pca)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.14"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment