Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Stemmaus | Stemmaus ja Lemmatisaatio
Johdatus NLP:hen

bookStemmaus

Ymmärrys stemmauksesta

Note
Määritelmä

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.

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

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ä.

Note
Huomio

Kaiken kaikkiaan Porter Stemmer on suosituin vaihtoehto, joka tuottaa merkityksellisempiä tuloksia kuin Lancaster Stemmer, joka usein liioittelee sanojen typistämistä.

question mark

Mitkä seuraavista väittämistä Porter- ja Lancaster-stemmereistä pitävät paikkansa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 3.45

bookStemmaus

Pyyhkäise näyttääksesi valikon

Ymmärrys stemmauksesta

Note
Määritelmä

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.

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

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ä.

Note
Huomio

Kaiken kaikkiaan Porter Stemmer on suosituin vaihtoehto, joka tuottaa merkityksellisempiä tuloksia kuin Lancaster Stemmer, joka usein liioittelee sanojen typistämistä.

question mark

Mitkä seuraavista väittämistä Porter- ja Lancaster-stemmereistä pitävät paikkansa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1
some-alt