La caractérisation par sac de mots quantifie la fréquence des mots dans les documents texte en vue de leur traitement dans des modèles de machine learning. Sa variante TF-IDF génère des modèles qui tiennent davantage compte de la fréquence des mots dans un corpus de documents.
Le modèle du sac de mots (« bag of words » ou BoW) est une technique d’extraction de caractéristiques qui modélise des données textuelles pour le traitement dans des algorithmes de récupération d’information et de machine learning. Plus précisément, les modèles BoW sont un assortiment non structuré de tous les mots connus d’un document texte défini uniquement en fonction de leur fréquence, en ignorant l’ordre des mots et le contexte.1 La représentation par sac de mots est l’une des étapes de nombreux pipelines de fouille de textes.
La plupart des packages de traitement automatique du langage naturel (NLP) sont fournis avec des fonctions permettant de créer des modèles de sacs de mots, comme la fonction CountVectorizer de scikit-learn.
La caractérisation par sac de mots peut parfois être considérée comme une forme de traitement de texte de niveau débutant, étant donné sa simplicité conceptuelle apparente dans le comptage des mots dans un jeu de textes donné. Les modèles de sacs de mots sont cependant plus complexes.
Pour comprendre la caractérisation par sac de mots, il faut comprendre au moins les bases des espaces vectoriels. Un espace vectoriel est un espace multidimensionnel dans lequel des points sont tracés. Dans l’approche de type « sac de mots », chaque mot individuel devient une dimension distincte (ou un axe) de l’espace vectoriel. Si un jeu de textes comporte n mots, l’espace vectoriel résultant a n dimensions, une dimension pour chaque mot unique du jeu de textes. Le modèle représente ensuite chaque document texte distinct sous la forme d’un point dans l’espace vectoriel. La position d’un point le long d’une certaine dimension est déterminée par le nombre d’occurrences du mot de la dimension dans le document associé au point.
Par exemple, imaginons un jeu de textes dont deux documents distincts présentent respectivement ce contenu :
Document 1 : La rose est rouge, la violette est bleue
Document 2 : Mon amour est comme une rose très rouge
Parce qu’il est difficile d’imaginer quoi que ce soit au-delà d’un espace tridimensionnel, nous nous limiterons à cela. L’espace vectoriel d’un corpus contenant ces deux documents aurait des dimensions distinctes pour rouge, rose et violette. Voici à quoi pourrait ressembler l’espace vectoriel tridimensionnel correspondant à ces mots :
Puisque rouge, rose et violette apparaissent tous une fois dans le Document 1, le vecteur correspondant à ce document dans cet espace serait (1,1,1). Dans le Document 2, rouge apparaît deux fois, rose une fois et violet pas du tout. Le point vectoriel du Document 2 serait donc (2,1,0). Les points associés à chaque document seraient représentés dans l’espace vectoriel tridimensionnel comme suit :
Notez que cette figure représente les documents texte sous forme de vecteurs de données dans un espace de caractéristiques tridimensionnel. Mais les sacs de mots peuvent également représenter les mots sous forme de vecteurs de caractéristiques dans un espace de données. Un vecteur de caractéristique représente la valeur (occurrence) d’une caractéristique donnée (mot) dans un point de données spécifique (document). Les vecteurs de caractéristiques rouge, rose et violette des Documents 1 et 2 ressembleraient à ce qui suit :2
Notez que l’ordre des mots dans les documents d’origine n’a pas d’importance. Pour un modèle de sac de mots, tout ce qui compte, c’est le nombre d’occurrences de chaque mot dans le jeu de textes.
Étant donné que les modèles de sac de mots quantifient uniquement la fréquence des mots dans un document donné, ils sont souvent décrits comme une technique de modélisation simple. Mais les sacs de mots interviennent dans de nombreuses tâches de NLP, notamment dans la classification de documents. En effet, la littérature associe souvent les sacs de mots aux classificateurs statistiques comme le classificateur naïf bayésien.3
Les tâches de classification de texte interprètent les mots présentant une fréquence d’apparition élevée dans un document comme les idées principales de ce dernier.4 Cette hypothèse n’est pas déraisonnable. Par exemple, si certains des mots les plus fréquents dans un document sont président, électeurs et élections, il y a de fortes chances que le document soit un texte politique, abordant spécifiquement une élection présidentielle. La classification de texte par sac de mots extrapole ensuite et considère que les documents dont le contenu est similaire sont de type similaire.
Si les classificateurs probabilistes basés sur l’approche du sac de mots s’avèrent efficaces dans l’ensemble, ce modèle présente plusieurs inconvénients.
Corrélation des mots entre eux. Le modèle de sac de mots suppose que les mots sont indépendants les uns des autres dans un document ou un corpus. Le mot élection est plus susceptible d’apparaître dans le même contexte que le mot président plutôt qu’avec le mot poète. En mesurant la fréquence des termes individuels, le modèle de sac de mots ne tient pas compte des corrélations d’usage entre les mots. Puisque le sac de mots extrait chaque mot d’un document en tant que caractéristique du modèle, la fréquence des termes correspondant au poids de la caractéristique, deux mots corrélés ou plus peuvent théoriquement induire une multicolinéarité dans les classificateurs statistiques utilisant ce modèle. Néanmoins, l’hypothèse de simplification de la classification naïve bayésienne a montré qu’elle pouvait produire des modèles robustes malgré ces lacunes potentielles.5
Mots composés. La corrélation s’étend aux représentations par des sacs de mots des expressions composées, dans lesquels deux mots ou plus fonctionnent comme une seule unité sémantique. Par exemple, un modèle de sac de mots simple pourrait représenter Mr Darcy comme deux mots uniques et sans rapport, même s’ils fonctionnent en tandem. Une telle représentation par sac de mots ne reflète pas la nature sémantique et syntaxique des concepts à plusieurs mots.
Mots polysémiques. De nombreux mots peuvent avoir plusieurs significations très différentes. Par exemple, le mot bat, en anglais, peut désigner un article de sport ou un animal, et ces acceptions apparaissent généralement dans des contextes très différents. De même, les mots peuvent changer de sens en fonction du placement de l’accent tonique dans la langue parlée (par exemple, en anglais toujours, CON-tent vs con-TENT). Comme le modèle de sac de mots ne tient pas compte du contexte et du sens des mots lors de leur modélisation, il regroupe toutes ces significations distinctes sous un seul mot, omettant ainsi des informations potentiellement significatives sur le sujet d’un texte (et ainsi une classification potentielle).
Parcimonie. Dans un modèle de sac de mots, chaque mot est une caractéristique, ou dimension, du modèle, et chaque document est un vecteur. Étant donné qu’un document n’utilise pas tous les mots du vocabulaire du modèle généré, de nombreuses valeurs de caractéristiques peuvent être nulles pour un vecteur donné. Lorsque la majorité des valeurs des vecteurs sont nulles, le modèle est clairsemé (si les vecteurs sont représentés sous forme de matrice, on parle de matrice creuse). La parcimonie du modèle se traduit par une dimensionnalité élevée qui, à son tour, entraîne un surajustement des données d’apprentissage.6
Sac de n-grammes. L’utilisation de n-grammes à la place des mots peut corriger un certain nombre d’inconvénients inhérents aux modèles de sac de mots. Plutôt que de créer un modèle où chaque mot est une caractéristique, on peut utiliser des n-grammes comme caractéristiques vectorielles. Dans ce contexte, n fait référence au nombre de mots traités comme une seule unité sémantique, les bigrammes (c’est-à-dire deux mots) étant peut-être les plus courants dans les modèles de sac de n-grammes. Les bigrammes de mots sont utiles en ce sens qu’ils peuvent tenir compte des mots composés, tels que New York ou Tour Eiffel. Bien entendu, tous les bigrammes ne sont pas porteurs d’informations, par exemple sur le ou de la. Néanmoins, il s’agit d’un moyen de tenir compte des problèmes tels que les mots composés et la corrélation des mots entre eux.7
Techniques de normalisation du texte. Il est parfois nécessaire de normaliser les données textuelles brutes pour améliorer la structure et le fonctionnement des modèles de type « bag of words ». Lors de la création d’un modèle de type « bag of words » ou sac de n-grammes, ce sont les mots comme les articles (par exemple, un, le, etc.) et les prépositions (par exemple, du, de, sur, etc.) qui peuvent compter le plus grand nombre d’occurrences. Ces mots ne fournissent pas beaucoup d’informations sur le contenu ou le type d’un document et sont donc largement inutiles dans les tâches de classification. Les techniques de prétraitement de texte comme la suppression des mots vides (souvent utilisées pour la racinisation) peuvent permettre d’éliminer les mots non pertinents des jeux de données textuelles afin d’améliorer la structure des modèles de type « bag of words ». Heureusement, nombre de bibliothèques et packages Python, tels que NLTK ou sklearn, contiennent des fonctions qui permettent d’appliquer des techniques de prétraitement courantes.
Hachage. En fait, le hachage de caractéristiques convertit les mots individuels des données de texte entrées en un ensemble numérique de taille fixe. Cette plage de chiffres fixe est ensuite utilisée pour construire l’espace vectoriel du modèle de sac de mots. Limiter la plage de chiffres, et donc les dimensions du modèle, à une taille fixe, permet d’éviter les phénomènes de parcimonie et de haute dimensionnalité. L’un des principaux inconvénients du hachage, c’est ce que l’on appelle les collisions. Une collision de hachage se produit lorsque deux jetons indépendants sont mappés sur le même entier. Un autre inconvénient du hachage, c’est qu’il ne prend pas en compte les mots polysémiques.8
Avec les modèles de sac de mots standard, les mots non pertinents sur le plan sémantique (par exemple, le, certains, etc.) peuvent présenter la fréquence de termes la plus élevée, et donc avoir le plus de poids dans un modèle. C’est le problème que vise à corriger le TF-IDF (Term Frequency-Inverse Document Frequency). Alors que le modèle de sac de mots ne compte que le nombre d’occurrences d’un mot dans un document, le TF-IDF tient compte de sa prévalence dans chaque document du jeu de textes. Le TF-IDF est représenté dans l’équation suivante :
Dans cette équation, le premier terme représente la valeur calculée par le modèle de sac de mots : la fréquence du terme. Le deuxième terme représente la fréquence inverse de document. N correspond au nombre total de documents dans le jeu de textes et n au nombre de documents dans lesquels un mot donné apparaît. Plus le nombre de documents dans lesquels un mot donné apparaît est élevé, plus la TF-IDF réduit le poids de ce mot. En ce sens, le TF-IDF est un exemple de dimensionnement de caractéristiques dans les modèles de machine learning.9
Tout comme les modèles de sac de mots génériques, les packages NLP contiennent souvent déjà des fonctions permettant d’implémenter le TF-IDF, comme la fonction tfidfvectorizer de scikit-learn.
Différents modèles de sac de mots sont utilisés dans diverses tâches de NLP. Par exemple, le réseau neuronal word2vec utilise un sac de mots continu pour produire des modèles de plongements lexicaux.10 L’analyse et la classification des sentiments peuvent également s’appuyer sur des modèles de sac de mots.11
Pour nombre de techniques de NLP, les recherches initiales se sont concentrées sur l’anglais ou d’autres langues basées sur l’écriture latine, comme l’espagnol ou le français. Plus récemment, les chercheurs se sont intéressés à d’autres langues, comme l’arabe. Des études récentes ont examiné l’efficacité des modèles de sac de mots associés à d’autres outils de NLP tels que word2vec pour l’analyse et la classification des sentiments dans les textes en arabe, avec des résultats prometteurs.12 D’autres études montrent le potentiel des classificateurs naïfs bayésiens basés sur des modèles de sac de mots pour la désambiguïsation lexicale dans les textes en sanskrit.13
Des approches de représentation par sacs de mots ont été testées dans des algorithmes permettant de détecter les propos haineux sur les plateformes de réseaux sociaux, avec un taux de réussite variable. Une étude a comparé le sac de mots aux classificateurs word2vec et aux classificateurs d’apprentissage profond comme BERT, faisant valoir que le modèle BERT surpassait les modèles de sac de mots et que le TF-IDF n’améliorait pas de manière significative les prédictions de ces derniers.14 En revanche, une étude ultérieure a présenté un algorithme basé sur un sac de mots et un classificateur naïf bayésien destiné à la détection de discours haineux : il atteignait une précision de près de 99 %.15 Les différences en termes de taille et d’échantillonnage des données, ainsi qu’en termes de prétraitement du texte, peuvent expliquer ces écarts dans les résultats. En effet, d’autres études suggèrent que les performances comparatives entre le modèle BERT et les classificateurs basés sur un sac de mots dépendent de la taille des catégories de classification des jeux de données.16
Plus récemment, les communautés du domaine de la vision par ordinateur ont adopté leur propre variante du modèle de sac de mots pour l’extraction de caractéristiques dans les tâches de classification et de récupération d’images. Cette approche détecte et extrait les caractéristiques des images et regroupe les morceaux similaires sous forme de « mots de code ». La plupart des difficultés inhérentes à l’utilisation de l’approche par sac de mots pour la classification des images sont les mêmes que les difficultés rencontrées dans d’autres tâches de vision par ordinateur : par exemple, objets avec des couleurs ou des arrière-plans similaires, occlusion et superposition d’objets, variation intraclasse, etc.17
Concevez facilement des assistants et des agents IA évolutifs, automatisez les tâches répétitives et simplifiez les processus complexes avec IBM watsonx Orchestrate.
Accélérez la valeur métier de l’intelligence artificielle grâce à un portefeuille puissant et flexible de bibliothèques, de services et d’applications.
Réinventez les workflows et les opérations critiques en ajoutant l’IA pour optimiser les expériences, la prise de décision et la valeur métier en temps réel.
IBM Granite est notre famille de modèles d’IA ouverts, performants et fiables, conçus pour les entreprises et optimisés pour dimensionner vos applications d’IA. Explorez les options de langage, de code, de séries temporelles et de garde-fous.
Découvrez comment le traitement automatique du langage naturel peut vous aider à interagir de manière plus naturelle avec les ordinateurs.
Nous avons interrogé 2 000 entreprises à propos de leurs initiatives d’IA pour découvrir ce qui fonctionne, ce qui ne fonctionne pas et comment progresser.
Explorez le site web IBM Developer pour accéder à des blogs, des articles et des newsletters et pour en savoir plus sur l’IA intégrable d’IBM.
1 Ruslan Mitkov (éd.), Oxford Handbook of Computational Linguistics, 2e édition, Oxford University Press, 2014.
2 Alice Zheng et Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018.
3 Daniel Jurafsky et James Martin, Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition, 3e édition, 2023, https://web.stanford.edu/~jurafsky/slp3. Christopher Manning et Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 2000.
4 Dongyang Yan, Keping Li, Shuang Gu et Liu Yang, « Network-Based Bag-of-Words Model for Text Classification », IEEE Access, vol. 8, 2020, pages 82641 à 82652, https://ieeexplore.ieee.org/document/9079815.
5 Christopher Manning et Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 2000.
6 Dani Yogatama, « Sparse Models of Natural Language Text », thèse de doctorat, Université de Carnegie Mellon, 2015, https://lti.cmu.edu/people/alumni/alumni-thesis/yogatama-dani-thesis.pdf
7 Yoav Goldberg, Neural Network Methods for Natural Language Processing, Springer, 2022.
8 Alice Zheng et Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018.
9 Alice Zheng et Amanda Casari, Feature Engineering for Machine Learning, O’Reilly, 2018.
10 Tomas Mikolov, Kai Chen, Greg Corrado et Jeffrey Dean, « Efficient Estimation of Word Representations in Vector Space », actes de l’atelier de la première conférence internationale sur les représentations d’apprentissage (ICLR), 2013, https://arxiv.org/abs/1301.3781.
11 Tan Thongtan et Tanasanee Phienthrakul, « Sentiment Classification Using Document Embeddings Trained with Cosine Similarity », actes de la 57e réunion annuelle de l’Association for Computational Linguistics : atelier de recherche pour les étudiants, 2019, pages 407 à 414, https://aclanthology.org/P19-2057/.
12 Huda Abdulrahman Almuzaini et Aqil M. Azmi, « Impact of Stemming and Word Embedding on Deep Learning-Based Arabic Text Categorization », IEEE Access, vol. 8, 2020, pages 127913 à 127928, https://ieeexplore.ieee.org/abstract/document/9139948. Mohammed Kasri, Marouane Birjali et Abderrahim Beni-Hssane, « A comparison of features extraction methods for Arabic sentiment analysis », actes de la 4e conférence internationale sur le big data et l’Internet des objets (BDIoT ’19), 2019, https://dl.acm.org/doi/abs/10.1145/3372938.3372998.
13 Archana Sachindeo Maurya, Promila Bahadur et Srishti Garg, « Approach Toward Word Sense Disambiguation for the English-To-Sanskrit Language Using Naïve Bayesian Classification », actes du troisième symposium doctoral sur l’intelligence informatique, 2023, pages 477 à 491, https://link.springer.com/chapter/10.1007/978-981-19-3148-2_40.
14 Joni Salminen, Maximilian Hopf, Shammur A. Chowdhury, Soon-gyo Jung, Hind Almerekhi et Bernard J. Jansen, « Developing an online hate classifier for multiple social media platforms », Human-centric Computing and Information Sciences, vol. 10, 2020, https://hcis-journal.springeropen.com/articles/10.1186/s13673-019-0205-6.
15 Yogesh Pandey, Monika Sharma, Mohammad Kashaf Siddiqui et Sudeept Singh Yadav, « Hate Speech Detection Model Using Bag of Words and Naïve Bayes », Advances in Data and Information Sciences, 2020, pages 457 à 470, https://link.springer.com/chapter/10.1007/978-981-16-5689-7_40.
16 Paula Fortuna, Juan Soler-Company et Leo Wanner, « How well do hate speech, toxicity, abusive and offensive language classification models generalize across datasets? », Information Processing and Management, vol. 58, 2021, https://www.sciencedirect.com/science/article/pii/S0306457321000339.
17 Wisam A. Qader, Musa M. Ameen et Bilal I. Ahmed, « An Overview of Bag of Words: Importance, Implementation, Applications, and Challenges », actes de la cinquième conférence internationale d’ingénierie sur les développements dans les applications du génie civil et informatique (IEC2019), 2019, pages 200 à 204, https://ieeexplore.ieee.org/document/8950616.