Word2vec basic.py FR: Difference between revisions
From Algolit
Line 4: | Line 4: | ||
| Type: || Exploration Algolittéraire | | Type: || Exploration Algolittéraire | ||
|- | |- | ||
− | | Données: || [[ | + | | Données: || [[PrèsdeSaussure|PrèsdeSaussure]] |
|- | |- | ||
| Technique: || [[Sur le plongement lexical|plongement lexical]] | | Technique: || [[Sur le plongement lexical|plongement lexical]] | ||
Line 39: | Line 39: | ||
** '''Algolit adaption''': visualisation des mises à jour de calcul de similarité cosinus | ** '''Algolit adaption''': visualisation des mises à jour de calcul de similarité cosinus | ||
** '''Algolit inspection''': logfile.txt | ** '''Algolit inspection''': logfile.txt | ||
− | * Étape 6: | + | * Étape 6: Visualiser les plongements. |
** '''Algolit adaption''': sélectionner 3 mots à inclure dans le graphique | ** '''Algolit adaption''': sélectionner 3 mots à inclure dans le graphique | ||
===Source=== | ===Source=== | ||
Le script word2vec_basic.py fournit une option pour télécharger un jeu de données à partir de [http://mattmahoney.net/dc/text8.zip la page d'accueil de Matt Mahoney]. Il s'avère être un document en texte brut, sans ponctuation ni saut de ligne. | Le script word2vec_basic.py fournit une option pour télécharger un jeu de données à partir de [http://mattmahoney.net/dc/text8.zip la page d'accueil de Matt Mahoney]. Il s'avère être un document en texte brut, sans ponctuation ni saut de ligne. | ||
− | Pour les tests que nous voulions faire avec le script, nous avons plutôt opté pour un extrait de littérature académique: [[ | + | Pour les tests que nous voulions faire avec le script, nous avons plutôt opté pour un extrait de littérature académique: [[PrèsdeSaussure|PrèsdeSaussure]]. Le dataset contient 424.811 mots au total dont 24.651 mots sont uniques. |
− | Avant que nous puissions utiliser le texte de [[ | + | Avant que nous puissions utiliser le texte de [[PrèsdeSaussure|PrèsdeSaussure]] comme matériel de formation, nous devions supprimer toute la ponctuation du fichier. Pour ce faire, nous avons écrit un petit script python [[text-punctuation-clean-up.py]]. Le script enregistre une version *dépouillée* du livre d'origine sous un autre nom de fichier. |
===wordlist.txt=== | ===wordlist.txt=== | ||
Line 112: | Line 112: | ||
===training-words.txt=== | ===training-words.txt=== | ||
− | + | Lot de formation de 64 mots, avec une taille de vecteur de 128x20, exporté sous le nom training-words.txt. | |
<pre> | <pre> | ||
Line 133: | Line 133: | ||
===training-window-words.txt=== | ===training-window-words.txt=== | ||
− | + | Les 128 mots-fenêtre connectés, un à gauche, un à droite, avec une taille de vecteur de 128x20, exporté en tant que training-window-words.txt. | |
<pre> | <pre> | ||
Line 146: | Line 146: | ||
==logfile.txt== | ==logfile.txt== | ||
− | + | Le journal d'entraînement, exporté sous le nom logfile.txt. | |
<pre> | <pre> |
Latest revision as of 15:30, 2 November 2017
Type: | Exploration Algolittéraire |
Données: | PrèsdeSaussure |
Technique: | plongement lexical |
Développé par: | une équipe de chercheurs dirigée par Tomas Mikolov chez Google, Claude Lévi-Strauss, Algolit |
Ceci est une version annotée du script de base word2vec. Le code est basé sur un tutoriel Word2Vec fourni par Tensorflow.
Historique
Word2vec est constitué de modèles associés utilisés pour générer des vecteurs à partir de mots (aussi appelé plongement lexical). C'est un réseau neuronal à deux couches, produit par une équipe de chercheurs dirigée par Tomas Mikolov chez Google.
word2vec_basic_algolit.py
La structure du script word2vec annoté est la suivante:
- Étape 1: Télécharger les données.
- Algolit step 1: Lire les données du fichier texte brut
- Algolit inspection: wordlist.txt
- Étape 2: Créer un dictionnaire et remplacer les mots rares par un symbole UNK.
- Algolit inspection: counted.txt
- Algolit inspection: dictionary.txt
- Algolit inspection: data.txt
- Algolit inspection: disregarded.txt
- Algolit adaption: reversed-input.txt
- Étape 3: Fonction pour générer un lot de formation pour le modèle skip-gram
- Étape 4: Construire et former un modèle de skip-gram.
- Algolit inspection: big-random-matrix.txt
- Algolit adaption: sélectionnez votre propre ensemble de mots-test
- Étape 5: Commencer la formation.
- Algolit inspection: training-words.txt
- Algolit inspection: training-window-words.txt
- Algolit adaption: visualisation des mises à jour de calcul de similarité cosinus
- Algolit inspection: logfile.txt
- Étape 6: Visualiser les plongements.
- Algolit adaption: sélectionner 3 mots à inclure dans le graphique
Source
Le script word2vec_basic.py fournit une option pour télécharger un jeu de données à partir de la page d'accueil de Matt Mahoney. Il s'avère être un document en texte brut, sans ponctuation ni saut de ligne. Pour les tests que nous voulions faire avec le script, nous avons plutôt opté pour un extrait de littérature académique: PrèsdeSaussure. Le dataset contient 424.811 mots au total dont 24.651 mots sont uniques.
Avant que nous puissions utiliser le texte de PrèsdeSaussure comme matériel de formation, nous devions supprimer toute la ponctuation du fichier. Pour ce faire, nous avons écrit un petit script python text-punctuation-clean-up.py. Le script enregistre une version *dépouillée* du livre d'origine sous un autre nom de fichier.
wordlist.txt
D'un texte continu à une liste de mots, exporté en tant que wordlist.txt.
[u'Introduction', u'saussure', u'today', u'Carol', u'sanders', u'Why', u'still', u'today', u'do', u'we', u'\ufb01nd', u'the', u'name', u'of', u'ferdinand', u'de', u'saussure', u'featuring', u'prominently', u'in', u'volumes', u'published', u'not', u'only', u'on', u'linguistics', u'but', u'on', u'a', u'multitude', u'of', u'topics', ... ]
counted.txt
D'une liste de mots à une liste avec la structure [(mot, valeur)], exporté comme counted.txt.
Counter({u'the': 22315, u'of': 16396, u'and': 8271, u'a': 8246, u'to': 7797, u'in': 7314, u'is': 5983, u'as': 4143, u'that': 3586, u'it': 2629, u'e': 2500, u'The': 2478, u's': 2332, u'language': 2281, u'saussure': 2201, u'which': 2101, u'by': 1962, u'this': 1944, u'on': 1937, u'be': 1808, u'or': 1751, u'r': 1713, u'not': 1689, u'an': 1680, ... })
dictionary.txt
Dictionnaire inversé, une liste des 5000 mots les plus courants (= taille du vocabulaire), accompagnés d'un numéro d'index, exportés en dictionnaire.txt.
{0: 'UNK', 1: u'the', 2: u'of', 3: u'and', 4: u'a', 5: u'to', 6: u'in', 7: u'is', 8: u'as', 9: u'that', 10: u'it', 11: u'e', 12: u'The', 13: u's', 14: u'language', 15: u'saussure', 16: u'which', 17: u'by', 18: u'this', 19: u'on', 20: u'be', 21: u'or', 22: u'r', 23: u'not', 24: u'an', ... }
data.txt
L'objet data est créé, les textes originaux où les mots sont remplacés par des numéros d'index, exportés en tant que data.txt.
[1169, 15, 1289, 3020, 1427, 3697, 354, 1289, 269, 68, 1021, 1, 345, 2, 234, 34, 15, 4416, 0, 6, 3052, 293, 23, 64, 19, 31, 38, 19, 4, 0, 2, 3877, ... ]
disregarded.txt
Liste des mots ignorés, qui ne correspondent pas à la taille du vocabulaire, exportés en tant que disregarded.txt.
[u'prominently', u'multitude', u'Volumes', u'titles', u'lee', u'poynton', u'intriguing', u'Plastic', u'glasses', u'fathers', u'kronenfeld', u'Afresh', u'Impact', u'titles', u'excite', u'premature', u'\u2018course', u'Sole', u'brilliant', u'precocious', u'centuries', u'examines', u'tracing', u'barely', u'praise', ... ]
reversed-input.txt
Version inversée de l'ensemble de données initial, où tous les mots ignorés sont remplacés par UNK (non connu), exporté en tant que reversed-input.txt.
Introduction saussure today Carol sanders Why still today do we find the name of ferdinand de saussure featuring UNK in volumes published not only on linguistics but on a UNK of topics UNK with UNK such as culture and text discourse and methodology in Social research and cultural studies UNK and UNK 2000 or the UNK UNK UNK and church UNK UNK 1996 ...
big-random-matrix.txt
Une grande matrice aléatoire est créée, avec une taille de vecteur de 5000x20, exportée en tant que big-random-matrix.txt.
[[ 7.91555882e-01 4.78600025e-01 -7.13676214e-01 2.30826855e-01 6.61124229e-01 2.52689123e-01 6.37347698e-02 2.63915062e-01 7.84061432e-01 6.69055700e-01 3.71650457e-01 -3.47790241e-01 -4.34857845e-01 -9.00017262e-01 5.75044394e-01 -2.66819954e-01 2.29521990e-01 -1.87541008e-01 7.47018099e-01 -8.54661465e-01] [ 1.86723471e-01 -5.84969044e-01 -7.00650215e-01 7.50902653e-01 2.52289057e-01 -9.68446016e-01 -1.12547159e-01 -9.01058912e-01 -5.95885992e-01 3.08442831e-01 3.84899616e-01 7.09214926e-01 9.58799362e-01 -8.78485441e-01 -3.27231169e-01 6.92137718e-01 8.31190109e-01 1.67458773e-01 2.05923319e-01 -8.14627409e-01] [ -6.24799252e-01 9.01598454e-01 7.46447325e-01 5.45922041e-01 4.28986549e-02 -2.75697231e-01 5.12938023e-01 -4.38443661e-01 7.13398457e-01 -9.77021456e-01 -6.00349426e-01 -1.46302462e-01 -9.75251198e-02 -1.80129766e-01 4.47291374e-01 -9.00330782e-01 8.20701122e-02 9.37094688e-01 -8.20110321e-01 -7.58672953e-01] ... ]
training-words.txt
Lot de formation de 64 mots, avec une taille de vecteur de 128x20, exporté sous le nom training-words.txt.
[ 323 323 52 52 107 107 2984 2984 3 3 1092 1092 48 48 4 4 0 0 2898 2898 89 89 66 66 20 20 28 28 0 0 4 4 0 0 142 142 28 28 0 0 0 0 173 173 697 697 1054 1054 133 133 0 0 0 0 13 13 4364 4364 1146 1146 2 2 1 1 201 201 2 2 1432 1432 26 26 12 12 201 201 2 2 219 219 5 5 813 813 290 290 0 0 3071 3071 5 5 1 1 280 280 2485 2485 705 705 6 6 144 144 28 28 4 4 1125 1125 2 2 301 301 9 9 7 7 2851 2851 6 6 16 16 0 0 3574 3574]
Ou en mots:
['One', 'One', 'can', 'can', 'then', 'then', 'enter', 'enter', 'and', 'and', 'remain', 'remain', 'In', 'In', 'a', 'a', 'UNK', 'UNK', 'synchronics', 'synchronics', 'This', 'This', 'would', 'would', 'be', 'be', 'for', 'for', 'UNK', 'UNK', 'a', 'a', 'UNK', 'UNK', 'distinction', 'distinction', 'for', 'for', 'UNK', 'UNK', 'UNK', 'UNK', 'historical', 'historical', 'questions', 'questions', 'somewhat', 'somewhat', 'like', 'like', 'UNK', 'UNK', 'UNK', 'UNK', 's', 's', 'separating', 'separating', 'off', 'off', 'of', 'of', 'the', 'the', 'book', 'book', 'of', 'of', 'god', 'god', 'from', 'from', 'The', 'The', 'book', 'book', 'of', 'of', 'nature', 'nature', 'to', 'to', 'give', 'give', 'himself', 'himself', 'UNK', 'UNK', 'Access', 'Access', 'to', 'to', 'the', 'the', 'latter', 'latter', 'eagleton', 'eagleton', 'argues', 'argues', 'in', 'in', 'fact', 'fact', 'for', 'for', 'a', 'a', 'Process', 'Process', 'of', 'of', 'reading', 'reading', 'that', 'that', 'is', 'is', 'dialectical', 'dialectical', 'in', 'in', 'which', 'which', 'UNK', 'UNK', 'undergo', 'undergo']
training-window-words.txt
Les 128 mots-fenêtre connectés, un à gauche, un à droite, avec une taille de vecteur de 128x20, exporté en tant que training-window-words.txt.
[[0] [52] [107] [323] [2984] [52] [3] [107] [1092] [2984] [48] [3] [4] [1092] [48] [0] [2898] [4] [89] [0] [66] [2898] [20] [89] [66] [28] [20] [0] [28] [4] [0] [0] [4] [142] [28] [0] [142] [0] [28] [0] [173] [0] [0] [697] [1054] [173] [697] [133] [0] [1054] [133] [0] [0] [13] [4364] [0] [13] [1146] [4364] [2] [1146] [1] [201] [2] [1] [2] [1432] [201] [26] [2] [1432] [12] [26] [201] [12] [2] [219] [201] [5] [2] [813] [219] [290] [5] [0] [813] [290] [3071] [5] [0] [1] [3071] [5] [280] [2485] [1] [705] [280] [6] [2485] [144] [705] [28] [6] [4] [144] [1125] [28] [2] [4] [1125] [301] [9] [2] [7] [301] [9] [2851] [6] [7] [2851] [16] [0] [6] [3574] [16] [0] [4331]]
Ou en mots:
['UNK', 'can', 'then', 'One', 'enter', 'can', 'and', 'then', 'remain', 'enter', 'In', 'and', 'a', 'remain', 'In', 'UNK', 'synchronics', 'a', 'This', 'UNK', 'would', 'synchronics', 'be', 'This', 'would', 'for', 'be', 'UNK', 'for', 'a', 'UNK', 'UNK', 'a', 'distinction', 'for', 'UNK', 'distinction', 'UNK', 'for', 'UNK', 'historical', 'UNK', 'UNK', 'questions', 'somewhat', 'historical', 'questions', 'like', 'UNK', 'somewhat', 'like', 'UNK', 'UNK', 's', 'separating', 'UNK', 's', 'off', 'separating', 'of', 'off', 'the', 'book', 'of', 'the', 'of', 'god', 'book', 'from', 'of', 'god', 'The', 'from', 'book', 'The', 'of', 'nature', 'book', 'to', 'of', 'give', 'nature', 'himself', 'to', 'UNK', 'give', 'himself', 'Access', 'to', 'UNK', 'the', 'Access', 'to', 'latter', 'eagleton', 'the', 'argues', 'latter', 'in', 'eagleton', 'fact', 'argues', 'for', 'in', 'a', 'fact', 'Process', 'for', 'of', 'a', 'Process', 'reading', 'that', 'of', 'is', 'reading', 'that', 'dialectical', 'in', 'is', 'dialectical', 'which', 'UNK', 'in', 'undergo', 'which', 'UNK', 'revision']
logfile.txt
Le journal d'entraînement, exporté sous le nom logfile.txt.
step: 60000 loss value: 5.90600517762 Nearest to human: physical, grammatical, empirical, social, Human, real, Linguistic, universal, Lacan, Public, Nearest to system: System, theory, category, phenomenon, state, center, systems, collection, Psychology, Analogy, step: 62000 loss value: 5.81202450609 Nearest to human: social, signifying, linguistic, coherent, universal, rationality, mental, empirical, Linguistic, grammatical, Nearest to system: state, structure, unit, consciousness, System, expression, center, phenomena, category, phenomenon, step: 64000 loss value: 5.75922590137 Nearest to human: author, grammatical, Human, Public, physical, normative, ego, Sign, linguistic, arbitrary, Nearest to system: System, metaphysics, changes, state, systems, knowledge, listener, unit, Understanding, language,
(NDLT: Seules les annotations du script ont été traduites)