Python’s NLTK library features a robust sentence tokenizer and POS tagger. Python tem um tokenizer nativo, a função .split()
, que você pode passar um separador e ele irá dividir a string que a função é chamada naquele separador. O tokenizer NLTK é mais robusto. Ele simboliza uma frase em palavras e pontuação. Dado o seguinte código:
Ele irá marcar a frase Can you please buy me an Arizona Ice Tea? It's .99."
como se segue:
Nota que o tokenizer trata 's
, '$'
, 0.99
, e .
como fichas separadas. Isto é importante porque as contracções têm também o seu próprio significado semântico, o que nos leva à próxima parte da biblioteca da NLTK, o tagger POS. O tagger POS da biblioteca NLTK produz tags específicas para certas palavras. A lista de tags POS é a seguinte, com exemplos do que cada POS representa.
- CC coordenação conjunta
- CD dígito cardinal
- DT determinador
- EX existencial lá (como: “lá existe” … pense nisso como “existe”)
- FW palavra estrangeira
- IN preposição/subordinatória conjunção
- JJ adjetivo ‘grande’
- JJR adjetivo, comparativo ‘maior’
- JJS adjetivo, superlativo ‘maior’
- marcador de listaLS 1)
- MD modal could, will
- NNoun, singular ‘desk’
- NNS substantivo plural ‘escrivaninhas’
- NNP substantivo próprio, singular ‘Harrison’
- NNPS substantivo próprio, plural ‘americanos’
- PDT predeterminador ‘todas as crianças’
- POS pronome possessivo final dos pais
- PRP pronome pessoal I, he, she
- PRP$ pronome possessivo meu, seu, dela
- RB adverb muito, silenciosamente,
- RBR adverb, comparativamente melhor
- RBS adverb, superlativo melhor
- RP particle give up
- TO, para ir ‘para’ a loja.
- Interjeição UH, errrrrrrrm
- VB verbo, forma base tomar
- VBD verbo, passado tomar
- VBG verbo, gerúndio/presente tomar particípio
- VBN verbo, particípio passado tomar
- VBP verbo, cantar. presente, não-3d tomar
- VBZ verbo, terceira pessoa cantar. presente takes
- WDT wh-determiner which
- WP wh-pronoun who, what
- WP$ possessivo wh-pronoun whose
- WRB wh-abverb where, quando
Como se pode ver na linha 5 do código acima, o .pos_tag()
precisa de ser passada uma frase simbólica para marcação. A etiquetagem é feita por meio de um modelo treinado na biblioteca NLTK. O tagger POS incluído não é perfeito, mas produz resultados bastante precisos. Usando a mesma frase que acima a saída é:
Partes da tagging da fala podem ser importantes para a análise sintáctica e semântica. Então, para algo como a frase acima da palavra can
tem vários significados semânticos. Um sendo um modal para formação de perguntas, outro sendo um recipiente para segurar comida ou líquido, e ainda outro sendo um verbo denotando a capacidade de fazer algo. Dar a uma palavra como esta um significado específico permite ao programa lidar com ela da maneira correta tanto em análises semânticas quanto sintáticas.