A Python NLTK könyvtár egy robusztus mondat tokenizáló és POS címkéző funkcióval rendelkezik. A Python rendelkezik egy natív tokenizálóval, a .split()
függvénnyel, amelynek átadhatunk egy elválasztójelet, és a függvény ezen az elválasztójelen fogja felosztani a sztringet, amelyre a függvényt hívjuk. Az NLTK tokenizálója robusztusabb. Egy mondatot szavakra és írásjelekre tokenizál. Adott a következő kód:
Az Can you please buy me an Arizona Ice Tea? It's .99."
mondatot a következőképpen tokenizálja:
Megjegyezzük, hogy a tokenizáló a 's
, '$'
, 0.99
és .
értékeket külön tokenként kezeli. Ez azért fontos, mert a kontraktusoknak saját szemantikai jelentésük van, valamint saját beszédrészük is, ami átvezet minket az NLTK könyvtár következő részéhez, a POS-taggerhez. Az NLTK könyvtár POS taggerje bizonyos szavakhoz specifikus címkéket ad ki. A POS-címkék listája a következő, példákkal alátámasztva, hogy az egyes POS-ok mit jelentenek.
- CC koordináló kötőszó
- CD kardinális számjegy
- DT determináns
- EX egzisztenciális ott (mint: “van” … gondolj úgy rá, mint “létezik”)
- FW idegen szó
- IN előtag/alárendelő kötőszó
- JJ melléknév ‘nagy’
- JJR melléknév, összehasonlító ‘nagyobb’
- JJS melléknév, szuperlatívusz ‘legnagyobb’
- LS listajelző 1)
- MD modális lehet, lesz
- NN főnév, egyes szám ‘desk’
- NNS főnév többes szám ‘desks’
- NNP tulajdonnév, egyes szám ‘Harrison’
- NNPS tulajdonnév, többes szám ‘Americans’
- PDT előtag ‘all the kids’
- POS birtokos végződés parent’s
- PRP személyes névmás I, he, she
- PRP$ birtokos névmás my, his, hers
- RB határozószó very, silently,
- RBR határozószó, comparative better
- RBS határozószó, superlative best
- RP partikula give up
- TO, to go ‘to’ the store.
- UH közbevetés, errrrrrrrrrm
- VB ige, alapigei forma take
- VBD ige, múlt idejű take
- VBG ige, gerundium/jelen idejű take
- VBN ige, múlt idejű take
- VBP ige, egyes szám első személyű, nem 3d take
- VBZ ige, 3. személyű sing. jelen idejű vesz
- WDT wh-meghatározó, amely
- WP wh-pronoun who, what
- WP$ birtokos wh-pronoun whose
- WRB wh-abverb where, when
Amint a fenti kód 5. sorában látható, a .pos_tag()
függvénynek át kell adni egy tokenizált mondatot a címkézéshez. A címkézés az NLTK könyvtárban található betanított modell segítségével történik. A mellékelt POS-tagger nem tökéletes, de elég pontos eredményeket ad. A fenti mondat felhasználásával a kimenet a következő:
A beszédrészek címkézése fontos lehet a szintaktikai és szemantikai elemzés szempontjából. Tehát a fenti mondathoz hasonló esetben a can
szónak több szemantikai jelentése is van. Az egyik egy kérdésképzésre szolgáló modális, egy másik egy étel vagy folyadék tárolására szolgáló edény, egy harmadik pedig egy ige, amely a valamire való képességet jelöli. Ha egy ilyen szónak konkrét jelentést adunk, az lehetővé teszi, hogy a program mind a szemantikai, mind a szintaktikai elemzések során a megfelelő módon kezelje azt.