My IBM Se connecter S’abonner

Qu’est-ce que la racinisation ?

29 novembre 2023

Auteurs

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Program Manager

La racinisation est l'une des nombreuses techniques de normalisation du texte qui convertit les données de texte brutes en un format lisible pour les tâches de traitement automatique du langage naturel.

La racinisation est une technique de prétraitement de texte dans le traitement automatique du langage naturel (NLP). Plus précisément, il s’agit du processus de réduction des formes fléchies d’un mot à une forme dite « stem » ou racine, également connue sous le nom de « lemme » en linguistique.1 Il s’agit de l’une des deux méthodes principales (l’autre étant la lemmatisation), qui réduit les variantes flexionnelles au sein d’un jeu de données textuelles à un lexème morphologique.Ce faisant, la racinisation vise à améliorer le traitement de texte dans les systèmes de machine learning et de recherche d’information.

Pourquoi utiliser la racinisation ?

Les machines, des fonctions de recherche jusqu’aux modèles d’apprentissage profond, traitent le langage en grande partie en fonction de sa forme, et de nombreux chercheurs affirment que les ordinateurs ne sont pas capables de comprendre le sens du langage.2 Bien que ce dernier point soit débattu, il n’en reste pas moins que les modèles de machine learning doivent être entraînés à reconnaître les différents mots comme des variantes morphologiques d’un mot de base. Par exemple, dans les moteurs de recherche ou les catalogues de bibliothèques, les utilisateurs peuvent soumettre une requête d’un seul mot (par exemple, investir), mais ils s’attendent à des résultats qui emploient toutes les dérivations du mot (par exemple, investir, investissement, investissements, etc.). En réduisant les formes dérivatives à un seul mot racine, la racinisation aide les systèmes de recherche d’information à assimiler les mots morphologiquement apparentés.3

Pour de nombreuses tâches de fouille de textes, notamment la classification de texte, le clustering ou l’indexation, la dérivation permet d’améliorer la précision en réduisant la dimensionnalité des algorithmes de machine learning et en regroupant les mots en fonction du concept.La réduction de la dimensionnalité des algorithmes peut améliorer l’exactitude et la précision des modèles statistiques de NLP, tels que les modèles thématiques et les plongements lexicaux.4 La racinisation améliore ainsi la précision lors de l’exécution de diverses tâches de NLP, telles que l’analyse des sentiments ou l’étiquetage de la catégorie grammaticale. La racinisation constitue ainsi une étape importante dans le développement de grands modèles de langage.

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 : comment ça marche ?

La racinisation est une étape des pipelines de fouille de texte qui consiste à structurer les données textuelles brutes à des fins de traitement automatique. Il s’agit de supprimer les affixes des mots pour n’en conserver que la base.5 Cela revient à supprimer des caractères dans les tokens de fin de mot. Outre cette caractéristique commune, les algorithmes de racinisation varient considérablement.

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.

Types d’algorithmes de racinisation

Pour découvrir les différences entre les opérations de l'algorithme de racinisation, nous pouvons traiter cette ligne de l'œuvre Songe d'une nuit d'été de Shakespeare : « Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind. » (L'amour ne voit pas avec les yeux, mais avec l'âme ; et voilà pourquoi l'ailé Cupidon est peint aveugle.) Avant la racinisation, les utilisateurs doivent tokeniser les données textuelles brutes. Le générateur de tokens intégré de la boîte à outils de langage naturel Python (NLTK) génère le texte cité comme suit :

Tokenisé : ['Love', 'looks', 'not', 'with', 'the', 'eyes', 'but', 'with', 'the', 'mind', ',', 'and', 'therefore', 'is', 'winged', 'Cupid', 'painted', 'blind', '.']

En exécutant le résultat tokenisé sur plusieurs racinisations, nous pouvons observer en quoi les algorithmes de racinisation diffèrent.

Algorithme de racinisation de Lovins

La racinisation de Lovins est la première à avoir été publiée.Il s’agit essentiellement d’une fonction de recherche et de remplacement avec de nombreux paramètres. Elle compare chaque token d’entrée à une liste de suffixes courants, chaque suffixe étant conditionné par l’une des 29 règles. Si l’un des suffixes de la liste se trouve dans un token et que la suppression du suffixe ne viole aucune des conditions du suffixe associé, l’algorithme supprime ce suffixe du token. Le token dérivé est ensuite soumis à un autre ensemble de règles, qui corrigent les malformations courantes des racines dérivées, telles que les lettres doubles (par exemple, hopping devient hopp, puis hop).6

 Ce code utilise la bibliothèque de racinisation Python7 pour endiguer la citation tokenisée de Shakespeare :

from stemming.lovins import stem
from nltk.tokenize import word_tokenize
text = "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind."
words = word_tokenize(text)
stemmed_words = [stem(word) for word in words]

Le code génère :

Tokénisé : ['Lov', 'look', 'not', 'with', 'th', 'ey', 'but', 'with', 'th', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'Cupid', 'paint', 'blind', '.']

Le résultat montre comment la racinisation de Lovins transforme correctement les conjugaisons et les temps en formes de base (par exemple, peint devient peindre) tout en éliminant la pluralisation (par exemple, yeux devient œil). Mais l'algorithme de racinisation de Lovins renvoie également un certain nombre de thèmes mal formés, telles que lov, th et ey. Ces mots racines mal formés sont le résultat de la suppression d'un trop grand nombre de caractères. Comme c'est souvent le cas dans le machine learning, ces erreurs permettent de révéler les processus sous-jacents.

Si l’on compare avec la liste des suffixes de la racinisation de Lovins, le suffixe le plus long correspondant à la fois à love et à the est le caractère unique -e. La seule condition attachée à ce suffixe est « Aucune restriction sur le thème », ce qui signifie que la racinisation peut supprimer -e, quelle que soit la longueur de la branche restante. Malheureusement, aucune des branches lov ou th ne contient les caractéristiques utilisées par l’algorithme de Lovins pour identifier les mots mal formés, tels que les lettres doubles ou les pluriels irréguliers.8

Lorsque de telles racines malformées échappent à l'algorithme, la racinisation de Lovins peut réduire des mots sémantiquement sans rapport à la même racine, par exemple, the, these et this se réduisent tous à th. Bien sûr, ces trois mots sont tous démonstratifs et partagent donc une fonction grammaticale. Mais d'autres démonstratifs, tels que that et those, ne se réduisent pas à th. Cela signifie que les thèmes générés par Lovins ne représentent pas correctement les groupes de mots.

Algorithme de racinisation de Porter

Comparé à l’algorithme de Lovins, l’algorithme de Porter est plus mathématique. Fondamentalement, cet algorithme classe chaque caractère d’un jeton donné comme consonne (c) ou voyelle (v), regroupant les consonnes ultérieures sous le nom de C et les voyelles suivantes sous le nom de V. La racinisation représente ainsi chaque jeton de mot comme une combinaison de groupes de consonnes et de voyelles. Une fois énumérée de cette façon, la racinisation exécute chaque jeton de mot à travers une liste de règles qui spécifient les caractères de fin à supprimer en fonction du nombre de groupes de voyelles conformes à un jeton.9 Comme l’anglais lui-même suit des règles lexicales générales, mais pas absolues, le critère systématique de l’algorithme de racinisation de Porter pour déterminer la suppression des suffixes peut renvoyer des erreurs.

Python NLTK intègre une fonction d’algorithme de racinisation de Porter.Ce code déploie l’algorithme de racinisation de Porter sur la citation tokenisée de Shakespeare :

from nltk.stem import PorterStemmer
from nltk.tokenize import word_tokenize
porter_stemmer = PorterStemmer()
text = "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind."
words = word_tokenize(text)
stemmed_words = [porter_stemmer.stem(word) for word in words]

Ce code renvoie :

Tokénisé : ['love', 'look', 'not', 'with', 'the', 'eye', 'but', 'with', 'the', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'cupid', 'paint', 'blind', '.']

Comme pour Lovins, Porter modifie correctement la conjugaison des verbes et le pluriel des noms. Bien qu'il n'y ait pas d'autres thèmes malformés de Lovins (par exemple, love to lov), l'algorithme de racinisation de Porter supprime néanmoins, par erreur, le -e de la fin de therefore.

Selon la méthode de regroupement des consonnes et voyelles de Porter, therefore est représenté par CVCVCVCV, ou C(VC)3V, l'exposant signifiant les répétitions des groupes de consonnes et voyelles.

L’une des dernières étapes de l’algorithme indique que, si un mot n’a fait l’objet d’aucune dérivation et a une valeur d’exponentielle supérieure à 1, -e est supprimé de la fin du mot (le cas échéant). La valeur de l’exposant de therefore est égale à 3 et ne contient aucun des suffixes énumérés dans les autres conditions de l’algorithme.10 Ainsi, therefore devient therefor.

Certes, il s'agit de la seule erreur de la racinisation de Porter, ce qui explique peut-être pourquoi il s'agit de l'algorithme le plus largement adopté. En effet, la racinisation de Porter a servi de base aux algorithmes de racinisation ultérieurs.

La racinisation de Snowball

La racinisation de Snowball est une version mise à jour de celui de Porter. Bien qu'il vise à appliquer un ensemble de règles plus solides pour déterminer la suppression du suffixe, il reste néanmoins sujet à un grand nombre d'erreurs.Tout comme la racinisation de Porter, Python NLTK contient une fonction de la racinisation de Snowball intégrée :

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]

Le résultat du texte de Shakespeare est le même que celui de la racinisation de Porter, réduisant therefore à therefor :

Tokénisé : ['love', 'look', 'not', 'with', 'the', 'eye', 'but', 'with', 'the', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'cupid', 'paint', 'blind', '.']

La racinisation de Snowball se distingue de celle de Porter sur deux points principaux. Tout d’abord, alors que les racinisations de Lovins et de Porter proviennent uniquement de mots anglais, la racinisation de Snowball peut traiter des textes dans un certain nombre d’autres langues à écriture romaine, telles que le néerlandais, l’allemand, le français et même le russe. Deuxièmement, la racinisation de Snowball, lorsqu’elle est mis en œuvre à l’aide de la bibliothèque Python NLTK, peut ignorer les mots vides. Les mots vides sont une collection non universelle de mots qui sont supprimés d’un jeu de données lors du prétraitement. La liste d’arrêt prédéfinie de la racinisation de Snowball contient des mots sans définition conceptuelle directe et dont la fonction est plus grammaticale que sémantique. Les mots vides inclus dans la liste d’arrêt en anglais de la racinisation de Snowball incluent the, a, being, et d’autres valeurs similaires.11

Algorithme de racinisation Lancaster

De nombreuses sources décrivent la racinisation de Lancaster, également connu sous le nom de Paice, comme la plus agressive des racinisations de la langue anglaise. La racinisation de Lancaster contient une liste de plus de 100 règles qui dictent les chaînes de caractères de fin, le cas échéant, à remplacer par d’autres chaînes, le cas échéant. La racinisation parcourt chaque jeton de mot, en le comparant à toutes les règles. Si la chaîne de fin du jeton correspond à celle d’une règle, l’algorithme exécute l’opération décrite par la règle, puis exécute à nouveau le nouveau mot transformé dans toutes les règles. La racinisation parcourt toutes les règles jusqu’à ce qu’un jeton donné les dépasse toutes sans être transformé.12

Bien qu'il ne soit pas disponible dans Python NLTK, la racinisation de Lancaster est disponible dans la bibliothèque de racinisation :13

from stemming.paicehusk import stem
from nltk.tokenize import word_tokenize
text = "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind."
words = word_tokenize(text)
stemmed_words = [stem(word) for word in words]

Le code indique que le passage de Shakespeare symbolisé est le suivant :

Tokénisé : ['Lov', 'look', 'not', 'with', 'the', 'ey', 'but', 'with', 'the', 'mind', ',', 'and', 'theref', '', 'wing', 'Cupid', 'paint', 'blind', '.']

Il est clair que l'approche itérative de la racinisation de Lancaster est la plus agressive des racinisations, comme le montre theref. Tout d'abord, la racinisation de Lancaster possède la règle « e1> ». Cette règle supprime le caractère ­-e sans remplacement.Une fois que l'algorithme a supprimé -e de therefore, il exécute le nouveau therefor à travers chaque règle. Le mot nouvellement transformé correspond à la règle « ro2> ». Cette règle supprime le suffixe à deux caractères -or sans remplacement. La racinisation theref résultante ne correspond à aucune des autres règles de l'algorithme et est donc renvoyée comme base de la racinisation. Contrairement à Lovins, l'algorithme de Lancaster n'a aucun moyen de tenir compte des mots mal formés.

Limites de la racinisation

Prise en charge linguistique

Il existe de nombreuses racinisations en anglais, ainsi que des racinisations pour d’autres langues à écriture romaine. Plus récemment, la recherche s’est orientée vers le développement et l’évaluation d’algorithmes de racinisation pour les langues à écriture non romaine. L’arabe, en particulier, peut être difficile en raison de sa morphologie complexe et de ses variations orthographiques. De nombreuses études comparent l’efficacité de différentes racinisations arabes par rapport à des tâches telles que la classification.14 En outre, des chercheurs étudient la précision de la dérivation dans l’amélioration des tâches de recherche d’information en tamoul15 et en sanskrit.16

Sur-racinisation et sous-racinisation

Bien que les recherches prouvent le rôle de la racinisation dans l’amélioration de la précision des tâches de NLP, la racinisation comporte deux problèmes principaux auxquels les utilisateurs doivent faire attention. On parle de sur-racinisation lorsque deux mots sémantiquement distincts sont réduits à la même racine, et donc confondus.La sous-racinisation signifie que deux mots sémantiquement liés ne sont pas réduits à la même racine.17 Un exemple de sur-racinisation est la réduction de la racinisation de Lancaster de wander en wand, deux termes sémantiquement distincts en anglais. Cependant, les racinisations de Porter et de Lovins ne modifient pas du tout wander. Un exemple de sous-racinisation est la non-réduction, par la racinisation, de knavish à knavish et knave à knave, qui partagent la même racine sémantique. En comparaison, la racinisation de Lovins réduit les deux mots en knav.

Formation de base

Bien qu'elles aient des utilisations et des objectifs similaires, la racinisation et la lemmatisation diffèrent à certains égards. La littérature décrit souvent la racinisation comme étant plus heuristique, c'est-à-dire qu'il supprime les suffixes courants des mots pour produire un mot racine. La lemmatisation, en revanche, effectue une analyse morphologique plus détaillée des différents mots pour déterminer une forme de base du dictionnaire, en supprimant non seulement les suffixes, mais aussi les préfixes. Bien que la racinisation soit plus rapide et plus facile à mettre en œuvre, de nombreux développeurs d'outils d'apprentissage profond peuvent préférer la lemmatisation en raison de son processus d'extraction plus nuancé.

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 Ruslan Mitkov, Oxford Handbook of Computational Linguistics, 2nd edition, Oxford University Press, 2014.

2 Emily Bender and 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 , https://aclanthology.org/2020.acl-main.463

3 Steven Bird, Ewan Klein et Edward Loper, Natural Language Processing with Python, O'Reilley, 2009.

4 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.

5 Christopher Manning et Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 1999.

6 Julie Beth Lovins, « Development of a stemming algorithm », Mechanical Translation and Computational Linguistics, vol.11, n° 1 et 2, 1968, pages 22 à 31, https://aclanthology.org/www.mt-archive.info/MT-1968-Lovins.pdf

7, 13 https://pypi.org/project/stemming/1.0

8 Julie Beth Lovins, « Development of a stemming algorithm », Mechanical Translation and Computational Linguistics, vol.11, n° 1 et 2, 1968, pages 22 à 31, https://aclanthology.org/www.mt-archive.info/MT-1968-Lovins.pdf

9 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 

10 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 

11 Martin Porter, « Snowball: A language for stemming algorithms », 2001, https://snowballstem.org/texts/introduction.html

12 Chris Paice, « Another stemmer », Forum ACM SIGIR, vol. 24, n° 3, 1990, pages 56 à 61, https://dl.acm.org/doi/10.1145/101306.101310

14 Y. A. Alhaj, J. Xiang, D. Zhao, M. A. A. Al-Qaness, M. Abd Elaziz et A. Dahou, « A Study of the Effects of Stemming Strategies on Arabic Document Classification », IEEE Access, vol. 7, pages 32664 à 32671, https://ieeexplore.ieee.org/document/8664087. Janneke van der Zwaan, Maksim Abdul Latif, Dafne van Kuppevelt, Melle Lyklema, Christian Lange, « Are you sure your tool does what it is supposed to do? Validating Arabic root extraction », Digital Scholarship in the Humanities, vol. 36, 2021, pages 137 à 150, https://academic.oup.com/dsh/article/36/Supplement_1/i137/5545478

15 Ratnavel Rajalakshmi, Srivarshan Selvaraj, Faerie Mattins, Pavitra Vasudevan, Anand Kumar, « HOTTEST: Hate and Offensive content identification in Tamil using Transformers and Enhanced Stemming », Computer Speech & Language, vol. 78, 2023, https://www.sciencedirect.com/science/article/abs/pii/S0885230822000870?via%3Dihub

16 Siba Sankar Sahu et Sukomal Pal, « Building a text retrieval system for the Sanskrit language : Exploring indexing, stemming, and searching issues », Computer Speech & Language, Vol. 81, 2023, https://www.sciencedirect.com/science/article/abs/pii/S0885230823000372?via%3Dihub (lien externe à ibm.com)

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