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

Lemmatisaatio

Pyyhkäise näyttääksesi valikon

Lemmatisaation ymmärtäminen

Note
Määritelmä

Lemmatisaatio on tekstin normalisointitekniikka, jota käytetään NLP:ssä sanojen palauttamiseen sanakirjamuotoon, eli lemmaan.

Toisin kuin stemmaus, joka karkeasti katkaisee päätteet, lemmatisaatio ottaa huomioon kontekstin ja muuntaa sanan sanakirjamuotoon. Esimerkiksi 'am', 'are' ja 'is' lemmatisaatiossa palautuvat muotoon 'be'. Tämä lähestymistapa voi merkittävästi pienentää sanaston kokoa (uniikkien sanojen määrä) suurissa tekstikorpuksissa, mikä lisää tehokkuutta mallien koulutuksessa.

Toisaalta, vaikka lemmatisaatio on tarkempaa, se on myös laskennallisesti raskaampaa ja voi olla aikaa vievää suurten aineistojen kanssa. Lisäksi paremman tarkkuuden saavuttamiseksi suositellaan morfologista analyysiä ja osaluokkamerkintää ennen lemmatisaatiota.

Note
Huomio

Älä huolehdi part-of-speech tagging -käsitteestä vielä, sillä opit siitä seuraavaksi.

Lemmatisaatio NLTK:lla

WordNet Lemmatizer, jonka tarjoaa NLTK-kirjasto, hyödyntää WordNet-korpusta lemmatisaation suorittamiseen.

Note
Lisätietoa

WordNet on semanttisesti rikas englanninkielinen leksikaalinen tietokanta, joka menee paljon yksinkertaista korpusta pidemmälle. Se ryhmittelee sanat synonyymijoukkoihin eli synset-joukkoihin, joista jokainen kuvaa tiettyä käsitettä ja sisältää määritelmiä sekä esimerkkikäyttöjä. Lisäksi WordNet sisältää merkityksellisiä suhteita näiden synsettien välillä — kuten hypernyymit (yleisemmät, laajemmat termit) ja hyponyymit (kapeammat, tarkemmat termit) — tarjoten tehokkaan viitekehyksen sanojen merkitysten tutkimiseen ja erotteluun.

Kun käytät WordNet Lemmatizeria, se etsii kohdesanan WordNet-tietokannasta löytääkseen sanan sopivimman lemmamuodon.

Kuten aiemmin mainittiin, koska sanoilla voi olla eri merkityksiä eri konteksteissa (esim. "running" verbinä vs. "running" substantiivina), lemmatisaattori saattaa vaatia määrittelemään sanaluokan (esim. verbi, substantiivi, adjektiivi). Tämä auttaa valitsemaan oikean lemmamuodon sanan roolin perusteella lauseessa.

1234567891011
from nltk.stem import WordNetLemmatizer import nltk # Download the WordNet corpus nltk.download('wordnet') # Initialize the WordNet lemmatizer lemmatizer = WordNetLemmatizer() # Parts of speech, 'v' for verb and 'n' for noun parts_of_speech = ['v', 'n'] # Lemmatize words lemmatized_words = [lemmatizer.lemmatize("running", pos) for pos in parts_of_speech] print("Lemmatized words:", lemmatized_words)
Koodin kuvaus
expand arrow
from nltk.stem import WordNetLemmatizer

Tämä rivi tuo käyttöön WordNetLemmatizer-luokan.

nltk.download('wordnet')

Tämä rivi lataa WordNet-korpuksen ja varmistaa, että kaikki WordNetiin liittyvät toiminnot, kuten lemmatisaatio, ovat käytettävissä.

lemmatizer = WordNetLemmatizer()

Tämä rivi luo WordNetLemmatizer-luokan olion, jota käytetään lemmatisaatioon.

parts_of_speech = ['v', 'n']

Tämä rivi luo listan sanaluokista, joita käytetään lemmatisaatiossa.

lemmatized_words = [lemmatizer.lemmatize("running", pos) for pos in parts_of_speech]

Tämä rivi luo listan lemmatisaation tuloksena saaduista sanoista list comprehensionin avulla. Lemmatisaatio suoritetaan lemmatize()-olion lemmatizer-metodilla. Merkkijono, joka edustaa sanaa, annetaan ensimmäisenä argumenttina ja haluttu sanaluokka toisena valinnaisena argumenttina ('v' verbille, 'a' adjektiiville, 'n' substantiiville jne.).

Voit jättää sanaluokan määrittämättä kutsumalla lemmatizer.lemmatize("running"), mutta kuten huomaat, eri sanaluokat tuottavat erilaisia tuloksia. Siksi olisi parasta suorittaa sanaluokkien tunnistus etukäteen.

question mark

Mikä on lemmatisaation ensisijainen hyöty verrattuna stemmaukseen?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Lemmatisaatio

Lemmatisaation ymmärtäminen

Note
Määritelmä

Lemmatisaatio on tekstin normalisointitekniikka, jota käytetään NLP:ssä sanojen palauttamiseen sanakirjamuotoon, eli lemmaan.

Toisin kuin stemmaus, joka karkeasti katkaisee päätteet, lemmatisaatio ottaa huomioon kontekstin ja muuntaa sanan sanakirjamuotoon. Esimerkiksi 'am', 'are' ja 'is' lemmatisaatiossa palautuvat muotoon 'be'. Tämä lähestymistapa voi merkittävästi pienentää sanaston kokoa (uniikkien sanojen määrä) suurissa tekstikorpuksissa, mikä lisää tehokkuutta mallien koulutuksessa.

Toisaalta, vaikka lemmatisaatio on tarkempaa, se on myös laskennallisesti raskaampaa ja voi olla aikaa vievää suurten aineistojen kanssa. Lisäksi paremman tarkkuuden saavuttamiseksi suositellaan morfologista analyysiä ja osaluokkamerkintää ennen lemmatisaatiota.

Note
Huomio

Älä huolehdi part-of-speech tagging -käsitteestä vielä, sillä opit siitä seuraavaksi.

Lemmatisaatio NLTK:lla

WordNet Lemmatizer, jonka tarjoaa NLTK-kirjasto, hyödyntää WordNet-korpusta lemmatisaation suorittamiseen.

Note
Lisätietoa

WordNet on semanttisesti rikas englanninkielinen leksikaalinen tietokanta, joka menee paljon yksinkertaista korpusta pidemmälle. Se ryhmittelee sanat synonyymijoukkoihin eli synset-joukkoihin, joista jokainen kuvaa tiettyä käsitettä ja sisältää määritelmiä sekä esimerkkikäyttöjä. Lisäksi WordNet sisältää merkityksellisiä suhteita näiden synsettien välillä — kuten hypernyymit (yleisemmät, laajemmat termit) ja hyponyymit (kapeammat, tarkemmat termit) — tarjoten tehokkaan viitekehyksen sanojen merkitysten tutkimiseen ja erotteluun.

Kun käytät WordNet Lemmatizeria, se etsii kohdesanan WordNet-tietokannasta löytääkseen sanan sopivimman lemmamuodon.

Kuten aiemmin mainittiin, koska sanoilla voi olla eri merkityksiä eri konteksteissa (esim. "running" verbinä vs. "running" substantiivina), lemmatisaattori saattaa vaatia määrittelemään sanaluokan (esim. verbi, substantiivi, adjektiivi). Tämä auttaa valitsemaan oikean lemmamuodon sanan roolin perusteella lauseessa.

1234567891011
from nltk.stem import WordNetLemmatizer import nltk # Download the WordNet corpus nltk.download('wordnet') # Initialize the WordNet lemmatizer lemmatizer = WordNetLemmatizer() # Parts of speech, 'v' for verb and 'n' for noun parts_of_speech = ['v', 'n'] # Lemmatize words lemmatized_words = [lemmatizer.lemmatize("running", pos) for pos in parts_of_speech] print("Lemmatized words:", lemmatized_words)
Koodin kuvaus
expand arrow
from nltk.stem import WordNetLemmatizer

Tämä rivi tuo käyttöön WordNetLemmatizer-luokan.

nltk.download('wordnet')

Tämä rivi lataa WordNet-korpuksen ja varmistaa, että kaikki WordNetiin liittyvät toiminnot, kuten lemmatisaatio, ovat käytettävissä.

lemmatizer = WordNetLemmatizer()

Tämä rivi luo WordNetLemmatizer-luokan olion, jota käytetään lemmatisaatioon.

parts_of_speech = ['v', 'n']

Tämä rivi luo listan sanaluokista, joita käytetään lemmatisaatiossa.

lemmatized_words = [lemmatizer.lemmatize("running", pos) for pos in parts_of_speech]

Tämä rivi luo listan lemmatisaation tuloksena saaduista sanoista list comprehensionin avulla. Lemmatisaatio suoritetaan lemmatize()-olion lemmatizer-metodilla. Merkkijono, joka edustaa sanaa, annetaan ensimmäisenä argumenttina ja haluttu sanaluokka toisena valinnaisena argumenttina ('v' verbille, 'a' adjektiiville, 'n' substantiiville jne.).

Voit jättää sanaluokan määrittämättä kutsumalla lemmatizer.lemmatize("running"), mutta kuten huomaat, eri sanaluokat tuottavat erilaisia tuloksia. Siksi olisi parasta suorittaa sanaluokkien tunnistus etukäteen.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 3
some-alt