Kursinhalt
Einführung in NLP
Einführung in NLP
Stammformenbildung
Verständnis von Stemming
Um zu beginnen, lassen Sie uns zunächst verstehen, was Stemming im Wesentlichen ist.
Um genauer zu sein, beinhaltet Stemming das Entfernen von Suffixen von Wörtern, um ihre Stammform zu erhalten, die als Stamm bekannt ist. Zum Beispiel sind die Stämme von "running", "ran" und "runner" alle "run". Wie oben erwähnt, besteht der Zweck des Stemmings darin, die Analyse zu vereinfachen, indem ähnliche Wörter als dieselbe Entität behandelt werden, was letztendlich die Effizienz und Effektivität verschiedener NLP-Aufgaben verbessert.
Stemming mit NLTK
NLTK bietet verschiedene Stemming-Algorithmen, wobei die beliebtesten der Porter Stemmer und der Lancaster Stemmer sind. Diese Algorithmen wenden spezifische Regeln an, um Affixe zu entfernen und den Stamm eines Wortes abzuleiten.
Alle Stemmer-Klassen in NLTK teilen eine gemeinsame Schnittstelle. Zuerst müssen Sie eine Instanz der Stemmer-Klasse erstellen und dann die stem()
-Methode für jedes der Tokens verwenden. Schauen wir uns das folgende Beispiel an:
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)
Wie Sie sehen können, gibt es hier nichts Kompliziertes. Zuerst haben wir die Tokenisierung angewendet, dann die Stoppwörter herausgefiltert und schließlich das Stemming auf unsere Tokens angewendet, indem wir List Comprehension verwendet haben. Was die Ergebnisse betrifft, so haben diese beiden Stemmer ziemlich unterschiedliche Ergebnisse produziert. Dies liegt daran, dass der Lancaster Stemmer etwa doppelt so viele Regeln wie der Porter Stemmer hat und einer der "aggressivsten" Stemmer ist.
Danke für Ihr Feedback!