Tokenización con NLTK

| Última modificación: 1 de agosto de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este artículo veremos cómo es el proceso de tokenización con NLTK en diferentes niveles, como en el nivel de frase, de palabra, etc.

Tokenización con NLTK

Veamos algunos ejemplos de tokenización con NLTK con diferentes tokenizers.

A nivel de frase

#Tokenización con NLTK
nltk.download ('punkt')
from nltk.tokenize import sent_tokenize

[nltk_data] Downloading package punkt to /root/nltk_data…

[nltk_data] Unzipping tokenizers/punkt.zip.

NLTK dispone de distintos tokenizers:

  • TreebankWordTokenizer: tokenizer por defecto.
  • PunktTokenizer: tokeniza en los signos de puntuación, pero los mantiene junto a la palabra.
  • WordPunctTokenizer: separa en los signos de puntuación, pero los incluye en tokens separados.
  • RegexpTokenizer: tokenizer que permite trabajar con regex.

Primero utilizaremos el tokenizador estándar (el que viene por defecto) y, poco a poco, iremos viendo cómo funcionan cada uno de los tokenizers:

#Tokenización con NLTK
for idx, sent in enumerate (sent_tokenize (review)):
      print ('Frase {0 : 10} {1 : 20}'.format (str (idx), sent))
Tokenización con NLTK

Vemos que no hace separación por tokens de puntuación, sino que los mantiene juntos.

A nivel de palabra

Si utilizamos un tokenizador diferente, a nivel de palabra en vez de frase, obtenemos las sentencias por un lado y, por otro, las palabras:

#Tokenización con NLTK
from nltk import word_tokenize, TreebankWordTokenizer, RegexpTokenizer
#Tokenización con NLTK
sentences = nltk.sent_tokenize (review)
#Tokenización con NLTK
for sent in sentences:
      for idx, word in enumerate (word_tokenize (sent)):
            print ('Palabra {0 : 10} {1 : 20}'.format (str (idx), word))
      print (" - - - ")

Palabra 0 Cada

Palabra 1 vez

Palabra 2 me

Palabra 3 gusta

Palabra 4 menos

Palabra 5 el

Palabra 6 cine

Palabra 7 de

Palabra 8 masas

Palabra 9 .

– – –

Palabra 0 Las

Palabra 1 peliculas

Palabra 2 que

Palabra 3 ven

Palabra 4 todo

Palabra 5 el

Palabra 6 mundo

Palabra 7 me

Palabra 8 parecen

Palabra 9 cada

Palabra 10 vez

Palabra 11 mas

Palabra 12 coñazo

Palabra 13 y

Palabra 14 mas

Palabra 15 insufribles

Palabra 16 .

– – –

Palabra 0 No

Palabra 1 se

Palabra 2 porque

Palabra 3 pero

Palabra 4 siempre

Palabra 5 el

Palabra 6 prota

Palabra 7 es

Palabra 8 tonto

Palabra 9 del

Palabra 10 culo

Palabra 11 y

Palabra 12 tiene

Palabra 13 suerte

Palabra 14 ,

Palabra 15 y

Palabra 16 al

Palabra 17 final

Palabra 18 de

Palabra 19 la

Palabra 20 peli

Palabra 21 ,

Palabra 22 cuando

Palabra 23 ha

Palabra 24 logrado

Palabra 25 vencer

Palabra 26 al

Palabra 27 mal

Palabra 28 ,

– – –

Palabra 46 que

Palabra 47 va

Palabra 48 a

Palabra 49 ir

Palabra 50 al

Palabra 51 cine

Palabra 52 su

Palabra 53 prima

Palabra 54 ,

Palabra 55 a

Palabra 56 partir

Palabra 57 de

Palabra 58 ahora

Palabra 59 me

Palabra 60 lo

Palabra 61 bajare

Palabra 62 todo

Palabra 63 de

Palabra 64 internet

#Tokenización con NLTK
tokenizer = TreebankWordTokenizer ()
for sent in sentences:
      for idx, word in enumerate (tokenizer.tokenize (sent)):
            print ('Palabra {0 : 10} {1 : 20}'.format (str (idx), word))
      print (" - - - ")

Palabra 46 que

Palabra 47 va

Palabra 48 a

Palabra 49 ir

Palabra 50 al

Palabra 51 cine

Palabra 52 su

Palabra 53 prima

Palabra 54 ,

Palabra 55 a

Palabra 56 partir

Palabra 57 de

Palabra 58 ahora

Palabra 59 me

Palabra 60 lo

Palabra 61 bajare

Palabra 62 todo

Palabra 63 de

Palabra 64 internet

Palabra 65 ,

Palabra 66 que

Palabra 67 por

Palabra 68 lo

Palabra 69 que

Palabra 70 se

Palabra 71 ve

Palabra 72 ,

Palabra 73 la

Palabra 74 calidad

Palabra 75 de

Palabra 76 las

Palabra 77 pelis

Palabra 78 es

Palabra 79 aceptable

Palabra 80 ,

Palabra 81 y

Palabra 82 puedo

Palabra 83 pasarla

Palabra 84 palante

Palabra 85 .

#Tokenización con NLTK
words = list ()
tokenizer = TreebankWordTokenizer (r'\w+')
for sent in sentences:
      for idx, word in enumerate (tokenizer.tokenize (sent)):
            print ('Palabra {0 : 10} {1 : 20}'.format (str (idx), word))
            words.append (word)
      print (" - - - ")

Palabra 42 que

Palabra 43 va

Palabra 44 a

Palabra 45 ir

Palabra 46 al

Palabra 47 cine

Palabra 48 su

Palabra 49 prima

Palabra 50 a

Palabra 51 partir

Palabra 52 de

Palabra 53 ahora

Palabra 54 me

Palabra 55 lo

Palabra 56 bajare

Palabra 57 todo

Palabra 58 de

Palabra 59 internet

Ahora ya sabes cómo es el proceso de tokenización con NLTK en diferentes niveles, por lo que es el momento de dar un paso más para avanzar en tu proceso formativo. Para acceder a las opciones laborales del Big Data, uno de los ámbitos laborales más demandados y mejor pagados, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp.

Con esta formación intensiva aprenderás de forma teórica y práctica para conseguir el trabajo de tus sueños en muy pocos meses. ¡No esperes más para impulsar tu carrera profesional y pide más información ahora!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado