La vectorisation du texte est une étape critique pour le Traitement Automatique des Langues (Natural Language Processing en anglais). Cette news
n’est pas une présentation du TAL mais concrètement c’est une technologie de machine learning qui permet aux machines d’interpréter / manipuler / comprendre le langage humain. La recherche sémantique
est une technique pour améliorer le résultat d’une recherche d’information. Au lieu de se baser uniquement sur la correspondance des mots clefs, on se base sur le contexte et la signification des termes (la sémantique).
La vectorisation permet d’améliorer la pertinence du résultat, de gérer facilement les synonymes et la notion de contexte.
Qu’est-ce qu’un vecteur ?
Un vecteur en informatique est tout simplement une structure de données (liste ou tableau) contenant des nombres.
Pourquoi utiliser un vecteur ?
Sous cette forme, on peut appliquer au texte les différents algorithmes de machine learning / TAL. Le texte peut être traiter et analyser plus efficacement.
C’est quoi la vectorisation ?
Tout simplement la transformation d’un texte en vecteur 😊
Comment vectoriser ?
Il y a plusieurs façons de vectoriser un texte, nous allons en voir quelques-unes.
Bag of Words (BoW)
C’est la vectorisation la plus simple. En Java cela serait représenté par une Map dans laquelle on insère comme clefs tous les mots et en valeur l’occurrence du mot (ou en Python un dictionnaire).
Pour le texte « Lorem ipsum cuique ipsum», on obtient ce tableau de mots uniques [Lorem, ipsum, cuique].
On vient de créer le vocabulaire de notre BoW, il faut ensuite le vectoriser.
On doit associer au tableau précédemment créé les occurrences des mots :
« Lorem ipsum cuique ipsum» : [Lorem, ipsum, cuique].
[1, 2, 1]
1 Lorem
2 ipsum
1 cuique
tableau [1, 2, 1] est le vecteur que l’on obtient quand on utilise la méthode BoW sur le texte « Lorem ipsum cuique ipsum».
Avantages :
C’est une vectorisation très simple mais efficace pour classifier basiquement du texte (détection du spam). La plupart des vectorisations reprennent le principe du BoW.
Inconvénients :
Le principal problème du BoW est que ce vecteur retire tout le contexte, la grammaire et la sémantique du texte.
La longueur du vecteur est liée à la taille du texte.
On ne peut pas gérer les mots qui sont absents du vocabulaire.
Term Frequency-Inverse Document Frequency (TD-IDF)
C’est une amélioration du BoW, on compte combien de fois le mot apparait dans le document et dans le corpus (l’ensemble des documents).
Term Frequency (Normalized)
Pour des raisons pratiques, on utilisera la version brute (Raw TF) donc sans la division.
Inverse Document Frequency
On ajoute le chiffre 1 à la fraction pour éviter de faire des divisions par zéro quand le mot n’est pas dans le corpus et encore une fois au résultat pour ne pas avoir à gérer des valeurs négatives.
Cette action se nomme « smoothing » dans le domaine statistique.
Term Frequency-Inverse Document Frequency
C’est le produit de TF et IDF.
Pour un corpus de documents de taille 2 :
Document 1 : « Une souris verte court »
Document 2 : « Il court, Il court, le furet »
Vocabulaire : [Une, souris, verte, court, Il, le, furet]
On peut calculer l’IDF maintenant :
Faire le produit et obtenir :
Document 1 :
TF(Document 1) = [1, 1, 1, 1, 0, 0, 0]
TF-IDF(Document 1) = [1 x 1.17, 1 x 1.17, 1 x 1.17, 1 x 1, 0 x 1.17, 0 x 1.17, 0 x 1.17] -> [1.17, 1.17, 1.17, 1, 0, 0, 0]
Document 2 :
TF(Document 2) = [0, 0, 0, 2, 2, 1, 1]
TF-IDF(Document 2) = [0 x 1.17, 0 x 1.17, 0 x 1.17, 2 x 1, 2 x 1.17, 1 x 1.17, 1 x 1.17] -> [0, 0, 0, 2, 2,34, 1.17, 1.17]
Interprétation :
+ le score est élevé pour un mot, + il a une importance dans le document. Cela veut dire qu’il est très peu présent voir absent des autres documents.
Avantages :
Aussi simple que le BoW. Cette méthode permet d’éliminer le bruit, c’est-à-dire que les mots très communs comme les déterminants ont un faible impact, tandis qu’un mot unique et pertinent sera mis en
avant.
Inconvénients :
Ils sont identiques à ceux du BoW, le vecteur retire tout le contexte, la grammaire et la sémantique du texte ☹
Limites des vectorisations traditionnelles
Les vectorisations comme BoW et TF-IDF ont leurs avantages en termes de simplicité et de rapidité mais elles présentent des limites importantes. Elles ne prennent pas en compte le contexte des mots, ce qui est crucial pour comprendre
la sémantique du texte. Ces vectorisations vont générer des vecteurs de grande taille pour des corpus volumineux rendant le traitement et l’analyse plus complexes.
Pour surmonter ces limites, des vectorisations plus avancées ont été développées. On peut retrouver le Word Embeddings avec Word2Vec ou le Contextualized Embedding avec BERT.
Word2Vec
Word2Vec est une méthode de vectorisation des mots développée par Google en 2013. Elle repose sur l’idée que la signification des mots peut être capturée en les représentant dans un espace vectoriel
où des mots ayant des significations similaires sont proches les uns des autres.
Le mot « Man » est proche de « King » de la même manière que « Woman » est proche de « Queen ». Le mot « Apple » n’a aucune relation avec les mots précédents
donc il est très éloigné.
Pour éviter de devoir mettre en forme plusieurs pages de calculs, vous pouvez retrouver les formules nécessaires pour calculer un vecteur ici .
Word2Vec utilise un réseau de neurones pour apprendre ces représentations vectorielles à partir d’un grand corpus de texte. Il existe deux architectures pour entraîner les modèles Word2Vec :
Continuous Bag of Words (CBOW) : Cette architecture prédit un mot à partir de son contexte. Le modèle prend en entrée les mots contextuels (ceux qui entourent le mot cible) et essaie de prédire le mot cible.
Skip-gram : À l’inverse de CBOW, Skip-gram prend un mot comme entrée et essaie de prédire les mots contextuels. Ce modèle est particulièrement efficace pour capturer les relations sémantiques,
même avec des données de grande taille.
Avantages
On peut capturer des relations sémantiques complexes entre les mots comme les analogies. Par exemple, « King » est à « Queen » ce que « Man » est à « Woman ». L’entraînement
de Word2Vec est rapide et peut être parallélisé, ce qui le rend adapté à de grands corpus.
Inconvénients
La qualité des vecteurs générés dépend fortement de la taille et de la qualité du corpus d’entraînement. Word2Vec génère un seul vecteur par mot, ce qui signifie qu’il ne peut pas
distinguer entre les différents sens d’un même mot (polysémie).
BERT
BERT (Bidirectional Encoder Representations from Transformers) est un modèle de langage développé aussi par Google en 2018. Il génère des représentations contextuelles des mots donc cela veut dire que contrairement
à Word2Vec, BERT prend en compte le contexte complet de chaque mot dans une phrase, ce qui permet de gérer la polysémie et de capturer des significations plus fines.
Il utilise l’architecture Transformer , qui repose sur des mécanismes d’attention pour traiter les relations entre les mots dans une phrase. Il est pré-entraîné
sur deux tâches principales :
Masked Language Model (MLM) : BERT masque certains mots dans une phrase et essaie de les prédire en utilisant les mots non masqués. Cela permet au modèle d’apprendre les relations contextuelles des mots.
Next Sentence Prediction (NSP) : Cette tâche consiste à prédire si une phrase B suit une phrase A, permettant à BERT de comprendre les relations entre les phrases.
Avantages
BERT génère des vecteurs contextuels, ce qui permet de distinguer les différents sens d’un même mot. C’est l’une des vectorisations la plus performante sur de nombreuses tâches de NLP telles que la classification
de texte, la reconnaissance d’entités nommées et la réponse à des requêtes (il était utilisé dans le moteur de recherche de Google jusqu’à l’arrivée de TW-BERT).
Inconvénients
L’entraînement et l’utilisation de BERT demandent énormément de ressources (GPU /mémoire). Comparé à des modèles plus simples comme Word2Vec, implémenter et optimiser BERT est beaucoup
plus complexe.
Pour conclure, ce que nous avons couvert ici n’est qu’un aperçu des techniques de vectorisation actuelles. Si le sujet vous intrigue, je vous encourage vivement à explorer plus en profondeur les diverses ressources disponibles.
Il y a encore beaucoup à découvrir 😛.