Accueil
Thèmes
Racinisation et lemmatisation
Date de publication : le 10 décembre 2023
Contributeurs : Jacob Murel Ph.D., Eda Kavlakoglu
La racinisation (ou stemming) et la lemmatisation sont des techniques de prétraitement de texte qui réduisent les variantes de mots à une seule forme de base.
La racinisation et la lemmatisation sont des techniques de prétraitement de texte utilisées dans le traitement automatique du langage naturel (NLP). Plus précisément, elles réduisent les formes dérivées des mots dans un jeu de données textuelles à une racine commune ou à une forme du dictionnaire, également connue sous le nom de « lemme » en linguistique informatique.1
La racinisation et la lemmatisation sont particulièrement utiles dans les systèmes de recherche d’information tels que les moteurs de recherche, où les utilisateurs peuvent soumettre une requête avec un mot (par exemple, méditer), mais s’attendre à des résultats qui utilisent n’importe quelle forme dérivée du mot (par exemple, médites, médiation, etc.) . La racinisation et la lemmatisation visent également à améliorer le traitement de texte dans les algorithmes de machine learning .
Explorez les principaux avantages de l’IA générative et découvrez comment les organisations peuvent intégrer l'IA générative et le machine learning dans leurs activités.
Les chercheurs se demandent si l’intelligence artificielle est capable de raisonner, et ce débat s’est étendu à la linguistique informatique. Les chatbots et les modèles d’apprentissage profond peuvent-ils uniquement traiter des formes linguistiques ou peuvent-ils comprendre la sémantique ?2 Quoi que l’on pense à ce sujet, il n’en demeure pas moins que les modèles d’apprentissage automatique doivent être entraînés pour reconnaître différents mots comme des variantes morphologiques d’un mot de base. Et même traiter les mots en fonction de la morphologie et non de la sémantique. En réduisant les formes dérivatives à un seul mot racine, la racinisation et la lemmatisation aident les systèmes de recherche d’informations et les modèles d’apprentissage profond à assimiler les mots morphologiquement apparentés.
Pour de nombreuses tâches d’exploration de texte, notamment la classification de texte, le clustering, l’indexation, etc., la racinisation et la lemmatisation permettent d’améliorer la précision en réduisant la dimensionnalité des algorithmes de machine learning et en regroupant les mots morphologiquement liés. La réduction de la dimensionnalité des algorithmes peut, à son tour, améliorer l’exactitude et la précision des modèles statistiques dans le NLP, tels que les modèles thématiques et les modèles vecteurs de mots.3
La racinisation et la lemmatisation font partie d’une même étape des pipelines d’exploration de texte qui consiste à structurer les données textuelles brutes à des fins de traitement automatique. La racinisation et la lemmatisation suppriment toutes deux les affixes des formes dérivées des mots, ne laissant qu’une forme racine.4 Ces processus reviennent à supprimer des caractères au début et à la fin des mots. Les racines qui en résultent, ou mots de base, sont ensuite transmises pour poursuivre le traitement. Au-delà de cette similitude de base, la racinisation et la lemmatisation présentent des différences essentielles dans la manière dont elles réduisent les différentes formes d’un mot à une forme de base commune.
Les algorithmes de racinisation diffèrent considérablement, bien qu’ils partagent certains modes de fonctionnement généraux. Les algorithmes de racinisation, ou stemmers, éliminent les suffixes des mots en comparant les jetons de mots en entrée à une liste prédéfinie de suffixes courants. Le stemmer supprime ensuite toutes les chaînes de suffixes trouvées dans le mot, à condition que ce dernier ne contrevienne à aucune règle ou condition associée à ce suffixe. Certains stemmers (par exemple, le stemmer de Lovins) soumettent les fragments obtenus après la racinisation à un ensemble de règles supplémentaires pour corriger les racines mal formées.
L’algorithme le plus largement utilisé est l’algorithme de racinisation de Porter et sa version mise à jour, le stemmer Snowball. Pour mieux comprendre la racinisation, nous pouvons soumettre le passage suivant de l’œuvre Hamlet de Shakespeare au stemmer Snowball : « There is nothing either good or bad but thinking makes it so. »
La boîte à outils Python pour le langage naturel (NLTK) contient des fonctions intégrées pour les stemmers Snowball et Porter. Après avoir jetonisé la citation de Hamlet à l’aide de NLTK, nous pouvons passer le texte jetonisé par le stemmer Snowball à l’aide du code suivant :
from nltk.stem.snowball import SnowballStemmer from nltk.tokenize import word_tokenize stemmer = SnowballStemmer("english", True) text = "There is nothing either good or bad but thinking makes it so." words = word_tokenize(text) stemmed_words = [stemmer.stem(word) for word in words] print("Original:", text) print("Tokenized:", words) print("Stemmed:", stemmed_words)
Le code génère :
Original: There is nothing either good or bad but thinking makes it so. Tokenized: [’There’, ’is’, ’nothing’, ’either’, ’good’, ’or’, ’bad’, ’but’, ’thinking’, ’makes’, ’it’, ’so’, ’.’] Stemmed: [’there’, ’is’, ’noth’, ’either’, ’good’, ’or’, ’bad’, ’but’, ’think’, ’make’, ’it’, ’so’, ’.’]
Les algorithmes Snowball et Porter ont une méthode d’élimination des suffixes plus mathématique que les autres algorithmes. En résumé, le stemmer compare chaque jeton de mot à une liste de règles spécifiant des chaînes de suffixes à supprimer en fonction du nombre de groupes de voyelles et de consonances dans un jeton.5 Bien sûr, comme la langue anglaise suit des règles lexicales générales, mais pas absolues, le critère systématique de l’algorithme de racinisation renvoie des erreurs, telles que noth.
Le radical enlève -ing, qui est une terminaison courante indiquant le présent progressif. Dans la citation de Hamlet , cependant, la suppression de -ing produit de manière erronée la racine noth. Cela peut empêcher l’analyse linguistique ultérieure d’associer nothing à des mots similaires, tels que anything et something. De plus, le stemmer ne change rien au verbe irrégulier is. De même, le stemmer Snowball laisse d’autres conjugaisons de to be, telles que was et are, sans les raciniser. Cela peut empêcher les modèles d’associer correctement les conjugaisons irrégulières d’un verbe donné.
La littérature définit généralement la racinisation comme le processus de suppression des affixes des mots afin d’obtenir des chaînes de mots racines, et la lemmatisation comme l’entreprise plus large de réduction des variantes morphologiques à une forme de base du dictionnaire.6 La distinction pratique entre la racinisation et la lemmatisation est que, lorsque la racinisation supprime simplement les suffixes courants de la fin des jetons de mot, la lemmatisation garantit que le mot en sortie est une forme normalisée existante du mot (par exemple, lemme) que l’on peut trouver dans le dictionnaire.7
Comme la lemmatisation vise à produire des formes de base de dictionnaire, elle nécessite une analyse morphologique plus robuste que la racinisation. Le marquage des parties du discours (Part of speech, POS) est une étape cruciale de la lemmatisation. Il s’agit essentiellement d’attribuer à chaque mot un marqueur indiquant sa fonction syntaxique dans la phrase. Python NLTK comporte une fonction destinée à l’algorithme WordNet Lemmatizer permettant de lemmatiser le passage de Hamlet :
from nltk.stem import WordNetLemmatizer from nltk.corpus import wordnet from nltk import word_tokenize, pos_tag def get_wordnet_pos(tag): if tag.startswith(’J’): return wordnet.ADJ elif tag.startswith(’V’): return wordnet.VERB elif tag.startswith(’N’): return wordnet.NOUN elif tag.startswith(’R’): return wordnet.ADV else: return wordnet.NOUN def lemmatize_passage(text): words = word_tokenize(text) pos_tags = pos_tag(words) lemmatizer = WordNetLemmatizer() lemmatized_words = [lemmatizer.lemmatize(word, get_wordnet_pos(tag)) for word, tag in pos_tags] lemmatized_sentence = ’ ’.join(lemmatized_words) return lemmatized_sentence text = "There is nothing either good or bad but thinking makes it so." result = lemmatize_passage(text) print("Original:", text) print("Tokenized:", word_tokenize(text)) print("Lemmatized:", result)
Le code renvoie :
Original: There is nothing either good or bad but thinking makes it so. Tokenized: [’There’, ’is’, ’nothing’, ’either’, ’good’, ’or’, ’bad’, ’but’, ’thinking’, ’makes’, ’it’, ’so’, ’.’] Lemmatized: There be nothing either good or bad but think make it so .
WordNet Lemmatizer, tout comme l’algorithme de racinisation Snowball, réduit les conjugaisons de verbes à des formes de base, par exemple thinking donnerait think et makes donnerait make. Cependant, contrairement à l’algorithme de dérivation Snowball, WordNet Lemmatizer identifie nothing comme un nom et laisse sa terminaison -ing inchangée tout en modifiant is pour retrouver sa forme de base be. De cette manière, WordNet Lemmatizer fusionne de manière plus appropriée les formes verbales irrégulières.
La racinisation et la lemmatisation permettent principalement de normaliser les données textuelles en langue anglaise. Ces deux techniques de normalisation de texte prennent également en charge plusieurs autres langues utilisant l’alphabet latin, telles que le français, l’allemand et l’espagnol. D’autres alphabets, comme le russe, sont également pris en charge par l’algorithme Snowball. Le développement d’algorithmes de racinisation et de lemmatisation pour d’autres langues, notamment l’arabe, est un domaine de recherche récent et en cours. L’arabe représente un défi particulier en raison de sa morphologie agglutinante, de ses variations orthographiques et de son ambiguïté lexicale, entre autres particularités.8 Dans l’ensemble, ces éléments posent problème à une méthode systématique d’identification des formes de mots de base parmi les variantes morphologiques, du moins par rapport aux mots anglais.
Au-delà de cette limitation générale, la racinisation et la lemmatisation présentent chacune des inconvénients. Comme l’illustre l’exemple de Hamlet, la racinisation est un processus relativement heuristique, basé sur des règles, de suppression de chaînes de caractères. La sur-racinisation et la sous-racinisation sont deux erreurs courantes. Dans le premier cas, deux mots sémantiquement distincts sont réduits à la même racine (par exemple, news à new) ; dans le second, deux mots sémantiquement apparentés ne sont pas réduits à la même racine (par exemple, knavish et knave qui donnent respectivement knavish et knave).9 En outre, la racinisation ne supprime que les suffixes des mots et ne peut donc pas prendre en compte les formes verbales irrégulières ou les préfixes comme le fait la lemmatisation. Bien sûr, la racinisation est relativement simple et directe à mettre en œuvre, tandis que la lemmatisation peut être plus coûteuse et plus chronophage en termes de calculs selon la taille des données traitées.
Repensez votre façon d’exploiter l’IA : pour votre sérénité, notre équipe internationale diverse de plus de 20 000 experts en IA vous accompagnera dans la création et la mise à l’échelle de vos projets d’IA et d’automatisation. Alliant rapidité, éthique et fiabilité, vous vous appuierez sur notre technologie IBM watsonx et sur un écosystème de partenaires ouvert, pour assurer la livraison du modèle d’IA de votre choix, quel que soit le cloud utilisé.
Opérationnalisez l’IA dans toute votre entreprise pour offrir des avantages de manière rapide et éthique. Notre vaste portefeuille de produits d’IA et de solutions d’analytique professionnels est conçu pour réduire les obstacles à l’adoption de l’IA et créer le bon socle de données, tout en optimisant les résultats et en favorisant une utilisation responsable.
Décuplez la puissance de l’IA avec notre plateforme d’IA et de données nouvelle génération. IBM Watsonx est un portefeuille d’applications, de solutions et d’outils prêts à l’emploi conçus pour réduire les coûts et les obstacles liés à l’adoption de l’IA tout en optimisant les résultats de l’IA et en favorisant son utilisation responsable.
L’article fait la distinction entre le traitement automatique du langage naturel, la compréhension du langage naturel et la génération de langage naturel.
Un développeur d’IBM présente l’histoire et les principes du NLP avec un aperçu pratique des techniques de prétraitement.
La documentation de référence fournit des notes pour l’implémentation de la lemmatisation dans la bibliothèque IBM Watson NLP.
1 Nitin Indurkhya et Fred Damerau, Handbook of Natural Language Processing, 2nd edition, CRC Press, 2010.
2 Zhaofeng Wu, Linlu Qiu, Alexis Ross, Ekin Akyürek, Boyuan Chen, Bailin Wang, Najoung Kim, Jacob Andreas, Yoon Kim, "Reasoning or Reciting? Exploring the Capabilities and Limitations of Language Models Through Counterfactual Tasks », 2023, https://arxiv.org/abs/2307.02477 (lien externe à ibm.com). Gati Aher, Rosa Arriaga, Adam Kalai, " Utiliser de grands modèles linguistiques pour simuler plusieurs humains et reproduire des études sur des sujets humains, " Actes de la 40e Conférence internationale sur l’apprentissage automatique, PMLR, vol. 202, 2023, pages 337-371, https://proceedings.mlr.press/v202/aher23a.html (lien externe à ibm.com). Emily Bender et Alexander Koller, « Climbing towards NLU : On Meaning, Form and Understanding in the Age of Data », Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, 2020, pages 5185-5198, 10.18653/v1/2020.acl-main.463 (lien externe à ibm.com).
3 Gary Miner, Dursun Delen, John Elder, Andrew Fast, Thomas Hill et Robert A. Nisbet, Practical Text Mining and Statistical Analysis for Non-Structured Text Data Applications, Academic Press, 2012.
4 Christopher Manning et Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 1999.
5 Martin Porter, « An algorithm for suffix stripping », Program: electronic library and information systems, Vol. 14, n° 3, 1980, pages 130-137, https://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html (lien externe à ibm.com). Martin Porter, « Snowball: A language for stemming algorithms », 2001, https://snowballstem.org/texts/introduction.html (link resides outside ibm.com).
6 Nitin Indurkhya et Fred Damerau, Handbook of Natural Language Processing, 2e edition, CRC Press, 2010. Christopher Manning et Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 1999.
7 Janez Brank, Dunja Mladenic et Marko Grobelnik, « Feature Construction in Text Mining » Encyclopedia of Machine Learning and Data Mining, Springer, 2017.
8 Abed Alhakim Freihat, Gábor Bella, Mourad Abbas, Hamdy Mubarak et Fausto Giunchiglia, « ALP: An Arabic Linguistic Pipeline », Analysis and Application of Natural Language and Speech Processing, 2022, pages 67-99, https://link.springer.com/chapter/10.1007/978-3-031-11035-1_4. (lien externe à ibm.com) Abdul Jabbar, Sajid Iqbal, Manzoor Ilahi Tamimy, Shafiq Hussain and Adnan Akhunzada, « Empirical evaluation and study of text stemming algorithms », Artificial Intelligence Review, Vol. 53, 2020, pp. 5559–5588,https://link.springer.com/article/10.1007/s10462-020-09828-3 (lien externe à ibm.com). Abed Alhakim Freihat, Mourad Abbas, G’abor Bella, Fausto Giunchiglia, « Towards an Optimal Solution to Lemmatization in Arabic », Procedia Computer Science, Vol. 142, 2018, pages 132-140, https://www.sciencedirect.com/science/article/pii/S1877050918321707?via%3Dihub (lien externe à ibm.com).
9 Chris Paice, « Stemming », Encyclopedia of Database Systems, Springer, 2020.