Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Stamning | Stamning och LemmatiseRing
Introduktion till NLP

bookStamning

Förståelse av Stemming

Note
Definition

Stemming är en textnormaliseringsteknik som används inom NLP för att reducera böjda ord till deras stam.

Mer precist innebär stemming att ta bort affix (vanligtvis endast suffix) från ord för att erhålla deras rotform, kallad stam. Till exempel är stammen för "running", "runs" och "run" alltid "run".

Syftet med stemming är att förenkla analysen genom att behandla liknande ord som samma enhet, vilket i slutändan förbättrar effektiviteten i olika NLP-uppgifter.

Stemming med NLTK

NLTK tillhandahåller olika algoritmer för stemming, där de mest populära är Porter Stemmer och Lancaster Stemmer. Dessa algoritmer tillämpar specifika regler för att ta bort affix och härleda ordstammen.

Alla stemmer-klasser i NLTK har ett gemensamt gränssnitt. Först måste en instans av stemmer-klassen skapas och därefter används dess stem()-metod för varje token.

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 tillämpades tokenisering, därefter filtrerades stoppord bort och slutligen användes stemming på våra tokens med list comprehension. När det gäller resultaten gav dessa två stemmers ganska olika utfall. Detta beror på att Lancaster Stemmer har ungefär dubbelt så många regler som Porter Stemmer och är en av de mest "aggressiva" stemmers.

Note
Notering

Överlag är Porter Stemmer det mest populära alternativet och ger mer meningsfulla resultat än Lancaster Stemmer, som tenderar att överstamma ord.

question mark

Vilka av följande påståenden om Porter och Lancaster stemmers är sanna?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 3.45

bookStamning

Svep för att visa menyn

Förståelse av Stemming

Note
Definition

Stemming är en textnormaliseringsteknik som används inom NLP för att reducera böjda ord till deras stam.

Mer precist innebär stemming att ta bort affix (vanligtvis endast suffix) från ord för att erhålla deras rotform, kallad stam. Till exempel är stammen för "running", "runs" och "run" alltid "run".

Syftet med stemming är att förenkla analysen genom att behandla liknande ord som samma enhet, vilket i slutändan förbättrar effektiviteten i olika NLP-uppgifter.

Stemming med NLTK

NLTK tillhandahåller olika algoritmer för stemming, där de mest populära är Porter Stemmer och Lancaster Stemmer. Dessa algoritmer tillämpar specifika regler för att ta bort affix och härleda ordstammen.

Alla stemmer-klasser i NLTK har ett gemensamt gränssnitt. Först måste en instans av stemmer-klassen skapas och därefter används dess stem()-metod för varje token.

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 tillämpades tokenisering, därefter filtrerades stoppord bort och slutligen användes stemming på våra tokens med list comprehension. När det gäller resultaten gav dessa två stemmers ganska olika utfall. Detta beror på att Lancaster Stemmer har ungefär dubbelt så många regler som Porter Stemmer och är en av de mest "aggressiva" stemmers.

Note
Notering

Överlag är Porter Stemmer det mest populära alternativet och ger mer meningsfulla resultat än Lancaster Stemmer, som tenderar att överstamma ord.

question mark

Vilka av följande påståenden om Porter och Lancaster stemmers är sanna?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1
some-alt