Stammen
Inzicht in Stemming
Stemming is een tekstnormalisatietechniek die in NLP wordt gebruikt om verbogen woorden terug te brengen tot hun stam.
Meer specifiek houdt stemming in dat affixen (meestal alleen suffixen) van woorden worden verwijderd om hun stamvorm, de stam, te verkrijgen. Bijvoorbeeld, de stammen van "running", "runs" en "run" zijn allemaal "run."
Het doel van stemming is om de analyse te vereenvoudigen door vergelijkbare woorden als dezelfde entiteit te behandelen, wat uiteindelijk de efficiëntie bij verschillende NLP-taken verbetert.
Stemming met NLTK
NLTK biedt verschillende stemming-algoritmen, waarvan de meest populaire de Porter Stemmer en de Lancaster Stemmer zijn. Deze algoritmen passen specifieke regels toe om affixen te verwijderen en de stam van een woord af te leiden.
Alle stemmer-klassen in NLTK delen een gemeenschappelijke interface. Eerst moet een instantie van de stemmerklasse worden aangemaakt en vervolgens wordt de stem()-methode gebruikt voor elk van de tokens.
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)
Eerst hebben we tokenisatie toegepast, vervolgens de stopwoorden gefilterd en ten slotte stemming toegepast op onze tokens met behulp van list comprehension. Wat betreft de resultaten, leverden deze twee stemmers behoorlijk verschillende uitkomsten op. Dit komt doordat de Lancaster Stemmer ongeveer twee keer zoveel regels heeft als de Porter Stemmer en een van de meest "agressieve" stemmers is.
Over het algemeen is de Porter Stemmer de meest populaire optie en levert meer betekenisvolle resultaten op dan de Lancaster Stemmer, die de neiging heeft om woorden te veel te reduceren.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
What are the main differences between the Porter and Lancaster stemmers?
Can you explain what stop words are and why we remove them?
How does stemming improve NLP tasks?
Awesome!
Completion rate improved to 3.45
Stammen
Veeg om het menu te tonen
Inzicht in Stemming
Stemming is een tekstnormalisatietechniek die in NLP wordt gebruikt om verbogen woorden terug te brengen tot hun stam.
Meer specifiek houdt stemming in dat affixen (meestal alleen suffixen) van woorden worden verwijderd om hun stamvorm, de stam, te verkrijgen. Bijvoorbeeld, de stammen van "running", "runs" en "run" zijn allemaal "run."
Het doel van stemming is om de analyse te vereenvoudigen door vergelijkbare woorden als dezelfde entiteit te behandelen, wat uiteindelijk de efficiëntie bij verschillende NLP-taken verbetert.
Stemming met NLTK
NLTK biedt verschillende stemming-algoritmen, waarvan de meest populaire de Porter Stemmer en de Lancaster Stemmer zijn. Deze algoritmen passen specifieke regels toe om affixen te verwijderen en de stam van een woord af te leiden.
Alle stemmer-klassen in NLTK delen een gemeenschappelijke interface. Eerst moet een instantie van de stemmerklasse worden aangemaakt en vervolgens wordt de stem()-methode gebruikt voor elk van de tokens.
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)
Eerst hebben we tokenisatie toegepast, vervolgens de stopwoorden gefilterd en ten slotte stemming toegepast op onze tokens met behulp van list comprehension. Wat betreft de resultaten, leverden deze twee stemmers behoorlijk verschillende uitkomsten op. Dit komt doordat de Lancaster Stemmer ongeveer twee keer zoveel regels heeft als de Porter Stemmer en een van de meest "agressieve" stemmers is.
Over het algemeen is de Porter Stemmer de meest populaire optie en levert meer betekenisvolle resultaten op dan de Lancaster Stemmer, die de neiging heeft om woorden te veel te reduceren.
Bedankt voor je feedback!