Stammeproces
Forståelse af stemming
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.
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)
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.
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.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Stammeproces
Stryg for at vise menuen
Forståelse af stemming
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.
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)
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.
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.
Tak for dine kommentarer!