La libreria NLTK di Python ha un robusto tokenizer di frasi e un POS tagger. Python ha un tokenizzatore nativo, la funzione .split(), a cui si può passare un separatore ed esso dividerà la stringa su cui la funzione è chiamata su quel separatore. Il tokenizzatore di NLTK è più robusto. Esso tokenizza una frase in parole e punteggiatura. Dato il seguente codice:

Si tokenizzerà la frase Can you please buy me an Arizona Ice Tea? It's .99." come segue:

Nota che il tokenizer tratta 's , '$' , 0.99 , e . come token separati. Questo è importante perché le contrazioni hanno il loro significato semantico e la loro parte del discorso, il che ci porta alla prossima parte della libreria NLTK, il POS tagger. Il POS tagger nella libreria NLTK produce tag specifici per certe parole. L’elenco dei tag POS è il seguente, con esempi di ciò che ogni POS rappresenta.

  • CC congiunzione coordinante
  • CD cifra cardinale
  • DT determinatore
  • EX esistenziale ci (come: “c’è” … pensatelo come “esiste”)
  • FW parola straniera
  • IN preposizione/congiunzione subordinante
  • JJ aggettivo ‘grande’
  • JJR aggettivo, comparativo ‘più grande’
  • JS aggettivo, superlativo ‘più grande’
  • LS marcatore di lista 1)
  • MD modale potrebbe, farà
  • NNN sostantivo, singolare ‘scrivania’
  • NNS sostantivo plurale ‘scrivanie’
  • NP nome proprio, singolare ‘Harrison’
  • NNPS nome proprio, plurale ‘americani’
  • PDT predeterminatore ‘tutti i bambini’
  • POS finale possessivo parent’s
  • PRP pronome personale io, lui, lei
  • PRP$ pronome possessivo mio, suo, sua
  • RB avverbio molto, silenziosamente,
  • RBR avverbio, comparativo migliore
  • RBS avverbio, superlativo migliore
  • RP particella rinunciare
  • TO, andare ‘al’ negozio.
  • UH interiezione, errrrrrrrm
  • VB verbo, forma base prendere
  • VBD verbo, tempo passato prendere
  • VBG verbo, gerundio/partecipio presente prendere
  • VBN verbo, participio passato prendere
  • VBP verbo, sing. presente, non-3d prendere
  • VBZ verbo, terza persona sing. presente prende
  • WDT wh-determiner which
  • WP wh-pronoun who, what
  • WP$ wh-pronoun possessivo whose
  • WRB wh-abverb where, quando

Come potete vedere nella linea 5 del codice sopra, la funzione .pos_tag() deve essere passata una frase tokenizzata per il tagging. Il tagging è fatto per mezzo di un modello addestrato nella libreria NLTK. Il POS tagger incluso non è perfetto ma produce risultati abbastanza accurati. Usando la stessa frase di cui sopra l’output è:

Il tagging delle parti del discorso può essere importante per l’analisi sintattica e semantica. Quindi, per qualcosa come la frase sopra, la parola can ha diversi significati semantici. Uno è un modale per la formazione di domande, un altro è un contenitore per contenere cibo o liquidi, e un altro ancora è un verbo che denota la capacità di fare qualcosa. Dare a una parola come questa un significato specifico permette al programma di gestirla in modo corretto nelle analisi semantiche e sintattiche.

Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.