Knihovna NLTK v jazyce Python obsahuje robustní tokenizátor vět a značkovač POS. Jazyk Python má nativní tokenizér, funkci .split()
, které můžete předat oddělovač a ona řetězec, na který je funkce volána, na tomto oddělovači rozdělí. Tokenizér NLTK je robustnější. Tokenizuje větu na slova a interpunkční znaménka. Při následujícím kódu:
Takenizuje větu Can you please buy me an Arizona Ice Tea? It's .99."
následovně:
Všimněte si, že tokenizátor považuje 's
, '$'
, 0.99
a .
za samostatné tokeny. To je důležité, protože spřežky mají svůj vlastní sémantický význam, stejně jako mají vlastní část řeči, což nás přivádí k další části knihovny NLTK POS taggeru. Značkovač POS v knihovně NLTK vypisuje specifické značky pro určitá slova. Seznam značek POS je následující, s příklady toho, co jednotlivé značky POS znamenají.
- CC souřadicí spojka
- CD kardinální číslovka
- DT determinátor
- EX existenční tam (jako např: „tam je“ … představte si to jako „existuje“)
- FW cizí slovo
- IN předložka/podřadicí spojka
- JJ přídavné jméno ‚velký‘
- JJR přídavné jméno, komparativ ‚větší‘
- JJS přídavné jméno, superlativ ‚největší‘
- LS značka seznamu 1)
- MD modální mohl, bude
- NN podstatné jméno, jednotné číslo ‚stůl‘
- NNS podstatné jméno množné číslo ‚stoly‘
- NNP vlastní podstatné jméno, jednotné číslo ‚Harrison‘
- NNPS vlastní podstatné jméno, množné číslo ‚Američané‘
- PDT předpona ‚všechny děti‘
- POS přivlastňovací koncovka rodiče’s
- PRP osobní zájmeno já, on, ona
- PRP$ přivlastňovací zájmeno můj, jeho, její
- RB příslovce velmi, tiše,
- RBR příslovce, komparativ lepší
- RBS příslovce, superlativ nejlepší
- RP částice vzdát se
- TO, jít ‚do‘ obchodu.
- UH interjekce, errrrrrrrm
- VB sloveso, základní tvar brát
- VBD sloveso, minulý čas brát
- VBG sloveso, gerundium/příčestí přítomné brát
- VBN sloveso, příčestí minulé brát
- VBP sloveso, jedn. č. přítomné, ne-3d brát
- VBZ sloveso, 3. os. sg. přítomný bere
- WDT wh-determiner which
- WP wh-pronoun who, what
- WP$ possessive wh-pronoun whose
- WRB wh-abverb where, když
Jak vidíte na řádku 5 výše uvedeného kódu, .pos_tag()
je třeba funkci předat tokenizovanou větu pro označení. Označování se provádí pomocí natrénovaného modelu v knihovně NLTK. Přiložený tagger POS není dokonalý, ale poskytuje poměrně přesné výsledky. Při použití stejné věty jako výše je výstupem:
Tagování částí řeči může být důležité pro syntaktickou a sémantickou analýzu. Takže pro něco takového, jako je výše uvedená věta, má slovo can
několik sémantických významů. Jedním z nich je modalita pro tvoření otázek, dalším je nádoba pro uchovávání jídla nebo tekutiny a ještě dalším je sloveso označující schopnost něco udělat. Přidělení specifického významu takovému slovu umožňuje, aby s ním program správně zacházel jak při sémantické, tak při syntaktické analýze
.