La biblioteca NLTK de Python cuenta con un robusto tokenizador de frases y un etiquetador POS. Python tiene un tokenizador nativo, la función .split(), a la que se le puede pasar un separador y dividirá la cadena sobre la que se llama a la función en ese separador. El tokenizador de NLTK es más robusto. Convierte una frase en palabras y signos de puntuación. Dado el siguiente código:

Se tokenizará la frase Can you please buy me an Arizona Ice Tea? It's .99." como sigue:

Note que el tokenizador trata 's , '$' , 0.99 , y . como tokens separados. Esto es importante porque las contracciones tienen su propio significado semántico, así como su propia parte de la oración, lo que nos lleva a la siguiente parte de la biblioteca NLTK, el etiquetador POS. El etiquetador POS en la biblioteca NLTK produce etiquetas específicas para ciertas palabras. La lista de etiquetas POS es la siguiente, con ejemplos de lo que significa cada POS.

  • CC conjunción coordinante
  • CD dígito cardinal
  • DT determinante
  • EX existencial allí (como: «hay» … piénsalo como «existe»)
  • FW palabra extranjera
  • IN preposición/subordinación
  • JJ adjetivo ‘grande’
  • JJR adjetivo, comparativo ‘mayor’
  • JJS adjetivo, superlativo ‘biggest’
  • LS marcador de lista 1)
  • MD modal could, will
  • NN sustantivo, singular ‘desk’
  • NNS sustantivo plural ‘desks’
  • NP nombre propio, singular ‘Harrison’
  • NNPS sustantivo propio, plural ‘Americans’
  • PDT predeterminador ‘all the kids’
  • POS terminación posesiva parent’s
  • PRP pronombre personal I, he, she
  • PRP$ pronombre posesivo my, his, hers
  • RB adverbio muy, silenciosamente,
  • RBR adverbio, comparativo mejor
  • RBS adverbio, superlativo mejor
  • RP partícula give up
  • TO, to go ‘to’ the store.
  • UH interjección, errrrrrm
  • VB verbo, forma base take
  • VBD verbo, pasado took
  • VBG verbo, gerundio/participio de presente taking
  • VBN verbo, participio de pasado taken
  • VBP verbo, sing. presente, no-3d take
  • VBZ verbo, 3ª persona sing. present takes
  • WDT wh-determiner which
  • WP wh-pronoun who, what
  • WP$ possessive wh-pronoun whose
  • WRB wh-abverb where, cuando

Como puede ver en la línea 5 del código anterior, la función .pos_tag() necesita que se le pase una frase tokenizada para etiquetarla. El etiquetado se realiza mediante un modelo entrenado en la biblioteca NLTK. El etiquetador POS incluido no es perfecto, pero produce resultados bastante precisos. Utilizando la misma frase anterior, el resultado es:

El etiquetado de partes de la oración puede ser importante para el análisis sintáctico y semántico. Así, para algo como la frase anterior, la palabra can tiene varios significados semánticos. Uno de ellos es un modal para la formación de preguntas, otro es un recipiente para contener alimentos o líquidos, y otro es un verbo que denota la capacidad de hacer algo. Dar a una palabra como ésta un significado específico permite que el programa la maneje de manera correcta tanto en los análisis semánticos como sintácticos.

Articles

Deja una respuesta

Tu dirección de correo electrónico no será publicada.