Racination
Glissez pour afficher le menu
Le stemming est une technique de normalisation de texte utilisée en TAL (traitement automatique du langage) pour réduire les mots fléchis à leur racine.
Plus précisément, le stemming consiste à supprimer les affixes (généralement uniquement les suffixes) des mots afin d'obtenir leur forme racine, appelée stem. Par exemple, les racines de "running", "runs" et "run" sont toutes "run".
L'objectif du stemming est de simplifier l'analyse en traitant des mots similaires comme une même entité, ce qui améliore l'efficacité dans diverses tâches de TAL.
Stemming avec NLTK
NLTK propose différents algorithmes de stemming, les plus populaires étant le Porter Stemmer et le Lancaster Stemmer. Ces algorithmes appliquent des règles spécifiques pour supprimer les affixes et obtenir la racine d'un mot.
Toutes les classes de stemmer dans NLTK partagent une interface commune. Il faut d'abord créer une instance de la classe de stemmer, puis utiliser sa méthode stem() pour chaque jeton.
1234567891011121314151617181920212223242526272829import nltk from nltk.stem import PorterStemmer, LancasterStemmer from nltk.tokenize import word_tokenize from nltk.corpus import stopwords nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) # Create a Porter Stemmer instance porter_stemmer = PorterStemmer() # Create a Lancaster Stemmer instance lancaster_stemmer = LancasterStemmer() text = "Stemming is an essential technique for natural language processing." text = text.lower() tokens = word_tokenize(text) # Filter out the stop words tokens = [token for token in tokens if token.lower() not in stop_words] # Apply stemming to each token porter_stemmed_tokens = [porter_stemmer.stem(token) for token in tokens] lancaster_stemmed_tokens = [lancaster_stemmer.stem(token) for token in tokens] # Display the results print("Original Tokens:", tokens) print("Stemmed Tokens (Porter Stemmer):", porter_stemmed_tokens) print("Stemmed Tokens (Lancaster Stemmer):", lancaster_stemmed_tokens)
Tout d'abord, nous avons appliqué la tokenisation, puis filtré les mots vides et enfin appliqué la racinisation sur nos jetons à l'aide de la compréhension de liste. Concernant les résultats, ces deux racinisateurs ont produit des résultats assez différents. Cela s'explique par le fait que le Lancaster Stemmer possède environ deux fois plus de règles que le Porter Stemmer et est l'un des racinisateurs les plus « agressifs ».
Dans l'ensemble, le Porter Stemmer est l'option la plus populaire, produisant des résultats plus pertinents que le Lancaster Stemmer, qui a tendance à trop raciniser les mots.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion