Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Stammformenbildung | Stemming und Lemmatisierung
Einführung in NLP
course content

Kursinhalt

Einführung in NLP

Einführung in NLP

1. Grundlagen der Textvorverarbeitung
2. Stemming und Lemmatisierung
3. Grundlegende Textmodelle
4. Wort-Einbettungen

book
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:

1234567891011121314151617181920212223242526272829
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)
copy

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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 1
We're sorry to hear that something went wrong. What happened?
some-alt