Introduction

Pour les machines, comprendre le sens des mots et des phrases est une tâche complexe car elle implique de prendre en compte non seulement la définition des mots, mais également leur connotation, leur contextualisation et leurs relations avec d'autres mots. L'étude de ce problème appartient au domaine du Natural Language Processing (NLP) ou traitement du langage naturel. Un exemple d'application est l'extraction d'informations dans un texte donné, que vous pouvez tester librement grâce au modèle entraîné par les experts NLP du CATIE.

Le traitement du langage naturel remonte au début de l'informatique, dans les années 1950. À l'époque, les experts cherchent comment représenter numériquement des mots. Dans les années 2010, la puissance des ordinateurs est telle qu'elle permet la démocratisation des réseaux de neurones ce qui va pousser la représentation vectorielle à s'imposer (à un mot, on associe une séquence de plusieurs centaines de nombres). En effet, la plupart des modèles de machine learning utilisent des vecteurs comme données d'entraînement.

Les modèles de word embedding ont précisément pour fonction de capturer les relations entre les mots d'un corpus de textes et de les traduire en vecteurs. Dans cet article, nous verrons comment interpréter ces vecteurs et comment ils sont générés, en analysant le modèle Word2Vec.



L’arithmétique des mots

Une manière d'interpréter les vecteurs de mots est de les penser comme des coordonnées. En effet, les modèles de word embedding traduisent les relations entre les mots en angles, distances et directions. Par exemple, pour évaluer la proximité sémantique entre 2 mots, il suffit de calculer le cosinus de l'angle entre les 2 vecteurs correspondants : une valeur de 1 (angle de 0°) correspond à des synonymes alors qu'une valeur de -1 indique des antonymes (angle de 180°).

Il est également possible de calculer des relations plus complexes entre les mots. La figure 1 représente la projection de quelques vecteurs de mots dans un espace en 3 dimensions (avant projection, les vecteurs ont des centaines de dimensions). Il y apparaît que le vecteur qui va de reine à roi est à peu près le même que celui qui va de femelle à mâle ou encore jument à étalon i.e. ce vecteur caractérise la relation féminin-masculin. De même, Paris est à la France ce que Berlin est à l'Allemagne, soit :

\[Paris - France = Berlin - Allemagne\]

ce qui est équivalent à

\[Paris = Berlin - Allemagne + France\]

et il est donc possible de retrouver la capitale du Canada en calculant

\[Berlin - Allemagne + Canada\]
Figure 1 : relations féminin-masculin et pays-capitale

Il est possible d'essayer l'arithmétique des mots sur le site de l'école Polytechnique. Il est cependant à noter qu'aucun modèle n'est parfait et que certains résultats d'opérations arithmétiques peuvent être incorrects.



Word2Vec

Word2Vec a été développé par une équipe de chercheurs de Google (Mikolov et al.) en 2013 et est considéré comme étant le modèle qui a permis de démocratiser cette technologie, de par sa simplicité et son efficacité. Même si d'autres modèles de word embedding ont été développés depuis (GloVe et FastText pour ne citer que les plus connus), Word2Vec est encore largement utilisé et cité dans la littérature scientifique.


Quelques définitions

Contexte : étant donné un texte, le contexte d'un mot est défini comme étant tous les mots dans son voisinage, aux différents endroits du texte où il apparaît. Au voisinage est associée une fenêtre : une fenêtre de taille 3 englobe les 3 mots qui précèdent et les 3 mots qui suivent le mot visé.

Vocabulaire : (sous-)ensemble des mots qui apparaissent dans un texte. Par exemple, dans le texte "La sœur de ma sœur est ma sœur", le vocabulaire associé contiendrait au plus les mots suivants : "la", "sœur", "de", "ma", "est".

Encodage one hot : dans un vocabulaire de taille N, l'encodage one hot d'un mot de ce vocabulaire consiste à créer un vecteur de taille N avec N-1 zéros et 1 un correspondant à la position du mot dans le vocabulaire. Par exemple, avec le vocabulaire {"la", "sœur", "de", "ma", "est"}, le vecteur one-hot correspondant à "sœur" est [0, 1, 0, 0, 0].


Fonctionnement

Le concept de Word2Vec est d'utiliser un réseau de neurones pour résoudre une "fausse tâche", appelée tâche de prétexte : les poids obtenus après entraînement ne servent pas à inférer des résultats mais sont le résultat i.e. les vecteurs de mots. Le modèle se décline en 2 versions (légèrement) différentes : CBOW (pour Continuous Bag Of Words) et Skip Gram. CBOW tente de résoudre la tâche qui à un contexte donné associe un mot tandis que Skip Gram fait l'inverse. La méthode utilisée étant à peu près la même pour les 2 versions, nous détaillerons par la suite uniquement le modèle Skip Gram.

Pour un texte et une taille de fenêtre donnés, la tâche suivante est définie : soit un mot du texte (l'input), calculer pour chaque autre mot la probabilité qu'il soit dans le contexte de l'input (dans la fenêtre). Pour résoudre cette tâche, un réseau de neurones est utilisé; il est composé de :

  1. La couche d'input; celui-ci est encodé en vecteur one-hot
  2. Une couche cachée, de taille arbitraire, totalement connectée à l'input
  3. La couche d'output i.e. un vecteur de probabilité, de la taille du vocabulaire, totalement connectée à la couche cachée
Une fonction softmax est appliquée à l'output afin de n'avoir que des nombres dans l'intervalle [0,1] et dont la somme fait 1.

Par exemple, avec le texte "Les vacances en Nouvelle Aquitaine c'est top, on va au Futuroscope", et une fenêtre de taille 1, la figure 2 illustre comment sont produites les données d'entraînement du modèle :
Figure 2 : exemple d'inputs et leur contexte

Toujours avec le même exemple, la figure 3 représente un réseau de neurones qui est entraîné avec les données précédemment générées.

Figure 3 : exemple de réseau de neurones

À la fin, seuls les poids des inputs sont conservés : dans notre cas une matrice de 12 lignes (une ligne par mot) et 3 colonnes (taille de la couche cachée), cf. figure 4. Chaque ligne correspond à un vecteur de mot.

Figure 4 : Création des vecteurs de mot à partir des poids du modèle

Il est à noter que dans notre exemple les outputs sont assez prévisibles, car chaque mot n'apparaît qu'une fois dans le texte. Dans la réalité, les corpus de textes utilisés comprennent au moins quelques milliers de mots. Il devrait donc y avoir une probabilité élevée que nouvelle soit dans le voisinage d'aquitaine, ces mots étant souvent associés.

Les vecteurs de mots ainsi produits sont pertinents dans la mesure où 2 mots similaires se verront associer 2 vecteurs proches. En toute logique, 2 synonymes devraient effectivement avoir un contexte analogue, ce qui se traduit par 2 outputs quasi égaux pour ces 2 inputs. Le modèle va donc attribuer des poids quasi identiques aux 2 inputs, donnant ainsi 2 vecteurs proches.



Applications et limites

Comme évoqué en introduction, les modèles de word embedding peuvent servir à générer des vecteurs pour entraîner des modèles de NLP plus sophistiqués. Ils peuvent également servir à résoudre des tâches simples, tout en présentant l'avantage d'être peu gourmands en ressources, facilement entraînables et explicables. Il est par exemple possible d'utiliser la similarité entre les mots dans un moteur de recherche, pour remplacer un mot clé par un autre ou étendre la liste des mots clés en piochant dans leur contexte. Grâce aux vecteurs, il est également possible d'étudier la connotation des mots d'un texte pour mettre en évidence des biais liés aux stéréotypes; cf. Garg et al. (2018).

Il existe également des applications de ces modèles en dehors du domaine du traitement du langage. En effet, au lieu de vectoriser des mots avec pour contexte le texte dont ils sont issus, il est par exemple possible de vectoriser les produits d'une marketplace avec pour contexte l'historique des achats des utilisateurs, afin de recommander des produits similaires; cf. Grbovic et al. (2015).

La principale limitation de cette technique de vectorisation est qu'elle ne prend pas en compte la polysémie d'un mot : par exemple, dans le texte "L'avocat de la défense mange un avocat", le modèle de word embedding ne créera qu'un seul vecteur pour le mot "avocat". Un autre inconvénient est le travail de prétraitement du corpus à effectuer en amont : il faut définir un vocabulaire i.e. enlever les mots trop répétitifs (ce, de, le...) et potentiellement retirer les formes conjuguées/accordées (est-il souhaitable que "mot" et "mots" aient chacun leur vecteur ?).

Les derniers modèles de langage (GPT, Bloom, Llama...) basés sur des transformers sont capables de contourner ces limitations. Ils peuvent en effet être directement entraînés sur des textes, sans passer par la définition d'un vocabulaire. Ils utilisent également des vecteurs plus sophistiqués, qui représentent un mot et son contexte, ce qui leur permet de distinguer les différents sens d'un mot.



Conclusion

Pour résumer, les techniques de word embedding ont révolutionné les technologies de NLP, en utilisant des modèles simples, peu coûteux, mais aux résultats impressionnants. Si les transformers remplacent à présent ces modèles dans la plupart des applications, il existe certains cas où ils restent pertinents. Dans un prochain article du blog Vaniila, vous découvrirez une application concrète du word embedding, à travers un projet du CATIE que vous pourrez essayer vous-mêmes !



Références



Commentaires