Stammen
Veeg om het menu te tonen
Stemming is een tekstnormalisatietechniek die in NLP wordt gebruikt om verbogen woorden te reduceren tot hun stam.
Om preciezer te zijn, houdt stemming in dat affixen (meestal alleen suffixen) van woorden worden verwijderd om hun grondvorm, de stam, te verkrijgen. Bijvoorbeeld, de stammen van "running", "runs" en "run" zijn allemaal "run."
Het doel van stemming is het vereenvoudigen van de analyse 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 stemmerklassen 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 is tokenisatie toegepast, vervolgens zijn de stopwoorden gefilterd en ten slotte is stemming uitgevoerd op de 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 populairste 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.