Biblioteca NLTK de la Python dispune de un tokenizator de propoziții robust și un etichetător POS. Python are un tokenizator nativ, funcția .split()
, căruia îi puteți trece un separator și acesta va diviza șirul pe care este apelată funcția pe acel separator. Tokenizatorul NLTK este mai robust. Acesta tokenizează o propoziție în cuvinte și semne de punctuație. Dat fiind următorul cod:
Acesta va tokeniza propoziția Can you please buy me an Arizona Ice Tea? It's .99."
după cum urmează:
Rețineți că tokenizatorul tratează 's
, '$'
, 0.99
și .
ca token-uri separate. Acest lucru este important deoarece contracțiile au propriul lor înțeles semantic, precum și are propria lor parte de vorbire, ceea ce ne aduce la următoarea parte a bibliotecii NLTK, etichetătorul POS. POS tagger-ul din biblioteca NLTK produce etichete specifice pentru anumite cuvinte. Lista de etichete POS este următoarea, cu exemple de ceea ce reprezintă fiecare POS.
- CC conjuncție coordonatoare
- CD cifră cardinală
- DT determinant
- EX existențial acolo (ca: „există” … gândiți-vă la el ca la „există”)
- FW cuvânt străin
- IN prepoziție/conjuncție subordonată
- JJ adjectiv „mare”
- JJR adjectiv, comparativ „mai mare”
- JJS adjectiv, superlativ ‘mai mare’
- LS marker de listă 1)
- MD modal could, will
- NN substantiv, singular ‘desk’
- NNS substantiv plural ‘desks’
- NNP substantiv propriu, singular ‘Harrison’
- NNPS substantiv propriu, plural ‘Americans’
- PDT predeterminator ‘all the kids’
- POS terminație posesivă parent’s
- PRP pronume personal I, he, she
- PRP$ pronume posesiv my, his, hers
- RB adverb very, silently,
- RBR adverb, adverb comparativ better
- RBS adverb, adverb superlativ best
- RP particula give up
- TO, to go ‘to’ the store.
- UH interjecție, errrrrrrrrrm
- VB verb, formă de bază take
- VBD verb, timp trecut take
- VBG verb, gerunziu/participiu prezent take
- VBN verb, participiu trecut take
- VBP verb, prezent sing. non-3d take
- VBZ verb, persoana a 3-a sing. prezent take
- WDT wh-determiner which
- WP wh-pronoun who, what
- WP$ pronume posesiv wh-pronoun whose
- WRB wh-abverb where, când
După cum puteți vedea la linia 5 din codul de mai sus, .pos_tag()
trebuie să i se transmită o propoziție tokenizată pentru etichetare. Etichetarea se face prin intermediul unui model antrenat în biblioteca NLTK. Taggerul POS inclus nu este perfect, dar oferă rezultate destul de precise. Utilizând aceeași propoziție de mai sus, rezultatul este:
Etichetarea părților de vorbire poate fi importantă pentru analiza sintactică și semantică. Astfel, pentru ceva de genul propoziției de mai sus, cuvântul can
are mai multe semnificații semantice. Unul fiind un modal pentru formarea întrebărilor, altul fiind un recipient pentru păstrarea alimentelor sau a lichidelor și încă unul fiind un verb care denotă capacitatea de a face ceva. Acordarea unui astfel de cuvânt cu un înțeles specific permite programului să îl trateze în mod corect atât în analiza semantică, cât și în cea sintactică.