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

bookSanaluokkien Tunnistaminen

POS-tunnistuksen ymmärtäminen

Olemme maininneet, että sanaluokkien tunnistus on hyödyllistä lemmatisaatiossa, mikä on sen ensisijainen rooli tekstin esikäsittelyssä, joten tarkastellaan tätä prosessia tarkemmin.

Note
Määritelmä

Sanaluokan (POS) tunnistus tarkoittaa sanan merkitsemistä tekstissä (korpuksessa) tiettyyn sanaluokkaan (esim. substantiivi tai verbi) perustuen sekä sen määritelmään että kontekstiin — eli sen suhteeseen viereisiin ja muihin sanoihin lauseessa, virkkeessä tai kappaleessa.

Koko sanaluokan nimien käyttäminen (esim. "verbi" tai "substantiivi") voi olla varsin hankalaa erityisesti suurissa korpuksissa. Siksi käytetään lyhyitä esityksiä, joita kutsutaan tageiksi. Esimerkiksi "VB" tarkoittaa verbiä. Käytännössä eri POS-tunnistimet voivat kuitenkin käyttää hieman erilaisia tageja ja tarkempia tageja, kuten "VBD" verbin imperfektimuodolle.

Sanaluokkien tunnistus NLTK:lla

Sanaluokkien tunnistuksen suorittamiseksi NLTK:lla tulee tuoda pos_tag()-funktio suoraan nltk-kirjastosta ja käyttää sitä merkkijonojen (tokenien) listaan syöttämällä lista argumenttina.

123456789101112
from nltk.tokenize import word_tokenize from nltk import pos_tag import nltk nltk.download('punkt_tab') # Download the model needed for NLTK's POS tagging nltk.download('averaged_perceptron_tagger_eng') text = "One of the key NLP tasks is part of speech tagging" text = text.lower() tokens = word_tokenize(text) # Perform POS tagging tagged_tokens = pos_tag(tokens) print(tagged_tokens)
copy

Tämä funktio palauttaa listan tupleja, joissa jokainen sisältää tokenin ja sen tunnisteen. Rivi nltk.download('averaged_perceptron_tagger_eng') käynnistää tarvittavan aineiston ja mallien latauksen PerceptronTaggerille, joka on NLTK:n oletussanaluokkien tunnistin.

Note
Opiskele lisää

Tämä tunnistin perustuu keskiarvotettuun perceptron-malliin, joka on valvottu oppimisalgoritmi ja tehokas laajamittaiseen tekstinkäsittelyyn, mukaan lukien sanaluokkien tunnistus (POS-tunnistus). PerceptronTagger valitaan sen nopeuden ja tarkkuuden tasapainon vuoksi, mikä tekee siitä sopivan monenlaisiin NLP-tehtäviin, joissa tarvitaan sanaluokkien tunnistusta. Se oppii piirteiden painot koulutusdatan perusteella ja käyttää näitä painoja ennustaakseen sanaluokat uudessa tekstissä.

Selkeämmän visuaalisen esityksen saamiseksi voimme muuntaa tuloksen pandas-DataFrame-muotoon:

1234567891011121314
from nltk.tokenize import word_tokenize from nltk import pos_tag import nltk import pandas as pd nltk.download('punkt_tab') # Download the model needed for NLTK's POS tagging nltk.download('averaged_perceptron_tagger_eng') text = "One of the key NLP tasks is part of speech tagging" text = text.lower() tokens = word_tokenize(text) # Perform POS tagging tagged_tokens = pos_tag(tokens) # Convert to DataFrame print(pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']).T)
copy

Vaihtoehtoisesti voimme käyttää pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']) ilman DataFrame:n transponointia, jolloin jokainen rivi edustaa token-tunnisteparia.

question mark

Mikä on sanaluokkien (POS) tunnistamisen tavoite NLP:ssä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you explain what each POS tag means in the output?

How does POS tagging help with lemmatization?

What are some common POS tag sets used in NLP?

Awesome!

Completion rate improved to 3.45

bookSanaluokkien Tunnistaminen

Pyyhkäise näyttääksesi valikon

POS-tunnistuksen ymmärtäminen

Olemme maininneet, että sanaluokkien tunnistus on hyödyllistä lemmatisaatiossa, mikä on sen ensisijainen rooli tekstin esikäsittelyssä, joten tarkastellaan tätä prosessia tarkemmin.

Note
Määritelmä

Sanaluokan (POS) tunnistus tarkoittaa sanan merkitsemistä tekstissä (korpuksessa) tiettyyn sanaluokkaan (esim. substantiivi tai verbi) perustuen sekä sen määritelmään että kontekstiin — eli sen suhteeseen viereisiin ja muihin sanoihin lauseessa, virkkeessä tai kappaleessa.

Koko sanaluokan nimien käyttäminen (esim. "verbi" tai "substantiivi") voi olla varsin hankalaa erityisesti suurissa korpuksissa. Siksi käytetään lyhyitä esityksiä, joita kutsutaan tageiksi. Esimerkiksi "VB" tarkoittaa verbiä. Käytännössä eri POS-tunnistimet voivat kuitenkin käyttää hieman erilaisia tageja ja tarkempia tageja, kuten "VBD" verbin imperfektimuodolle.

Sanaluokkien tunnistus NLTK:lla

Sanaluokkien tunnistuksen suorittamiseksi NLTK:lla tulee tuoda pos_tag()-funktio suoraan nltk-kirjastosta ja käyttää sitä merkkijonojen (tokenien) listaan syöttämällä lista argumenttina.

123456789101112
from nltk.tokenize import word_tokenize from nltk import pos_tag import nltk nltk.download('punkt_tab') # Download the model needed for NLTK's POS tagging nltk.download('averaged_perceptron_tagger_eng') text = "One of the key NLP tasks is part of speech tagging" text = text.lower() tokens = word_tokenize(text) # Perform POS tagging tagged_tokens = pos_tag(tokens) print(tagged_tokens)
copy

Tämä funktio palauttaa listan tupleja, joissa jokainen sisältää tokenin ja sen tunnisteen. Rivi nltk.download('averaged_perceptron_tagger_eng') käynnistää tarvittavan aineiston ja mallien latauksen PerceptronTaggerille, joka on NLTK:n oletussanaluokkien tunnistin.

Note
Opiskele lisää

Tämä tunnistin perustuu keskiarvotettuun perceptron-malliin, joka on valvottu oppimisalgoritmi ja tehokas laajamittaiseen tekstinkäsittelyyn, mukaan lukien sanaluokkien tunnistus (POS-tunnistus). PerceptronTagger valitaan sen nopeuden ja tarkkuuden tasapainon vuoksi, mikä tekee siitä sopivan monenlaisiin NLP-tehtäviin, joissa tarvitaan sanaluokkien tunnistusta. Se oppii piirteiden painot koulutusdatan perusteella ja käyttää näitä painoja ennustaakseen sanaluokat uudessa tekstissä.

Selkeämmän visuaalisen esityksen saamiseksi voimme muuntaa tuloksen pandas-DataFrame-muotoon:

1234567891011121314
from nltk.tokenize import word_tokenize from nltk import pos_tag import nltk import pandas as pd nltk.download('punkt_tab') # Download the model needed for NLTK's POS tagging nltk.download('averaged_perceptron_tagger_eng') text = "One of the key NLP tasks is part of speech tagging" text = text.lower() tokens = word_tokenize(text) # Perform POS tagging tagged_tokens = pos_tag(tokens) # Convert to DataFrame print(pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']).T)
copy

Vaihtoehtoisesti voimme käyttää pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']) ilman DataFrame:n transponointia, jolloin jokainen rivi edustaa token-tunnisteparia.

question mark

Mikä on sanaluokkien (POS) tunnistamisen tavoite NLP:ssä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5
some-alt