Tokenización con NLTK y SpaCy en español

Resumen

La tokenización es el primer paso para que un modelo de lenguaje entienda texto, y dominarla te ayuda a optimizar costos y resultados en proyectos de procesamiento de lenguaje natural. Aquí verás cómo dividir texto en tokens, comparar tokenizadores y refinar el preprocesamiento con técnicas como stemming, lematización y eliminación de stopwords.

¿Qué es la tokenización y por qué cambia entre modelos?

La tokenización consiste en dividir un texto en unidades más pequeñas llamadas tokens, que pueden ser grupos de palabras, palabras completas o caracteres sueltos. Cada modelo aplica su propia lógica.

Un ejemplo claro aparece al usar el Tokenizer de OpenAI con la frase “Hola, ¿cómo estás?” [1:00]:

  • En GPT-3 la frase genera 8 tokens sobre 17 caracteres, separando incluso “hol” y “a”.
  • En GPT-3.5 baja a 6 tokens, agrupando mejor la palabra “hola”.
  • En GPT-4o se reduce a 5 tokens.

¿Qué es un token en un modelo de lenguaje? Es la unidad mínima que el modelo procesa. Puede ser una palabra, una sílaba o un carácter, y depende del tokenizador del modelo elegido.

Esa diferencia importa porque el costo y la ventana de contexto se miden en tokens. Elegir bien el modelo impacta directamente en tu presupuesto.

¿Cómo tokenizar texto en español con NLTK y SpaCy?

Dos librerías concentran la mayoría de los flujos de trabajo en NLP: NLTK y SpaCy. Ambas permiten vectorizar y manipular texto, pero con enfoques distintos.

Tokenización con NLTK paso a paso

Con NLTK trabajas un modelo multilingüe que debes descargar antes de usar [2:30]. El flujo es directo:

  1. Importas los métodos de tokenización.
  2. Descargas el modelo multilingüe.
  3. Defines el idioma, en este caso español.
  4. Pasas el texto de ejemplo y obtienes sentences y tokens.

Con la frase “Horrible, nos tuvimos que comprar otro porque ni nosotros sabemos inglés, ni un informático lo pudo instalar”, NLTK devuelve tokens como “Horrible”, “nos”, “tuvimos”, “que”, separando puntuación y palabras.

Tokenización con SpaCy y el modelo es_core_news

SpaCy requiere descargar un modelo específico mediante un comando de Python que instala el paquete es_core_news [3:30]. Una vez importado, le pasas el mismo texto de muestra y obtienes tokens y oraciones.

El resultado es muy similar al de NLTK en muchos casos, aunque hay variaciones según la estructura del texto. Esa diferencia se nota más cuando el contenido tiene jerga, abreviaturas o lenguaje técnico.

¿Cómo refinar el preprocesamiento para reducir tokens?

Reducir tokens significa gastar menos recursos y captar mejor la idea principal del texto. Para lograrlo se combinan tres técnicas: eliminación de stopwords, stemming y lematización [4:30].

El stemming recorta la palabra a su raíz. Por ejemplo, “comprando”, “compras” y “comprar” se reducen todas a “compr”. Es rápido, pero puede producir resultados poco legibles porque pierde sentido semántico.

La lematización lleva la palabra a su forma canónica. “Comprando” se convierte en “comprar”, manteniendo el significado original. Es más costosa computacionalmente, pero conserva la semántica.

Las stopwords son palabras comunes como “el”, “de”, “y” que no aportan información relevante. Eliminarlas reduce ruido y deja solo lo importante.

¿Cuándo conviene usar stemming en vez de lematización? Cuando priorizas velocidad sobre legibilidad, por ejemplo en motores de búsqueda o clasificadores simples. Si necesitas resultados interpretables, mejor lematización.

Ejemplo práctico de stemming, lematización y stopwords

Aplicando estas técnicas sobre la frase “horrible, no me gustó la televisión…” obtienes una progresión clara [6:00]:

  • Sin stopwords: “Horrible”, “comprar”, “sabemos”, “inglés”, “informático”, “después”.
  • Después del stemming: “compr”, “sab”, “inglés”, “informátic”, “despu”.
  • Después de la lematización: “comprar”, “saber”, “instalar”.

La diferencia es notable. El stemmer corta sin piedad, mientras que el lematizador entrega palabras que un humano puede leer sin esfuerzo.

¿Qué son las stopwords y por qué eliminarlas? Son palabras frecuentes sin valor semántico como artículos y preposiciones. Quitarlas reduce el tamaño del dataset y mejora la calidad del análisis.

¿Qué sigue después de tokenizar y limpiar el texto?

Con el texto ya tokenizado, sin stopwords y lematizado, el dataset queda listo para análisis más avanzados. El siguiente paso natural es generar nubes de palabras para visualizar los términos más relevantes y empezar a detectar patrones.

Este flujo, tokenizar, limpiar y reducir, es la base de cualquier proyecto serio de NLP. Cuéntanos en los comentarios qué librería prefieres para tokenizar en español y por qué.