Stemmaus
Ymmärrys stemmauksesta
Stemmaus on tekstin normalisointitekniikka, jota käytetään NLP:ssä taivutettujen sanojen vähentämiseen niiden kantamuotoon.
Tarkemmin sanottuna stemmaus tarkoittaa affiksien (yleensä vain suffiksien) poistamista sanoista niiden kantamuodon, eli stemmin, saamiseksi. Esimerkiksi sanojen "running", "runs" ja "run" kantamuoto on "run".
Stemmauksen tarkoituksena on yksinkertaistaa analyysiä käsittelemällä samankaltaisia sanoja yhtenä kokonaisuutena, mikä parantaa tehokkuutta erilaisissa NLP-tehtävissä.
Stemmaus NLTK:lla
NLTK tarjoaa useita stemmausalgoritmeja, joista suosituimpia ovat Porter Stemmer ja Lancaster Stemmer. Nämä algoritmit käyttävät erityisiä sääntöjä poistaakseen affiksit ja muodostaakseen sanan kannan.
Kaikilla NLTK:n stemmausluokilla on yhteinen rajapinta. Ensin täytyy luoda instanssi stemmausluokasta ja käyttää sen stem()-metodia jokaiselle tokenille.
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)
Ensin suoritettiin tokenisointi, sitten suodatettiin pois stop-sanat ja lopuksi sovellettiin stemmausta tokeneihin käyttäen list comprehension -rakennetta. Tuloksista puhuttaessa nämä kaksi stemmeriä tuottivat melko erilaisia tuloksia. Tämä johtuu siitä, että Lancaster Stemmer sisältää noin kaksi kertaa enemmän sääntöjä kuin Porter Stemmer ja on yksi "aggressiivisimmista" stemmereistä.
Kaiken kaikkiaan Porter Stemmer on suosituin vaihtoehto, joka tuottaa merkityksellisempiä tuloksia kuin Lancaster Stemmer, joka usein liioittelee sanojen typistämistä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.45
Stemmaus
Pyyhkäise näyttääksesi valikon
Ymmärrys stemmauksesta
Stemmaus on tekstin normalisointitekniikka, jota käytetään NLP:ssä taivutettujen sanojen vähentämiseen niiden kantamuotoon.
Tarkemmin sanottuna stemmaus tarkoittaa affiksien (yleensä vain suffiksien) poistamista sanoista niiden kantamuodon, eli stemmin, saamiseksi. Esimerkiksi sanojen "running", "runs" ja "run" kantamuoto on "run".
Stemmauksen tarkoituksena on yksinkertaistaa analyysiä käsittelemällä samankaltaisia sanoja yhtenä kokonaisuutena, mikä parantaa tehokkuutta erilaisissa NLP-tehtävissä.
Stemmaus NLTK:lla
NLTK tarjoaa useita stemmausalgoritmeja, joista suosituimpia ovat Porter Stemmer ja Lancaster Stemmer. Nämä algoritmit käyttävät erityisiä sääntöjä poistaakseen affiksit ja muodostaakseen sanan kannan.
Kaikilla NLTK:n stemmausluokilla on yhteinen rajapinta. Ensin täytyy luoda instanssi stemmausluokasta ja käyttää sen stem()-metodia jokaiselle tokenille.
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)
Ensin suoritettiin tokenisointi, sitten suodatettiin pois stop-sanat ja lopuksi sovellettiin stemmausta tokeneihin käyttäen list comprehension -rakennetta. Tuloksista puhuttaessa nämä kaksi stemmeriä tuottivat melko erilaisia tuloksia. Tämä johtuu siitä, että Lancaster Stemmer sisältää noin kaksi kertaa enemmän sääntöjä kuin Porter Stemmer ja on yksi "aggressiivisimmista" stemmereistä.
Kaiken kaikkiaan Porter Stemmer on suosituin vaihtoehto, joka tuottaa merkityksellisempiä tuloksia kuin Lancaster Stemmer, joka usein liioittelee sanojen typistämistä.
Kiitos palautteestasi!