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))
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!