Supposons que vous receviez une tâche NLP où vous devez travailler avec des données textuelles très peu structurées et qui peuvent être dans différentes langues consistant par exemple en la traduction automatique ou en analyse de sentiment. Après avoir nettoyé les données pour éliminer les doublons et les éléments imprécis, un pré-traitement est obligatoire avant d’utiliser tout algorithme d’apprentissage machine. Il permet de construire un vocabulaire permettant de vectoriser les phrases.
Dans cet article, nous parlerons de tokenisation et de word embedding.
Tokénisation
La tokénisation est le processus de séparation d’un texte en tokens. Cette étape n’est pas nécessaire pour les langues européennes, car les mots peuvent être considérés comme des tokens, mais pour les langues asiatiques, la tokénisation est une étape importante de pré-traitement. Les tokens sont utilisés pour construire le vocabulaire. Il faut donc trouver un compromis entre la taille du vocabulaire et la qualité de l’encodage. Prenons l’exemple de la langue anglaise, il y a deux façons extrêmes d’effectuer la tokenisation :
Les tokens sont les personnages. Ici, la taille du vocabulaire sera petite, mais la perte d’information est importante.
Les tokens sont les mots. Ici, la qualité de l’encodage est meilleure, mais la taille du vocabulaire est plus grande et il se peut que nous ayons un problème hors vocabulaire (OOV).
Ci-dessous nous présentons une méthode de tokenisation appelée Byte Pair Encoding. Il est basé sur des unités de sous-mots au lieu de mots ou de caractères.
Codage par paire d’octets
Le codage par paires d’octets (BPE) a été introduit par Sennrich et al. pour segmenter les mots dans une variété de langues. Il reçoit les caractères en entrée et effectue des opérations de fusion pour les paires les plus courantes. Le nombre de ces opérations de fusion est l’hyperparamètre principal de cette méthode. La taille finale du vocabulaire est le nombre de caractères ajoutés au nombre d’opérations. L’avantage de cette méthode est qu’elle produit des unités de sous-mots, ce qui limite le nombre de tokens n’appartenant pas au vocabulaire.
Word Embedding
Le word embedding, comme le document embedding, appartient à la phase de traitement de texte. Il transforme un texte en un vecteur prêts à l’emploi par les algorithmes et intègre autant d’informations que possible sur le sens du mot et sa relation avec les autres mots du vocabulaire.
- Le one-hot-encoding représente une séquence de mots dans une séquence de 0/1 – ou nombres de fréquence – basée sur l’occurrence ou l’absence de mots dans le texte. C’est une technique utile mais elle a deux inconvénients majeurs : elle produit une table de données très clairsemée avec un nombre élevé de 0 qui peut être problématique pour les algorithmes d’apprentissage et elle n’incorpore pas le contexte du mot.
- Word2Vec a été conçu pour réduire la taille de l’espace du word embedding et produire la description la plus informative dans la représentation du mot. Il est basé sur une architecture perceptron à plusieurs couches.
Avant d’entrer dans les détails, définissons le contexte d’un mot. Nous avons deux contextes différents, un contexte vers l’avant et un contexte arrière de tailles différentes C. Par exemple, dans la phrase “L’interprétation de l’espace d’intégration”, le contexte vers l’avant de la taille C = 2 du mot “de” est “l’espace”.
Le type de contexte le plus couramment utilisé est un contexte vers l’avant. En 2013, Mikolov et al. ont proposé deux modèles similaires de vecteurs de mots à base neuronale : Continuous Bag-Of-Words (CBOW) et Continuous Skip-gram modèles. L’idée derrière l’approche CBOW est de prédire le mot cible à partir du contexte donné tandis que le problème que Skip-gram essaie de résoudre est de prédire le contexte du mot cible.
Continuous Bag-Of-Words
Nous décrirons l’algorithme CBOW pour C = 1 et C > 1.
Pour C = 1, les motifs d’entrée et de sortie sont des vecteurs codés à chaud, avec une dimension 1xV où V est la taille du vocabulaire. Le mot de contexte codé à chaud alimente l’entrée et le mot cible codé à chaud est prédit au niveau de la couche de sortie. La représentation de l’enrobage se situe au niveau de la couche intermédiaire avec un certain nombre de neurones N < V permettant la compression.
Durant l’entraînement, nous utilisons la fonction de coût suivante : L = -log(P(w_O \vert w_I)
Où w_O est le mot de sortie et w_I est le mot de contexte. L’activation softmax est utilisée pour obtenir des probabilités.
- Pour C > 1, la structure du réseau doit changer car nous avons des mots d’entrée C au lieu de 1. Chaque mot codé à chaud entre dans une couche d’entrée de taille V, puis dans une couche cachée de taille N < V et afin de résumer les informations des vecteurs de contexte C, nous introduisons une couche intermédiaire qui fait la moyenne des vecteurs CxN. La couche de sortie, comme précédemment, produit la représentation binarisée du mot cible.


J’espère que cet article a été utile. Si vous l’avez aimé, n’hésitez pas à jeter un coup d’oeil aux autres articles sur la plateforme.