Laboratorio de Tokenización
Entender cómo el texto se convierte en números
Comparar tokenización Word, Subword, BPE
Aprender compromisos de vocabulario
Reconocer por qué los LLMs tienen límites de tokens
Playground de Tokenización
Compara métodos de tokenización: Word, Subword, BPE, SentencePiece
Guía de Aprendizaje
Elige tu estilo de aprendizaje
¿Qué Hace?
Compara estrategias de tokenización: nivel palabra, subpalabra (BPE, WordPiece, SentencePiece), nivel carácter. Demuestra trade-off tamaño vocab vs granularidad token, manejo OOV, tasas de compresión.
¿Cómo Funciona?
- 1Nivel palabra: divide en espacios/puntuación. Simple, pero vocab grande (100K+), problemas OOV
- 2BPE: fusiona iterativamente pares de bytes más frecuentes. Comienza con caracteres, construye vocabulario
- 3WordPiece: similar a BPE pero usa likelihood en vez de frecuencia. Usado por BERT
- 4SentencePiece: trata texto como unicode raw, aprende BPE/unigrama. Agnóstico de lenguaje
- 5Nivel carácter: sin OOV, pero secuencias muy largas (inferencia lenta)
- 6Elección tamaño vocab: pequeño (1K) = problemas OOV, grande (50K) = intensivo en memoria, punto dulce (30K)
Analogía Simple
Tokenización = estrategia de fragmentación de texto. Nivel palabra = fragmentos grandes (rápido, incompleto). Nivel carácter = fragmentos pequeños (completo, lento). Subpalabra = zona Goldilocks (balanceada).
Concepto Clave
BPE/WordPiece dominan NLP moderna (GPT, BERT). Manejan palabras raras mediante unidades subpalabra: "infelicidad" → ["in", "felicidad"]. Vocab ~30K cubre mayoría de idiomas con buena compresión.
Conceptos Fundamentales
BPE (Codificación de Pares de Bytes)
Fusiona iterativamente pares de símbolos adyacentes más frecuentes. Usado por modelos GPT. Tamaño vocab 30K-50K típico.
WordPiece
Similar a BPE pero usa fusión basada en likelihood. Usado por BERT. Tokens subpalabra marcados con ##.
OOV (Fuera de Vocabulario)
Palabras desconocidas no en vocabulario. Nivel palabra sufre OOV. Subpalabra/carácter evita OOV mediante descomposición.
Aplicaciones del Mundo Real
GPT / Modelos de Lenguaje
Tokenización BPE habilita entrenamiento eficiente en texto diverso. Maneja palabras raras, errores tipográficos, código, emojis.
Modelos Multilingües
SentencePiece unifica tokenización entre idiomas. Sin preprocesamiento específico de idioma (espacios, segmentación).
Texto Científico / Código
Subpalabra maneja jerga de dominio: "superconductividad" → ["super", "conduct", "ividad"]. Tokenización de código: "int main()" → ["int", "main", "(", ")"].
Pruébalo Tú Mismo
Experimento de Tamaño de Vocab
Vocab 1K: muchas divisiones, lento. Vocab 50K: pocas divisiones, memoria grande. Vocab 30K: balanceado.
Demo de Manejo OOV
Nivel palabra: "supergenialidad" → [UNK]. Subpalabra: ["super", "genial", "idad"]. Carácter: ["s","u","p","e","r",...].
Errores Comunes a Evitar
❌ Usar tokenización nivel palabra
¿Por Qué? Problemas OOV con palabras raras, vocab grande (100K+). Usa BPE/WordPiece en su lugar.
❌ Tokenización inconsistente
¿Por Qué? Desajuste tokenización train vs test rompe modelos. Usa mismo tokenizador (guardar/cargar vocab).
Tokens
Conteo de Tokens: 9Comparación
Nivel-Palabra
División simple por espacios. Vocab grande, problemas OOV.
Conteo de Tokens: 9
Sub-palabra
Divide palabras raras en sub-palabras. Vocab balanceado.
Conteo de Tokens: 9
BPE (Byte Pair Encoding)
Fusiona pares de caracteres frecuentes. Usado en GPT.
Conteo de Tokens: 15
SentencePiece
Independiente del idioma, trata texto como unicode. Usado en T5, ALBERT.
Conteo de Tokens: 14
Algoritmo BPE
BPE fusiona iterativamente pares de caracteres más frecuentes. Ejemplo: "low" + "er" → "lower". Balance entre tamaño vocab y conteo tokens.
Tradeoffs de Vocabulario
Vocab pequeño (10K): muchos tokens, inferencia lenta, palabras raras divididas. Vocab grande (100K): menos tokens, rápido, pero embeddings dispersos.
Tokenización Sub-palabra
Divide palabras raras (ej: "infelicidad" → "in", "felicidad"). Maneja OOV gracefully. WordPiece (BERT) usa likelihood, BPE usa frecuencia.
Manejo OOV
Palabras Out-of-Vocabulary se dividen en sub-palabras o caracteres. Ejemplo: "Transformerizar" → "Transform", "##er", "##izar". Sin tokens <UNK>.