Stammformen
Verständnis des Stemmings
Stemming ist eine Textnormalisierungstechnik, die in der NLP verwendet wird, um flektierte Wörter auf ihren Stamm zu reduzieren.
Genauer gesagt beinhaltet das Stemming das Entfernen von Affixen (meistens nur Suffixen) von Wörtern, um deren Grundform, den Stamm, zu erhalten. Zum Beispiel ist der Stamm von "running", "runs" und "run" jeweils "run".
Das Ziel des Stemmings ist es, die Analyse zu vereinfachen, indem ähnliche Wörter als dieselbe Entität behandelt werden, was letztlich die Effizienz bei verschiedenen NLP-Aufgaben verbessert.
Stemming mit NLTK
NLTK stellt verschiedene Stemming-Algorithmen bereit, wobei der Porter Stemmer und der Lancaster Stemmer zu den bekanntesten gehören. Diese Algorithmen wenden spezifische Regeln an, um Affixe zu entfernen und den Wortstamm zu bestimmen.
Alle Stemmer-Klassen in NLTK verfügen über eine gemeinsame Schnittstelle. Zunächst muss eine Instanz der Stemmer-Klasse erstellt werden, anschließend wird die Methode stem() für jedes Token verwendet.
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)
Zunächst wurde die Tokenisierung durchgeführt, anschließend wurden die Stoppwörter herausgefiltert und schließlich das Stemming auf die Tokens mittels List Comprehension angewendet. Hinsichtlich der Ergebnisse lieferten diese beiden Stemmer recht unterschiedliche Resultate. Dies liegt daran, dass der Lancaster Stemmer etwa doppelt so viele Regeln wie der Porter Stemmer besitzt und zu den "aggressivsten" Stemmern zählt.
Insgesamt ist der Porter Stemmer die beliebteste Option und liefert bedeutungsvollere Ergebnisse als der Lancaster Stemmer, der dazu neigt, Wörter zu stark zu kürzen.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.45
Stammformen
Swipe um das Menü anzuzeigen
Verständnis des Stemmings
Stemming ist eine Textnormalisierungstechnik, die in der NLP verwendet wird, um flektierte Wörter auf ihren Stamm zu reduzieren.
Genauer gesagt beinhaltet das Stemming das Entfernen von Affixen (meistens nur Suffixen) von Wörtern, um deren Grundform, den Stamm, zu erhalten. Zum Beispiel ist der Stamm von "running", "runs" und "run" jeweils "run".
Das Ziel des Stemmings ist es, die Analyse zu vereinfachen, indem ähnliche Wörter als dieselbe Entität behandelt werden, was letztlich die Effizienz bei verschiedenen NLP-Aufgaben verbessert.
Stemming mit NLTK
NLTK stellt verschiedene Stemming-Algorithmen bereit, wobei der Porter Stemmer und der Lancaster Stemmer zu den bekanntesten gehören. Diese Algorithmen wenden spezifische Regeln an, um Affixe zu entfernen und den Wortstamm zu bestimmen.
Alle Stemmer-Klassen in NLTK verfügen über eine gemeinsame Schnittstelle. Zunächst muss eine Instanz der Stemmer-Klasse erstellt werden, anschließend wird die Methode stem() für jedes Token verwendet.
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)
Zunächst wurde die Tokenisierung durchgeführt, anschließend wurden die Stoppwörter herausgefiltert und schließlich das Stemming auf die Tokens mittels List Comprehension angewendet. Hinsichtlich der Ergebnisse lieferten diese beiden Stemmer recht unterschiedliche Resultate. Dies liegt daran, dass der Lancaster Stemmer etwa doppelt so viele Regeln wie der Porter Stemmer besitzt und zu den "aggressivsten" Stemmern zählt.
Insgesamt ist der Porter Stemmer die beliebteste Option und liefert bedeutungsvollere Ergebnisse als der Lancaster Stemmer, der dazu neigt, Wörter zu stark zu kürzen.
Danke für Ihr Feedback!