Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Stammeproces | Stamme- og Lemmatisering
Introduktion til NLP

bookStammeproces

Forståelse af stemming

Note
Definition

Stemming er en tekstnormaliseringsteknik anvendt i NLP til at reducere bøjede ord til deres stamme.

For at være mere præcis indebærer stemming at fjerne affikser (normalt kun suffikser) fra ord for at opnå deres grundform, kendt som stammen. For eksempel er stammen af "running", "runs" og "run" alle "run."

Formålet med stemming er at forenkle analysen ved at behandle lignende ord som samme enhed, hvilket i sidste ende forbedrer effektiviteten i forskellige NLP-opgaver.

Stemming med NLTK

NLTK tilbyder forskellige stemming-algoritmer, hvor de mest populære er Porter Stemmer og Lancaster Stemmer. Disse algoritmer anvender specifikke regler for at fjerne affikser og udlede stammen af et ord.

Alle stemmer-klasser i NLTK deler et fælles interface. Først skal der oprettes en instans af stemmer-klassen, hvorefter dens stem()-metode bruges for hver af 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

Først anvendte vi tokenisering, derefter filtrerede vi stopordene fra og til sidst anvendte vi stemming på vores tokens ved hjælp af list comprehension. Med hensyn til resultaterne gav disse to stemmere ret forskellige resultater. Dette skyldes, at Lancaster Stemmer har cirka dobbelt så mange regler som Porter Stemmer og er en af de mest "aggressive" stemmere.

Note
Bemærk

Samlet set er Porter Stemmer den mest populære mulighed, da den giver mere meningsfulde resultater end Lancaster Stemmer, som har tendens til at overstamme ord.

question mark

Hvilke af følgende udsagn om Porter og Lancaster stemmere er sande?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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

bookStammeproces

Stryg for at vise menuen

Forståelse af stemming

Note
Definition

Stemming er en tekstnormaliseringsteknik anvendt i NLP til at reducere bøjede ord til deres stamme.

For at være mere præcis indebærer stemming at fjerne affikser (normalt kun suffikser) fra ord for at opnå deres grundform, kendt som stammen. For eksempel er stammen af "running", "runs" og "run" alle "run."

Formålet med stemming er at forenkle analysen ved at behandle lignende ord som samme enhed, hvilket i sidste ende forbedrer effektiviteten i forskellige NLP-opgaver.

Stemming med NLTK

NLTK tilbyder forskellige stemming-algoritmer, hvor de mest populære er Porter Stemmer og Lancaster Stemmer. Disse algoritmer anvender specifikke regler for at fjerne affikser og udlede stammen af et ord.

Alle stemmer-klasser i NLTK deler et fælles interface. Først skal der oprettes en instans af stemmer-klassen, hvorefter dens stem()-metode bruges for hver af 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

Først anvendte vi tokenisering, derefter filtrerede vi stopordene fra og til sidst anvendte vi stemming på vores tokens ved hjælp af list comprehension. Med hensyn til resultaterne gav disse to stemmere ret forskellige resultater. Dette skyldes, at Lancaster Stemmer har cirka dobbelt så mange regler som Porter Stemmer og er en af de mest "aggressive" stemmere.

Note
Bemærk

Samlet set er Porter Stemmer den mest populære mulighed, da den giver mere meningsfulde resultater end Lancaster Stemmer, som har tendens til at overstamme ord.

question mark

Hvilke af følgende udsagn om Porter og Lancaster stemmere er sande?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 1
some-alt