Contenu du cours
Introduction au NLP
Introduction au NLP
Racine
Comprendre le Stemming
Pour commencer, comprenons d'abord ce qu'est essentiellement le stemming.
Pour être plus précis, le stemming implique de supprimer les suffixes des mots pour obtenir leur forme racine, connue sous le nom de stem. Par exemple, les stems de "running," "ran," et "runner" sont tous "run." Comme mentionné ci-dessus, le but du stemming est de simplifier l'analyse en traitant des mots similaires comme la même entité, améliorant ainsi l'efficacité et l'efficience de diverses tâches de NLP.
Stemming avec NLTK
NLTK propose divers 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 dériver la racine d'un mot.
Toutes les classes de stemmer dans NLTK partagent une interface commune. Tout d'abord, vous devez créer une instance de la classe de stemmer, puis utiliser sa méthode stem()
pour chacun des tokens. Regardons l'exemple suivant :
import 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)
Comme vous pouvez le voir, il n'y a rien de compliqué ici. Tout d'abord, nous avons appliqué la tokenisation, puis filtré les mots vides et enfin appliqué le stemming sur nos tokens en utilisant la compréhension de liste. En ce qui concerne les résultats, ces deux stemmers ont produit des résultats assez différents. Cela est dû au fait que le Lancaster Stemmer a environ deux fois plus de règles que le Porter Stemmer et est l'un des stemmers les plus "agressifs".
Merci pour vos commentaires !