From 7a2c703abb6aea1a776b39e000220e13beb2305a Mon Sep 17 00:00:00 2001 From: higepi Date: Mon, 26 Sep 2022 13:27:41 +0200 Subject: [PATCH] w2v article --- README.md | 6 +- Word_embedding.docx | Bin 117056 -> 123600 bytes wordvec.ipynb | 287 ++++++++++++++++++++++++++++++++++++++++++++ wordvec.py | 9 +- 4 files changed, 300 insertions(+), 2 deletions(-) create mode 100644 wordvec.ipynb diff --git a/README.md b/README.md index 79f9a33..4c0af60 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ -TP de Word Embedding pour la revue 3EI. +# TP de Word Embedding pour la revue 3EI. +## Méthodes de plongement lexical +CBOW et Skig-gram + +## Utilisation de Gensim pour Word2Vec https://radimrehurek.com/gensim/auto_examples/tutorials/run_word2vec.html#sphx-glr-auto-examples-tutorials-run-word2vec-py \ No newline at end of file diff --git a/Word_embedding.docx b/Word_embedding.docx index eefa2ad0291ad081771f704d137ccfe6607f6ece..b225d94d9708b361c74c10731c177e0939e50586 100644 GIT binary patch delta 41886 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 OGX|i5)n@@AaQ_Dgyxva$ delta 35705 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 Jm%8Avz&|(Y+0Os~ diff --git a/wordvec.ipynb b/wordvec.ipynb new file mode 100644 index 0000000..cb60083 --- /dev/null +++ b/wordvec.ipynb @@ -0,0 +1,287 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import gensim.downloader as api\n", + "wv = api.load('word2vec-google-news-300')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Affichage des premiers mots du dictionnaire" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "word #0/3000000 is \n", + "word #1/3000000 is in\n", + "word #2/3000000 is for\n", + "word #3/3000000 is that\n", + "word #4/3000000 is is\n" + ] + } + ], + "source": [ + "# Affichage de quelques mots du vocabulaire\n", + "for index, word in enumerate(wv.index_to_key):\n", + " if index == 5:\n", + " break\n", + " print(f\"word #{index}/{len(wv.index_to_key)} is {word}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 1.25976562e-01 2.97851562e-02 8.60595703e-03 1.39648438e-01\n", + " -2.56347656e-02 -3.61328125e-02 1.11816406e-01 -1.98242188e-01\n", + " 5.12695312e-02 3.63281250e-01 -2.42187500e-01 -3.02734375e-01\n", + " -1.77734375e-01 -2.49023438e-02 -1.67968750e-01 -1.69921875e-01\n", + " 3.46679688e-02 5.21850586e-03 4.63867188e-02 1.28906250e-01\n", + " 1.36718750e-01 1.12792969e-01 5.95703125e-02 1.36718750e-01\n", + " 1.01074219e-01 -1.76757812e-01 -2.51953125e-01 5.98144531e-02\n", + " 3.41796875e-01 -3.11279297e-02 1.04492188e-01 6.17675781e-02\n", + " 1.24511719e-01 4.00390625e-01 -3.22265625e-01 8.39843750e-02\n", + " 3.90625000e-02 5.85937500e-03 7.03125000e-02 1.72851562e-01\n", + " 1.38671875e-01 -2.31445312e-01 2.83203125e-01 1.42578125e-01\n", + " 3.41796875e-01 -2.39257812e-02 -1.09863281e-01 3.32031250e-02\n", + " -5.46875000e-02 1.53198242e-02 -1.62109375e-01 1.58203125e-01\n", + " -2.59765625e-01 2.01416016e-02 -1.63085938e-01 1.35803223e-03\n", + " -1.44531250e-01 -5.68847656e-02 4.29687500e-02 -2.46582031e-02\n", + " 1.85546875e-01 4.47265625e-01 9.58251953e-03 1.31835938e-01\n", + " 9.86328125e-02 -1.85546875e-01 -1.00097656e-01 -1.33789062e-01\n", + " -1.25000000e-01 2.83203125e-01 1.23046875e-01 5.32226562e-02\n", + " -1.77734375e-01 8.59375000e-02 -2.18505859e-02 2.05078125e-02\n", + " -1.39648438e-01 2.51464844e-02 1.38671875e-01 -1.05468750e-01\n", + " 1.38671875e-01 8.88671875e-02 -7.51953125e-02 -2.13623047e-02\n", + " 1.72851562e-01 4.63867188e-02 -2.65625000e-01 8.91113281e-03\n", + " 1.49414062e-01 3.78417969e-02 2.38281250e-01 -1.24511719e-01\n", + " -2.17773438e-01 -1.81640625e-01 2.97851562e-02 5.71289062e-02\n", + " -2.89306641e-02 1.24511719e-02 9.66796875e-02 -2.31445312e-01\n", + " 5.81054688e-02 6.68945312e-02 7.08007812e-02 -3.08593750e-01\n", + " -2.14843750e-01 1.45507812e-01 -4.27734375e-01 -9.39941406e-03\n", + " 1.54296875e-01 -7.66601562e-02 2.89062500e-01 2.77343750e-01\n", + " -4.86373901e-04 -1.36718750e-01 3.24218750e-01 -2.46093750e-01\n", + " -3.03649902e-03 -2.11914062e-01 1.25000000e-01 2.69531250e-01\n", + " 2.04101562e-01 8.25195312e-02 -2.01171875e-01 -1.60156250e-01\n", + " -3.78417969e-02 -1.20117188e-01 1.15234375e-01 -4.10156250e-02\n", + " -3.95507812e-02 -8.98437500e-02 6.34765625e-03 2.03125000e-01\n", + " 1.86523438e-01 2.73437500e-01 6.29882812e-02 1.41601562e-01\n", + " -9.81445312e-02 1.38671875e-01 1.82617188e-01 1.73828125e-01\n", + " 1.73828125e-01 -2.37304688e-01 1.78710938e-01 6.34765625e-02\n", + " 2.36328125e-01 -2.08984375e-01 8.74023438e-02 -1.66015625e-01\n", + " -7.91015625e-02 2.43164062e-01 -8.88671875e-02 1.26953125e-01\n", + " -2.16796875e-01 -1.73828125e-01 -3.59375000e-01 -8.25195312e-02\n", + " -6.49414062e-02 5.07812500e-02 1.35742188e-01 -7.47070312e-02\n", + " -1.64062500e-01 1.15356445e-02 4.45312500e-01 -2.15820312e-01\n", + " -1.11328125e-01 -1.92382812e-01 1.70898438e-01 -1.25000000e-01\n", + " 2.65502930e-03 1.92382812e-01 -1.74804688e-01 1.39648438e-01\n", + " 2.92968750e-01 1.13281250e-01 5.95703125e-02 -6.39648438e-02\n", + " 9.96093750e-02 -2.72216797e-02 1.96533203e-02 4.27246094e-02\n", + " -2.46093750e-01 6.39648438e-02 -2.25585938e-01 -1.68945312e-01\n", + " 2.89916992e-03 8.20312500e-02 3.41796875e-01 4.32128906e-02\n", + " 1.32812500e-01 1.42578125e-01 7.61718750e-02 5.98144531e-02\n", + " -1.19140625e-01 2.74658203e-03 -6.29882812e-02 -2.72216797e-02\n", + " -4.82177734e-03 -8.20312500e-02 -2.49023438e-02 -4.00390625e-01\n", + " -1.06933594e-01 4.24804688e-02 7.76367188e-02 -1.16699219e-01\n", + " 7.37304688e-02 -9.22851562e-02 1.07910156e-01 1.58203125e-01\n", + " 4.24804688e-02 1.26953125e-01 3.61328125e-02 2.67578125e-01\n", + " -1.01074219e-01 -3.02734375e-01 -5.76171875e-02 5.05371094e-02\n", + " 5.26428223e-04 -2.07031250e-01 -1.38671875e-01 -8.97216797e-03\n", + " -2.78320312e-02 -1.41601562e-01 2.07031250e-01 -1.58203125e-01\n", + " 1.27929688e-01 1.49414062e-01 -2.24609375e-02 -8.44726562e-02\n", + " 1.22558594e-01 2.15820312e-01 -2.13867188e-01 -3.12500000e-01\n", + " -3.73046875e-01 4.08935547e-03 1.07421875e-01 1.06933594e-01\n", + " 7.32421875e-02 8.97216797e-03 -3.88183594e-02 -1.29882812e-01\n", + " 1.49414062e-01 -2.14843750e-01 -1.83868408e-03 9.91210938e-02\n", + " 1.57226562e-01 -1.14257812e-01 -2.05078125e-01 9.91210938e-02\n", + " 3.69140625e-01 -1.97265625e-01 3.54003906e-02 1.09375000e-01\n", + " 1.31835938e-01 1.66992188e-01 2.35351562e-01 1.04980469e-01\n", + " -4.96093750e-01 -1.64062500e-01 -1.56250000e-01 -5.22460938e-02\n", + " 1.03027344e-01 2.43164062e-01 -1.88476562e-01 5.07812500e-02\n", + " -9.37500000e-02 -6.68945312e-02 2.27050781e-02 7.61718750e-02\n", + " 2.89062500e-01 3.10546875e-01 -5.37109375e-02 2.28515625e-01\n", + " 2.51464844e-02 6.78710938e-02 -1.21093750e-01 -2.15820312e-01\n", + " -2.73437500e-01 -3.07617188e-02 -3.37890625e-01 1.53320312e-01\n", + " 2.33398438e-01 -2.08007812e-01 3.73046875e-01 8.20312500e-02\n", + " 2.51953125e-01 -7.61718750e-02 -4.66308594e-02 -2.23388672e-02\n", + " 2.99072266e-02 -5.93261719e-02 -4.66918945e-03 -2.44140625e-01\n", + " -2.09960938e-01 -2.87109375e-01 -4.54101562e-02 -1.77734375e-01\n", + " -2.79296875e-01 -8.59375000e-02 9.13085938e-02 2.51953125e-01]\n" + ] + } + ], + "source": [ + "# Conversion du mot en vecteur\n", + "vec_king = wv['king']\n", + "print(vec_king)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarités entre les mots" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('lumber', 0.678311824798584), ('timber', 0.6622092127799988), ('softwoods', 0.649677038192749)]\n", + "[('fleur', 0.6820620894432068), ('jardin', 0.6616703271865845), (\"c'est_le\", 0.6514866352081299)]\n" + ] + } + ], + "source": [ + "# N mots les plus proches du mot cible\n", + "print(wv.most_similar(positive=['wood'], topn=3))\n", + "print(wv.most_similar(positive=['bois'], topn=3))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'wood'\t'pine'\tSimilarité : 0.59\n", + "'wood'\t'leaf'\tSimilarité : 0.30\n", + "'wood'\t'plank'\tSimilarité : 0.26\n" + ] + } + ], + "source": [ + "# Similarité entre des paires de mots\n", + "pairs = [\n", + " ('wood', 'pine'), \n", + " ('wood', 'leaf'),\n", + " ('wood', 'plank') \n", + "]\n", + "for w1, w2 in pairs:\n", + " print('%r\\t%r\\tSimilarité : %.2f' % (w1, w2, wv.similarity(w1, w2)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le modèle a été entrainé en anglais donc il ne fonctionne pas dans les autres langues" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exemple d'opération sur les mots" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('mother', 0.8671472072601318)]\n" + ] + } + ], + "source": [ + "# Opérations sur les mots\n", + "vec_father = wv['father']\n", + "vec_man = wv['man']\n", + "vec_woman = wv['woman']\n", + "\n", + "result = wv.most_similar(positive=(vec_father - vec_man + vec_woman), topn=1)\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On obtient bien le mot \"maman\" " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On peut également jouer au jeu de l'intru" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iron\n" + ] + } + ], + "source": [ + "print(wv.doesnt_match(['wood', 'oak', 'tree', 'iron', 'leaf']))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.4 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.4" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "2ef431f6525756fa8a44688585fa332ef3b2e5fcfe8fe75df35bbf7028a8b511" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/wordvec.py b/wordvec.py index 1d83cf6..439273f 100644 --- a/wordvec.py +++ b/wordvec.py @@ -8,4 +8,11 @@ wv = api.load('word2vec-google-news-300') # print(f"word #{index}/{len(wv.index_to_key)} is {word}") print(wv.most_similar(positive=['car'], topn=5)) -print(wv.most_similar(positive=['voiture'], topn=5)) \ No newline at end of file +print(wv.most_similar(positive=['voiture'], topn=5)) + +vec_father = wv['father'] +vec_man = wv['man'] +vec_woman = wv['woman'] + +result = wv.most_similar(positive=(vec_father - vec_man + vec_woman), topn=1) +print(result) \ No newline at end of file