¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Qué son los embeddings de palabras

Después de esta lección: Puedo explicar cómo se convierten las palabras en vectores y dónde se equivocan los modelos.

Lección de 60 min1 comandoLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

Cómo sabe un programa si se parecen

Un embedding de palabra es un vector de números que representa una palabra, de modo que las palabras con usos parecidos quedan cerca. Es la idea que hay debajo de los buscadores que entienden «coche» cuando escribes «automóvil».

Los modelos de lenguaje actuales parten de esta idea. Entender cómo se forman ayuda a ver por qué aciertan tanto y por qué a veces inventan o repiten prejuicios.

Al final de esta lección

Nota

Puedo explicar cómo se convierten las palabras en vectores y dónde se equivocan los modelos.

Palabras clave

PalabraQué significa
Embeddingel vector de números que representa una palabra
Contextolas palabras que aparecen junto a otra
Cercaníalo parecidos que son dos vectores
Atencióndar más peso a las palabras del texto que importan
Sesgoun patrón injusto del texto de entrenamiento que el modelo repite
Respuesta inventadaun texto fluido y falso, también llamado alucinación

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una palabra se describe por su contexto

Una idea muy útil dice que el significado de una palabra se ve en el contexto donde aparece. «Pan» sale junto a «comer»; «coche», junto a «conducir».

Si cuentas, para cada palabra, cuántas veces sale junto a unas pocas palabras de referencia, obtienes un vector. Ese vector es un embedding muy pequeño. Los reales usan cientos de números y los aprende una red neuronal.

Mira los vectores de contexto

Código: python
# Cuántas veces sale cada palabra junto a "comer", "conducir" y "leer".
words = ["pan", "coche", "libro"]
contexts = {
    "pan":   [4, 0, 1],
    "coche": [0, 5, 0],
    "libro": [0, 0, 6],
}
for word in words:
    print(word, contexts[word])
# Añade "queso" con [3, 0, 1] y decide a cuál se parece más.

Ejemplo resuelto: seis palabras y tres contextos

Palabrajunto a comerjunto a conducirjunto a leer
pan401
queso301
coche050
tren041
libro006
revista105

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El significado se mide como cercanía

Dos vectores están cerca si su distancia es pequeña o si su coseno es alto. Con el coseno de la lección 3, «pan» y «queso» salen casi iguales: 0,997. «Pan» y «coche» salen a 0.

Así un programa encuentra la palabra más cercana a otra sin saber qué es un pan. Solo compara los números que el texto le ha dado.

Calcula dos distancias

Comando
docker exec jupyter python3 -c "print(round(((4-3)**2+(0-0)**2+(1-1)**2)**0.5,2), round(((4-0)**2+(0-5)**2+(1-0)**2)**0.5,2))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Mide la distancia entre palabras

Código: python
# La palabra más cercana, con la distancia entre dos vectores.
def distance(a, b):
    total = 0
    for n in range(len(a)):
        total = total + (a[n] - b[n]) ** 2
    return total ** 0.5

pan = [4, 0, 1]
print("pan a queso:", round(distance(pan, [3, 0, 1]), 2))
print("pan a coche:", round(distance(pan, [0, 5, 0]), 2))
# Cambia el vector de queso por [0, 4, 1] y mira cómo crece.

La atención decide qué palabras del texto importan

Una palabra puede significar cosas distintas. En «me senté en el banco del parque» y «el banco cerró la cuenta», «banco» no es lo mismo.

La atención es el mecanismo con el que un modelo da más peso a las palabras que aclaran el sentido. En la primera frase mira «senté» y «parque»; en la segunda, «cuenta». Así el vector de «banco» cambia según la frase.

Un modelo repite su texto

Los vectores salen del texto. Si en ese texto «enfermera» sale casi siempre junto a «ella», el vector quedará cerca de «ella». Eso es un sesgo, y viene de los datos, no de una opinión del modelo.

También hay respuestas inventadas: el modelo elige palabras cercanas y probables, y nada comprueba que la frase sea cierta. Por eso se comprueba una cifra o una cita en la fuente original.

Un error muy común

Advertencia

Mucha gente cree que un embedding contiene el significado de la palabra. Solo guarda cómo se usa en el texto con el que se hizo. Por eso copia los errores y los prejuicios de ese texto y no sabe lo que es verdad.

Para ir más lejos: tus palabras de referencia

Elige tres palabras de referencia de tu carrera, por ejemplo «código», «datos» y «redes». Escribe seis frases cortas con palabras que sueles usar.

Cuenta, para cada palabra, cuántas veces sale junto a cada referencia. Calcula con tu función cuál es la más cercana a cada una y revisa si tiene sentido.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.