Lección 2

Tokenización: de letras a números

Una red neuronal no puede procesar la letra "k". Pero sí puede procesar el número 10. La tokenización es el puente entre el texto y los números.

1. El aeropuerto y los códigos IATA

Todos los aeropuertos del mundo tienen un código de tres letras. Madrid es MAD, Buenos Aires es EZE, Nueva York es JFK. Si tienes un sistema de reservas, en lugar de guardar "Madrid" (cadena de texto variable), guardas "MAD" (código fijo). Más eficiente, sin ambigüedades.

✈️ Analogía: El tokenizador hace lo mismo con caracteres. En lugar de guardar "k" (un carácter), guarda el número 10. En lugar de "a", guarda el 0. En lugar de "[inicio]", guarda el 26. Cada símbolo del vocabulario tiene su número único — su "código IATA".

La diferencia con el aeropuerto: aquí los números sí importan para cálculos posteriores, pero no de forma ordinal. El número 10 no significa que "k" valga diez veces más que "a" (número 0). Solo es una etiqueta. Los embeddings (Lección 9) son los que le darán significado real a cada número.

2. El vocabulario de microgpt: 27 tokens

En nuestro modelo, el vocabulario es intencionalmente pequeño. Solo necesitamos representar nombres de personas en minúsculas, más un token especial de "inicio/fin".

Vocabulario completo · 27 tokens
Tabla de los 27 tokens: letras a-z más el token BOS Cada letra del alfabeto a-z tiene un índice del 0 al 25. El token especial BOS tiene el índice 26. CARÁCTER ÍNDICE CARÁCTER ÍNDICE CARÁCTER ÍNDICE a0 b1 c2 d3 e4 f5 g6 h7 i8 j9 k10 l11 m12 n13 o14 p15 q16 r17 s18 t19 u20 v21 w22 x23 y24 z25 [BOS]26

Total: 27 tokens. El token especial [BOS] (Beginning of Sequence) marca el inicio y el fin de cada nombre.

El token [BOS] (Beginning of Sequence) es el más importante del vocabulario. Se usa de dos maneras:

3. Codificar y decodificar

El proceso tiene dos direcciones:

✍️ Codificando "emma" paso a paso
El nombre a procesar: "emma"

Primero añadimos el token de inicio:
  [BOS] e  m  m  a  [BOS]
  → 26  4  12 12  0   26

¿Cómo obtuvimos cada número?
  [BOS] → índice 26   (token especial)
  e     → índice 4    (la 5ª letra del alfabeto, contando desde 0)
  m     → índice 12   (la 13ª letra)
  m     → índice 12   (otra vez la misma)
  a     → índice 0    (la primera letra, índice 0)
  [BOS] → índice 26   (marca el fin del nombre)

Resultado final: [26, 4, 12, 12, 0, 26]
Longitud: 6 tokens (4 letras + 2 tokens BOS)

Para decodificar, hacemos el proceso al revés:
  [26, 4, 12, 12, 0, 26] → "[BOS]emma[BOS]" → "emma"
      
✍️ Codificando "karpathy"
k → 10
a → 0
r → 17
p → 15
a → 0
t → 19
h → 7
y → 24

Con tokens BOS al inicio y al final:
[26, 10, 0, 17, 15, 0, 19, 7, 24, 26]
Longitud: 10 tokens
      

🎮 Pruébalo: tokenizador en vivo

Escribe un nombre arriba para ver su tokenización →
Pega índices arriba para decodificar →

4. Lo que aprendiste

En esta lección:
  • Las redes trabajan con números, no con texto. El tokenizador traduce entre los dos mundos.
  • Nuestro vocabulario tiene 27 tokens: las 26 letras (a=0, b=1, … z=25) más el token especial [BOS]=26.
  • Cada nombre se envuelve con [BOS] al inicio y al final. Esto le indica al modelo dónde empieza y termina.
  • El número asignado a cada carácter es solo una etiqueta — no implica orden ni magnitud.