Sanaluokkien Tunnistaminen
Pyyhkäise näyttääksesi valikon
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ä merkintöjä, joita kutsutaan tageiksi. Esimerkiksi "VB" tarkoittaa verbiä. Käytännössä eri POS-tunnistimet voivat kuitenkin käyttää hieman erilaisia tageja ja tarkempia merkintöjä, kuten "VBD" verbin imperfektimuodolle.
POS-tunnistus NLTK:lla
Jotta voit suorittaa sanaluokkien tunnistuksen NLTK:lla, tulee tuoda pos_tag()-funktio suoraan nltk-kirjastosta ja käyttää sitä merkkijonojen (tokenien) listaan syöttämällä lista argumenttina.
123456789101112from 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)
Tämä funktio palauttaa listan tupleja, joista jokainen sisältää tokenin ja sen tunnisteen. Rivi nltk.download('averaged_perceptron_tagger_eng') käynnistää niiden tietoaineistojen ja mallien latauksen, joita tarvitaan PerceptronTaggerin käyttöön. Tämä on NLTK:n oletusarvoinen sanaluokkien tunnistaja.
Tämä tunnistin perustuu averaged perceptron -malliin, joka on valvottuun oppimiseen perustuva algoritmi ja tehokas suurten tekstiaineistojen käsittelyssä, mukaan lukien sanaluokkien 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ä.
Havainnollistamisen parantamiseksi voimme muuntaa tuloksen pandas-DataFrame-muotoon:
1234567891011121314from 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)
Vaihtoehtoisesti voimme käyttää pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']) ilman DataFrame:n transponointia, jolloin jokainen rivi edustaa token-tunnisteparia.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme