My IBM Se connecter S’abonner

Qu’est-ce que la racinisation et la lemmatisation ?

10 décembre 2023

Auteurs

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Program Manager

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éditation », etc.) . La racinisation et la lemmatisation visent également à améliorer le traitement de texte dans les algorithmes de machine learning .

Pourquoi la racinisation et la lemmatisation ?

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 de machine learning doivent être entraînés pour reconnaître différents mots comme des variantes morphologiques d’un mot de base, voire 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’information et les modèles d’apprentissage profond à assimiler les mots morphologiquement apparentés.

Pour de nombreuses tâches de fouille de textes, notamment la classification de texte, le clustering ou l’indexation, 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 de vecteurs de mots.3

Design 3D de balles roulant sur une piste

Les dernières actualités et informations en matière d’IA 


La newsletter hebdomadaire Think vous apporte toute l’actualité sur l’IA, le cloud et bien d’autres sujets.

Racinisation versus lemmatisation

La racinisation et la lemmatisation font partie d’une même étape des pipelines de fouille de textes 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.

Racinisation : comment ça marche ?

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 de racinisation Snowball et Porter ont une méthode d’élimination des suffixes plus mathématique que les autres algorithmes. En résumé, l’algorithme 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 consonnes 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é.

Comment fonctionne la lemmatisation ?

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 première supprime simplement les suffixes courants de la fin des jetons de mot, la seconde 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.

Limites

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.

Groupe d’experts | Podcast

Décryptage de l’IA : Tour d’horizon hebdomadaire

Rejoignez notre panel d’ingénieurs, de chercheurs, de chefs de produits et autres spécialistes de premier plan pour connaître l’essentiel de l'actualité et des dernières tendances dans le domaine de l’IA.

Solutions connexes

Solutions connexes

IBM watsonx Orchestrate

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.

Découvrir watsonx Orchestrate
Outils et API de traitement automatique du langage naturel

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.

Découvrir les solutions NLP
Conseils et services en matière d’IA

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.

Découvrir les services d’IA
Passez à l’étape suivante

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.

Découvrir watsonx Orchestrate Découvrir les solutions NLP
Notes de bas de page

1 Nitin Indurkhya et Fred Damerau, Handbook of Natural Language Processing, 2e édition, 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. Gati Aher, Rosa Arriaga, Adam Kalai, « Using Large Language Models to Simulate Multiple Humans and Replicate Human Subject Studies », actes de la 40e conférence internationale sur le machine learning, PMLR, vol. 202, 2023, pages 337 à 371, https://proceedings.mlr.press/v202/aher23a.html. Emily Bender et Alexander Koller, « Climbing towards NLU: On Meaning, Form and Understanding in the Age of Data », actes de la 58e réunion annuelle de l’Association for Computational Linguistics, 2020, pages 5185 à 5198, 10.18653/v1/2020.acl-main.463.

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. Martin Porter, « Snowball: A language for stemming algorithms », 2001, https://snowballstem.org/texts/introduction.html.

6 Nitin Indurkhya et Fred Damerau, Handbook of Natural Language Processing, 2e édition, 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. Abdul Jabbar, Sajid Iqbal, Manzoor Ilahi Tamimy, Shafiq Hussain et Adnan Akhunzada, « Empirical evaluation and study of text stemming algorithms », Artificial Intelligence Review, vol. 53, 2020, pages 5559 à 5588, https://link.springer.com/article/10.1007/s10462-020-09828-3. Abed Alhakim Freihat, Mourad Abbas, Gábor 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.

9 Chris Paice, « Stemming », Encyclopedia of Database Systems, Springer, 2020.