Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Stammen | Sectie
Practice
Projects
Quizzes & Challenges
Quizzen
Challenges
/
Natuurlijke Taalverwerking

bookStammen

Veeg om het menu te tonen

Note
Definitie

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.

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

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.

Note
Opmerking

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.

question mark

Welke van de volgende uitspraken over de Porter- en Lancaster-stemmers zijn waar?

Select all correct answers

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 10

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 1. Hoofdstuk 10
some-alt