Une introduction douce au modèle du sac de mots
Le modèle sac de mots est un moyen de représenter des données textuelles lors de la modélisation de texte avec des algorithmes d'apprentissage automatique.
Le modèle du sac de mots est simple à comprendre et à mettre en œuvre et a connu un grand succès dans des problèmes tels que la modélisation du langage et la classification des documents.
Dans ce tutoriel, vous découvrirez le modèle sac de mots pour l'extraction de fonctionnalités dans le traitement du langage naturel.
Après avoir terminé ce tutoriel, vous saurez :
- Qu'est-ce que le modèle du sac de mots et pourquoi il est nécessaire pour représenter du texte.
- Comment développer un modèle de sac de mots pour une collection de documents.
- Comment utiliser différentes techniques pour préparer un vocabulaire et noter des mots.
Démarrez votre projet avec mon nouveau livre Deep Learning for Natural Language Processing, comprenant des tutoriels pas à pas et les fichiers code source Python. pour tous les exemples.
Commençons.
Présentation du didacticiel
Ce tutoriel est divisé en 6 parties ; ils sont:
- Le problème avec le texte
- Qu'est-ce qu'un sac de mots ?
- Exemple du modèle du sac de mots
- Gérer le vocabulaire
- Noter des mots
- Limites du sac de mots
Le problème avec le texte
Un problème avec la modélisation de texte est qu'elle est compliquée et que des techniques telles que les algorithmes d'apprentissage automatique préfèrent des entrées et des sorties de longueur fixe bien définies.
Les algorithmes d’apprentissage automatique ne peuvent pas fonctionner directement avec du texte brut ; le texte doit être converti en chiffres. Plus précisément, les vecteurs de nombres.
En traitement du langage, les vecteurs x sont dérivés de données textuelles, afin de refléter diverses propriétés linguistiques du texte.
— Page 65, Méthodes de réseau neuronal dans le traitement du langage naturel, 2017.
C'est ce qu'on appelle l'extraction de fonctionnalités ou l'encodage de fonctionnalités.
Une méthode populaire et simple d’extraction de caractéristiques avec des données textuelles est appelée le modèle de texte en sac de mots.
Qu'est-ce qu'un sac de mots ?
Un modèle de sac de mots, ou BoW en abrégé, est un moyen d'extraire des fonctionnalités d'un texte pour les utiliser dans la modélisation, par exemple avec des algorithmes d'apprentissage automatique.
L'approche est très simple et flexible et peut être utilisée de multiples façons pour extraire des fonctionnalités de documents.
Un sac de mots est une représentation de texte qui décrit l'occurrence de mots dans un document. Cela implique deux choses :
- Un vocabulaire de mots connus.
- Une mesure de la présence de mots connus.
C'est ce qu'on appelle un « sac » de mots, car toute information sur l'ordre ou la structure des mots dans le document est supprimée. Le modèle se préoccupe uniquement de savoir si les mots connus apparaissent dans le document, et non de savoir où dans le document.
Une procédure d'extraction de caractéristiques très courante pour les phrases et les documents est l'approche du sac de mots (BOW). Dans cette approche, nous examinons l'histogramme des mots dans le texte, c'est-à-dire en considérant chaque mot compté comme une caractéristique.
— Page 69, Méthodes de réseau neuronal dans le traitement du langage naturel, 2017.
L’intuition est que les documents sont similaires s’ils ont un contenu similaire. De plus, à partir du contenu seul, nous pouvons apprendre quelque chose sur la signification du document.
Le sac de mots peut être aussi simple ou complexe que vous le souhaitez. La complexité réside à la fois dans la décision de concevoir le vocabulaire des mots connus (ou jetons) et dans la manière de noter la présence de mots connus.
Nous examinerons de plus près ces deux préoccupations.
Exemple du modèle du sac de mots
Rendons concret le modèle du sac de mots avec un exemple concret.
Étape 1 : Collecter des données
Vous trouverez ci-dessous un extrait des premières lignes du texte du livre « A Tale of Two Cities » de Charles Dickens, tiré du Projet Gutenberg.
C'était le meilleur des temps, c'était le pire des temps, c'était l'âge de la sagesse, c'était l'âge de la folie,
Pour ce petit exemple, traitons chaque ligne comme un « document » distinct et les 4 lignes comme l’ensemble de notre corpus de documents.
Étape 2 : Concevoir le vocabulaire
Nous pouvons maintenant dresser une liste de tous les mots de notre vocabulaire modèle.
Les mots uniques ici (en ignorant la casse et la ponctuation) sont :
- "il"
- "était"
- "le"
- "meilleur"
- "de"
- "fois"
- "pire"
- "âge"
- "sagesse"
- "sottise"
Il s'agit d'un vocabulaire de 10 mots issus d'un corpus contenant 24 mots.
Étape 3 : Créer des vecteurs de documents
L'étape suivante consiste à noter les mots dans chaque document.
L'objectif est de transformer chaque document de texte libre en un vecteur que nous pouvons utiliser comme entrée ou sortie pour un modèle d'apprentissage automatique.
Parce que nous savons que le vocabulaire comporte 10 mots, nous pouvons utiliser une représentation de document de longueur fixe de 10, avec une position dans le vecteur pour noter chaque mot.
La méthode de notation la plus simple consiste à marquer la présence de mots comme une valeur booléenne, 0 pour absent, 1 pour présent.
En utilisant l'ordre arbitraire des mots répertoriés ci-dessus dans notre vocabulaire, nous pouvons parcourir le premier document (« C'était le meilleur des temps ») et le convertir en un vecteur binaire.
La notation du document ressemblerait à ceci :
- "ça"=1
- "était"=1
- "le"=1
- "meilleur"=1
- "de"=1
- "fois"=1
- « pire »=0
- "âge"=0
- « sagesse »=0
- "bêtise"=0
En tant que vecteur binaire, cela ressemblerait à ceci :
[1, 1, 1, 1, 1, 1, 0, 0, 0, 0]
Les trois autres documents se présenteraient comme suit :
"it was the worst of times" = [1, 1, 1, 0, 1, 1, 1, 0, 0, 0]
"it was the age of wisdom" = [1, 1, 1, 0, 1, 0, 0, 1, 1, 0]
"it was the age of foolishness" = [1, 1, 1, 0, 1, 0, 0, 1, 0, 1]
Tout classement des mots est nominalement supprimé et nous disposons d'un moyen cohérent d'extraire les caractéristiques de n'importe quel document de notre corpus, prêt à être utilisé dans la modélisation.
Les nouveaux documents qui chevauchent le vocabulaire des mots connus, mais peuvent contenir des mots extérieurs au vocabulaire, peuvent toujours être codés, où seules les occurrences de mots connus sont notées et les mots inconnus sont ignorés.
Vous pouvez voir comment cela peut naturellement s’adapter à des vocabulaires volumineux et à des documents plus volumineux.
Gérer le vocabulaire
À mesure que la taille du vocabulaire augmente, la représentation vectorielle des documents augmente également.
Dans l'exemple précédent, la longueur du vecteur du document est égale au nombre de mots connus.
Vous pouvez imaginer que pour un très grand corpus, comme des milliers de livres, la longueur du vecteur pourrait être de plusieurs milliers ou millions de positions. De plus, chaque document peut contenir très peu de mots connus dans le vocabulaire.
Il en résulte un vecteur avec de nombreux scores nuls, appelé vecteur clairsemé ou représentation clairsemée.
Les vecteurs clairsemés nécessitent plus de mémoire et de ressources de calcul lors de la modélisation, et le grand nombre de positions ou de dimensions peut rendre le processus de modélisation très difficile pour les algorithmes traditionnels.
En tant que tel, il existe une pression pour réduire la taille du vocabulaire lors de l’utilisation d’un modèle de sac de mots.
Il existe des techniques simples de nettoyage de texte qui peuvent être utilisées dans un premier temps, telles que :
- Ignorer le cas
- Ignorer la ponctuation
- Ignorer les mots fréquents qui ne contiennent pas beaucoup d'informations, appelés mots vides, comme « a », « de », etc.
- Correction des mots mal orthographiés.
- Réduire les mots à leur radical (par exemple « jouer » à partir de « jouer ») à l'aide d'algorithmes de radicalisation.
Une approche plus sophistiquée consiste à créer un vocabulaire de mots groupés. Cela modifie à la fois la portée du vocabulaire et permet au sac de mots de capturer un peu plus de sens du document.
Dans cette approche, chaque mot ou jeton est appelé un « gramme ». La création d'un vocabulaire de paires de deux mots est, à son tour, appelée modèle bigramme. Encore une fois, seuls les bigrammes apparaissant dans le corpus sont modélisés, pas tous les bigrammes possibles.
Un N-gramme est une séquence de mots à N jetons : un 2-gramme (plus communément appelé bigramme) est une séquence de deux mots comme « s'il vous plaît, tournez », « tournez vos » ou « vos devoirs », et un 3 grammes (plus communément appelé trigramme) est une séquence de trois mots comme « s'il vous plaît, tournez vos » ou « tournez vos devoirs ».
— Page 85, Traitement de la parole et du langage, 2009.
Par exemple, les bigrammes de la première ligne de texte de la section précédente : « C'était le meilleur des temps » sont les suivants :
- "c'était"
- "était le"
- "le meilleur"
- « le meilleur de »
- "des temps"
Un vocabulaire qui suit ensuite des triplets de mots est appelé modèle trigramme et l'approche générale est appelée modèle n-gramme, où n fait référence au nombre de mots regroupés.
Souvent, une simple approche bigramme est meilleure qu’un modèle de sac de mots d’un gramme pour des tâches telles que la classification de la documentation.
une représentation en sac de bigrammes est beaucoup plus puissante qu'un sac de mots et, dans de nombreux cas, s'avère très difficile à battre.
— Page 75, Méthodes de réseau neuronal dans le traitement du langage naturel, 2017.
Noter des mots
Une fois qu'un vocabulaire a été choisi, l'occurrence des mots dans les exemples de documents doit être notée.
Dans l’exemple travaillé, nous avons déjà vu une approche très simple de notation : une notation binaire de la présence ou de l’absence de mots.
Voici quelques méthodes de notation simples supplémentaires :
- Compte. Comptez le nombre de fois que chaque mot apparaît dans un document.
- Fréquences. Calculez la fréquence à laquelle chaque mot apparaît dans un document parmi tous les mots du document.
Hachage de mots
En informatique, vous vous souvenez peut-être qu'une fonction de hachage est un peu de calcul qui mappe les données sur un ensemble de nombres de taille fixe.
Par exemple, nous les utilisons dans des tables de hachage lors de la programmation, où les noms sont peut-être convertis en nombres pour une recherche rapide.
Nous pouvons utiliser une représentation hachée de mots connus dans notre vocabulaire. Cela résout le problème d'avoir un très grand vocabulaire pour un grand corpus de texte car nous pouvons choisir la taille de l'espace de hachage, qui est à son tour la taille de la représentation vectorielle du document.
Les mots sont hachés de manière déterministe selon le même index entier dans l'espace de hachage cible. Un score ou un décompte binaire peut ensuite être utilisé pour noter le mot.
C'est ce qu'on appelle le « astuce de hachage » ou le « hachage de fonctionnalités ».
Le défi consiste à choisir un espace de hachage adapté à la taille du vocabulaire choisi afin de minimiser la probabilité de collisions et la rareté des compromis.
TF-IDF
Un problème avec la notation de la fréquence des mots est que les mots très fréquents commencent à dominer dans le document (par exemple, un score plus important), mais peuvent ne pas contenir autant de « contenu informatif » pour le modèle que des mots plus rares mais peut-être spécifiques à un domaine.
Une approche consiste à redimensionner la fréquence des mots en fonction de la fréquence à laquelle ils apparaissent dans tous les documents, de sorte que les scores des mots fréquents comme « le » qui sont également fréquents dans tous les documents soient pénalisés.
Cette approche de notation est appelée Term Frequency - Inverse Document Frequency, ou TF-IDF en abrégé, où :
- Fréquence des termes : est une notation de la fréquence du mot dans le document actuel.
- Fréquence inverse des documents : il s'agit d'une évaluation de la rareté du mot dans les documents.
Les scores sont une pondération où tous les mots ne sont pas aussi importants ou intéressants.
Les scores ont pour effet de mettre en évidence des mots distincts (contenant des informations utiles) dans un document donné.
Ainsi, l’IDF d’un terme rare est élevé, alors que l’IDF d’un terme fréquent est susceptible d’être faible.
— Page 118, Introduction à la recherche d'informations, 2008.
Limites du sac de mots
Le modèle du sac de mots est très simple à comprendre et à mettre en œuvre et offre une grande flexibilité pour la personnalisation de vos données textuelles spécifiques.
Il a été utilisé avec beaucoup de succès sur des problèmes de prédiction tels que la modélisation du langage et la classification de la documentation.
Il souffre néanmoins de quelques défauts, tels que :
- Vocabulaire : Le vocabulaire nécessite une conception soignée, notamment afin de gérer la taille, ce qui a un impact sur la rareté des représentations du document.
- Parsité : les représentations clairsemées sont plus difficiles à modéliser à la fois pour des raisons informatiques (complexité spatiale et temporelle) et également pour des raisons d'information, le défi étant que les modèles exploitent si peu d'informations dans un espace de représentation aussi vaste.
- Signification : ignorer l'ordre des mots ignore le contexte, et donc la signification des mots dans le document (sémantique). Le contexte et la signification peuvent apporter beaucoup au modèle, qui, s'il était modélisé, pourrait faire la différence entre les mêmes mots disposés différemment (« c'est intéressant » et « est-ce intéressant »), les synonymes (« vieux vélo » vs « vélo d'occasion »). , et bien plus encore.
Lectures complémentaires
Cette section fournit plus de ressources sur le sujet si vous cherchez à approfondir.
Articles
- Modèle de sac de mots sur Wikipédia
- N-gramme sur Wikipédia
- Hachage de fonctionnalités sur Wikipédia
- tf-idf sur Wikipédia
Livres
- Chapitre 6, Méthodes de réseau neuronal dans le traitement du langage naturel, 2017.
- Chapitre 4, Traitement de la parole et du langage, 2009.
- Chapitre 6, Une introduction à la recherche d'informations, 2008.
- Chapitre 6, Fondements du traitement statistique du langage naturel, 1999.
Résumé
Dans ce didacticiel, vous avez découvert le modèle du sac de mots pour l'extraction de fonctionnalités avec des données textuelles.
Concrètement, vous avez appris :
- Qu'est-ce que le modèle du sac de mots et pourquoi nous en avons besoin.
- Comment travailler à travers l'application d'un modèle de sac de mots à une collection de documents.
- Quelles techniques peuvent être utilisées pour préparer un vocabulaire et noter des mots.
Avez-vous des questions ?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.