Chisme 109 del Lince: word embeddings, el mapa de las palabras

Simulador y tutorial. Trabajarás en el navegador, sin instalar nada. Los vectores son inventados para que los entiendas: no son los de ningún modelo real.

Noche en la cueva del Lince de la Noche. CABRA, su IA, lleva toda la tarde leyendo palabras. El Lince le pregunta: «¿Sabes que “perro” y “gato” se parecen más que “perro” y “playa”?». CABRA responde sin dudar. La Gata Montesa, que no se fía de nada, pregunta: «¿Y cómo lo sabe? Un ordenador no sabe lo que es un perro». El Lince se queda pensando. «Pues sabrá algo», dice. La Gata sonríe: «Vamos a verlo».

Introducción

En el chisme 81 vimos cómo funciona un modelo de lenguaje por dentro. Allí apareció una idea clave: cada palabra, o cada trozo de palabra, se convierte en una lista de números. A esa lista se le llama vector. Cuando un modelo aprende esos números para cada palabra, hablamos de word embeddings, o incrustaciones de palabras. Aquí los vemos con calma, en un mapa que puedes girar.

Por qué este chisme

Un ordenador no entiende lo que es un perro. Lo único que maneja son números. Si queremos que trate las palabras de forma útil, tenemos que convertirlas en números de forma que las parecidas queden cerca. Ese es el truco: el significado se convierte en distancia. Por eso este chisme es la ampliación del 81: aquí puedes ver el mapa sin entrenar nada.

Cómo funciona

Cada palabra tiene tres números, uno por cada característica. En este simulador usamos tres características inventadas:

Con esos tres números, cada palabra es un punto en un espacio de tres dimensiones. Para decir si dos palabras se parecen, medimos la distancia entre sus puntos: cuanto más corta, más parecidas. Es la misma idea que medir la distancia entre dos puntos en un mapa, pero con tres ejes en lugar de dos.

Lo más interesante es que también podemos hacer operaciones con los vectores. Si restamos y sumamos, obtenemos un nuevo punto, y buscamos qué palabra queda cerca de él. Así se hacen las analogías: «perro es a cachorro como gato es a…».

Qué necesitamos

Construcción

Abre el simulador de abajo. Tiene 24 palabras en cuatro grupos: animales, comida, lugares y vehículos. Puedes elegir qué dos características ver en la vista 2D y girar la vista 3D con el deslizador.

Vista 2D (dos características)

Vista 3D (las tres características)

Cada color es un grupo: animales, comida, lugares y vehículos.

− +

Paso 1. Mira el mapa

En la vista 2D, busca dos palabras de grupos distintos que estén cerca. ¿Por qué crees que están cerca? Cambia los ejes y mira si siguen cerca.

Paso 2. Pregunta al mapa

Elige «perro» y pulsa «Palabras más parecidas». ¿Salen animales? Repite con «playa» y con «coche». ¿Tiene sentido lo que sale?

Paso 3. Haz una analogía

Prueba la analogía que viene preparada: «elefante − ratón + gato». Sale «bosque», que no es un animal. ¿Por qué crees que pasa? Piensa en cuántas características hemos usado para describir cada palabra.

El código en Python

Lo que hace el simulador en JavaScript también se puede hacer en Python en pocas líneas. Este es el cálculo de la distancia entre los vectores de «perro», «gato», «lince» y «coche». Cópialo en un programa de Python y pruébalo:

import math

# tamaño, tiene vida, es natural
perro = [0.4, 1.0, 0.9]
gato  = [0.3, 1.0, 0.6]
lince = [0.5, 1.0, 1.0]
coche = [0.6, 0.0, 0.0]

# math.dist calcula la distancia entre dos puntos en el espacio
print(round(math.dist(perro, gato), 2))   # animales: distancia corta
print(round(math.dist(perro, lince), 2))  # animales: distancia corta
print(round(math.dist(perro, coche), 2))  # animal frente a vehículo: distancia larga

Lo importante no es el código, sino la idea: el programa no sabe qué es un perro. Solo compara números. Si los números están bien elegidos, el resultado parece inteligente.

Aviso importante: en este chisme los vectores son inventados, con tres números por palabra, para que los puedas leer. Un modelo real usa cientos de números por palabra y los aprende de enormes cantidades de texto. Nuestro mapa sirve para entender la idea, no para hacer predicciones serias.

Cómo probarlo

  1. Busca tres palabras que consideres «parecidas» y comprueba en el simulador si lo son según los vectores.
  2. Busca una palabra que salga cerca de otra que no esperabas. ¿Qué característica compartida explica la cercanía?
  3. Cambia el código de Python: añade un animal nuevo con sus tres números y calcula su distancia a «gato».

Qué estamos midiendo realmente

Para el aula

Retos

  1. Haz que funcione. Busca las palabras más parecidas a «playa» y explica por qué salen esas.
  2. Cambia las características. Sustituye «tiene vida» por otra que tú elijas y mira cómo cambia el mapa.
  3. Añade palabras. Escribe cinco palabras nuevas con sus tres números en el código de Python y comprueba dónde quedan.
  4. Busca una analogía propia. Diseña una operación A − B + C que dé un resultado con sentido y explícala.

Qué hemos aprendido

Un ordenador no sabe lo que es un perro, pero puede saber qué palabras se parecen si las convertimos en números de forma inteligente. El significado se convierte en distancia, y esa distancia depende de cómo hemos medido. Es la base de cómo los modelos de lenguaje trabajan con las palabras, y también la razón por la que pueden equivocarse.

Para seguir investigando