Quelques mots sur le plongement lexical (word embedding)

Cet article de blog fait suite à un précédent article intitulé “Le modèle sac-de-mots : une introduction à la représentation de texte pour l’apprentissage automatique”, dans lequel j’ai présenté le modèle de Bag of Words (BoW) comme une approche simple pour représenter les mots sous forme vectorielle. À la fin de cet article, j’ai souligné deux limites principales de cette méthode :

  • Premièrement, la constitution du vocabulaire peut être difficile, car il faut trouver un vocabulaire représentatif tout en évitant qu’il ne devienne trop volumineux.
  • Deuxièmement, la limite la plus importante est que ce modèle de représentation ne tient pas compte de la signification des mots. En effet, l’ordre des mots (le contexte) n’a pas d’importance.

À titre d’exemple si on considère les 4 textes suivants 

  • texte 1 : avoir du savoir faire
  • texte 2 :  savoir faire une competence essentielle
  • texte 3 : competence savoir faire
  • texte 4 :competence ensentielle

La représentation en sac de mots avec une mesure binaire (0,1) exprimant la présence ou non d’un mot serait la suivante:

Textes savoir competence du avoir faire essentielle
1 1 0 1 1 1 0
2 1 1 0 0 1 1
3 1 1 0 1 0 0
4 0 1 0 0 0 1

On peut constater que les mots “bien” et “être” sont souvent utilisés ensemble, ce qui suggère une co-occurrence significative. Cependant, cette co-occurrence ne peut être la seule base pour inférer une forte association sémantique entre ces deux mots. Il est important de considérer le contexte global du texte pour comprendre pleinement les relations sémantiques qui existent entre les mots. Par exemple, si les mots “bien” et “être” apparaissent séparément dans de nombreux textes différents, cela pourrait affecter leur lien sémantique supposé. Les algorithmes de machine learning utilisant cette méthode de représentation en sac de mots peuvent donc manquer certaines informations importantes pour une compréhension précise du sens du texte.

Et le plongement lexical dans tous ça…

l’idée du plongement lexical est clair : il s’agit de représenter les termes à l’aide d’un vecteur numérique de K dimensions ( beaucoup plus petit que la taille d’un vocabulaire dans le modèle BoW) , en prenant en compte leur contexte (une fenêtre de voisinage V dont la taille peut varier). à l’issu de cette réprésenttion les mots qui apparaissent dans le même contexte devront être proche. On pourra grâce à cette nouvelle representation des mots obtenir la representation des textes du corpus en faisant par exemple la somme ou la moyenne des mots qui les composent.

La plupart des modèles de plongement lexical sont basées sur des architectures de réseaux de neuronnes. Voici une liste des principaux modèles qui sont utilisées pour une réprésentation contextuelle des mots.

  • Word2Vec : C’est l’un des modèles les plus populaires de word embeddings. Il utilise un réseau de neurones pour apprendre des représentations de mots en utilisant des méthodes de prédiction de mots voisins ou de prédiction de mots manquants.
  • GloVe (Global Vectors for Word Representation) : Ce modèle utilise une approche matricielle pour apprendre des représentations de mots en utilisant des statistiques de co-occurrence de mots dans un corpus.
  • FastText : Ce modèle a été développé par Facebook AI Research. Il utilise une approche similaire à Word2Vec, mais utilise également des sous-mots pour apprendre des représentations de mots plus robustes pour les mots rares ou nouveaux.
  • ELMo (Embeddings from Language Models) : Ce modèle utilise des modèles de langage de neurones de grande taille pour apprendre des représentations de mots contextuelles, c’est-à-dire qu’il prend en compte le contexte dans lequel le mot est utilisé dans le document.
  • BERT (Bidirectional Encoder Representations from Transformers) : Ce modèle est également basé sur des modèles de langage de neurones de grande taille, mais utilise des transformer pour apprendre des représentations de mots contextuelles bidirectionnelles.

Quelques mots sur le modèle Word2Vec

Dans cette section, je vous donne une brève idée de la manière dont le modèle Word2Vec est construit. Dans des articles ultérieurs, je détaillerai toutes les modèles de word embeding listées ci-dessous avec leur application sur Python ou éventuellement R.

Le modèle Word2Vec utilise un réseaux de neurones à une couche cachée. Le modèle peut être entraîné en utilisant deux méthodes :  la méthode Skip-gram et la méthode Continuous Bag of Words (CBOW).

  • La méthode Skip-gram vise à prédire les mots voisins à partir d’un mot donné. On passe donc entrée du réseau de neurone le mot et en sortie nous avons le contexte

Image tirée de la page wikipédia : word embedding

  • La méthode CBOW prédit un mot donné à partir de ses voisins. On passe donc entrée du réseau de neurone le contexte et en sortie nous avons le mot.

 

Image tirée de la page wikipédia : word embedding

Pour la couche de sortie, on utilise une fonction d’activation softmax et pour la couche cachée, une fonction linéaire. Les mots et les contextes sont encodées par one-hot pour être passé aux réseaux de neurones.

Conclusion 

En espérant que cet article vous aura éclairé sur le concept de word embeddings et sa différence par rapport au modèle Bag of Words. Nous vous donnons rendez-vous prochainement pour vous présenter en détail certains de ces modèles avec des exemples concrets. À très bientôt