Un programa no ve palabras
La tokenización es el paso que corta un texto en trozos pequeños, llamados tokens, para que un programa pueda trabajar con él. Es el primer paso de todo lo que lee texto: un buscador, un corrector o un asistente de chat.
Piensa en el mensaje «Hola, ¿quedamos a las 5?». Para ti son palabras. Para un programa es una fila de caracteres, y alguien tiene que decidir dónde acaba un trozo y empieza el siguiente.
Al final de esta lección
Nota
Puedo dividir un texto en tokens y limpiarlo con un programa de Python.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Token | un trozo de texto con el que trabaja el programa | |
| Tokenización | cortar un texto en tokens | |
| Normalizar | dejar el texto en una forma única, por ejemplo en minúsculas | |
| Palabra vacía | una palabra muy común que dice poco | de |
| Vocabulario | la lista de tokens distintos de un texto |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un token es un trozo de texto
Un token puede ser una palabra, una letra o un signo. Quien programa elige el tamaño del trozo según lo que necesita.
Cortar por letras da trozos muy pequeños y listas larguísimas. Cortar por espacios da palabras, pero deja pegados los signos: «equipo,» y «equipo» serían dos tokens distintos. La tokenización busca un punto medio útil.
Corta una frase de dos formas
# Dos formas de cortar la misma frase.
frase = "hola equipo, quedamos a las cinco"
palabras = frase.split()
letras = list(frase)
print(palabras)
print(len(palabras), "trozos por espacios")
print(len(letras), "trozos por letras")
# Cambia la frase por un mensaje tuyo y ejecuta.
Normalizar es dejar una sola forma
Para el programa, «Hola», «hola» y «hola,» son tres textos distintos. Si quieres contarlos como la misma palabra, hay que normalizar.
Lo más habitual son dos pasos. Primero se pasa todo a minúsculas. Después se quitan los signos de puntuación. Las tildes se conservan, porque «sí» y «si» son palabras diferentes.
Ejemplo resuelto: de la frase a los tokens
| Paso | Resultado |
|---|---|
| Texto de partida | ¡Hoy hay clase, Ana! |
| Pasar a minúsculas | ¡hoy hay clase, ana! |
| Cambiar los signos por espacios | hoy hay clase ana |
| Cortar por espacios | hoy, hay, clase, ana |
| Contar | 4 tokens |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Mira cómo quedan los signos
docker exec jupyter python3 -c "print('Hola, que tal?'.split())"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Limpia una palabra
# Quitar los signos y las mayúsculas de UNA palabra.
def normalise(word):
out = ""
for ch in word.lower():
if ch.isalnum():
out = out + ch
return out
print(normalise("¡Hola,"))
print(normalise("CINCO?"))
print(normalise("gol!!!"))
# Prueba con "¿Qué" y fíjate en que la tilde se conserva.
Las palabras vacías aparecen en casi todo
Palabras como «el», «de», «que» o «y» están en casi cualquier frase. Se llaman palabras vacías. Dicen muy poco sobre el tema del texto.
Muchos programas las quitan antes de contar. La lista no es única: la eliges tú según el trabajo. Todo el conjunto de tokens distintos que quedan es el vocabulario.
Un error muy común
Advertencia
Mucha gente cree que un token es lo mismo que una palabra. No siempre lo es: puede ser un signo o un trozo de palabra. Llama «palabra» a lo que lee una persona y «token» a lo que decide tu programa.
Para ir más lejos: tus propias palabras vacías
Escribe en tu cuaderno cinco frases sobre tu semana en la universidad. Tokeniza cada una con tu función.
Cuenta qué tokens se repiten más. ¿Cuántos son palabras vacías? Añade a tu lista las que faltan y mira cómo cambia el vocabulario.