{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "46851afa",
   "metadata": {},
   "source": [
    "# 06 · Embeddings de palabras y traducción secuencia a secuencia\n",
    "\n",
    "Las imágenes son rejillas de números y las series temporales son listas de números, pero **las palabras son símbolos**. Antes de que una red pueda leer texto, cada palabra tiene que convertirse en un vector, y *qué* vector sea importa muchísimo. Este notebook cubre las dos ideas que llevaron a las redes neuronales de los números al lenguaje:\n",
    "\n",
    "| Parte | Idea | Experimento |\n",
    "|---|---|---|\n",
    "| A · secciones 1-5 | **embeddings de palabras**: el significado como geometría | entrenar embeddings al estilo word2vec desde cero, encontrar analogías como *rey − hombre + mujer ≈ reina* y después medir y eliminar un sesgo de género sembrado en el texto de entrenamiento |\n",
    "| B · secciones 6-10 | **codificador-decodificador con atención** | traducir de inglés a español con un codificador GRU, un decodificador con atención y búsqueda en haz |\n",
    "\n",
    "Todo se ejecuta en una CPU en pocos minutos. Ambos corpus se generan en el notebook a partir de pequeñas gramáticas, así que cada resultado es reproducible y no se descarga nada.\n",
    "\n",
    "Un **embedding** (a veces traducido como \"incrustación\" o \"vector de palabra\") es la representación vectorial densa de un símbolo; usamos el término en inglés porque es el que encontrarás en la documentación y en los artículos. Los dos corpus de este notebook están **en inglés**: en la Parte A porque así las analogías se pueden comparar con los resultados clásicos publicados, y en la Parte B porque la tarea consiste precisamente en traducir del inglés al español."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c77c8f4e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:26.616522Z",
     "iopub.status.busy": "2026-10-16T09:04:26.616123Z",
     "iopub.status.idle": "2026-10-16T09:04:31.641589Z",
     "shell.execute_reply": "2026-10-16T09:04:31.639551Z"
    }
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "import time, random\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "torch.manual_seed(0); np.random.seed(0); random.seed(0)\n",
    "torch.set_num_threads(max(1, torch.get_num_threads()))\n",
    "plt.rcParams[\"axes.grid\"] = False\n",
    "def count_params(m): return sum(p.numel() for p in m.parameters())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "394933e6",
   "metadata": {},
   "source": [
    "---\n",
    "# Parte A · Embeddings de palabras\n",
    "\n",
    "## 1. De los vectores one-hot a los vectores densos\n",
    "\n",
    "La codificación más simple le da a cada una de las $V$ palabras su propia posición en un vector de $V$ dimensiones: *cat* = $[0,0,1,0,\\dots]$. Esta codificación **one-hot** tiene un defecto fatal: todos los pares de palabras están igual de lejos. *cat* (gato) se parece tanto a *dog* (perro) como a *Tuesday* (martes), así que nada de lo que la red aprende sobre una palabra le sirve para ninguna otra.\n",
    "\n",
    "Un **embedding** asigna a cada palabra un vector denso y corto (aquí 32 números en lugar de 148), guardado como una fila de una matriz $E \\in \\mathbb{R}^{V \\times d}$. Buscar una palabra es simplemente seleccionar una fila, que es exactamente multiplicar un vector one-hot por $E$. Las filas se aprenden, y la esperanza es que las palabras que se usan de forma parecida acaben cerca unas de otras.\n",
    "\n",
    "¿Qué significa \"que se usan de forma parecida\"? La **hipótesis distribucional** (Harris 1954, Firth 1957): *\"Conocerás una palabra por las compañías que frecuenta.\"* *Paris* y *Rome* aparecen junto a las mismas palabras (*capital*, *flew to*, *big city*), así que un modelo que predice las palabras de contexto a partir de una palabra se verá empujado a darles vectores parecidos."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "bc5917cf",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:31.647072Z",
     "iopub.status.busy": "2026-10-16T09:04:31.646424Z",
     "iopub.status.idle": "2026-10-16T09:04:31.668338Z",
     "shell.execute_reply": "2026-10-16T09:04:31.665412Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "one-hot @ E     : [ 0.403  0.838 -0.719]\n",
      "buscar la fila  : [ 0.403  0.838 -0.719]   (lo mismo, mucho más barato)\n"
     ]
    }
   ],
   "source": [
    "E_toy = torch.randn(5, 3)                       # 5 palabras, embeddings de 3 dimensiones\n",
    "one_hot = F.one_hot(torch.tensor(2), 5).float()  # la palabra número 2\n",
    "print(\"one-hot @ E     :\", (one_hot @ E_toy).numpy().round(3))\n",
    "print(\"buscar la fila  :\", E_toy[2].numpy().round(3), \"  (lo mismo, mucho más barato)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d82aa2ef",
   "metadata": {},
   "source": [
    "## 2. Un pequeño corpus con estructura oculta\n",
    "\n",
    "Los embeddings reales se entrenan con miles de millones de palabras. Para ver los mismos efectos en segundos, generamos 60.000 frases a partir de una pequeña gramática con **una estructura que podemos comprobar después**:\n",
    "\n",
    "* **personas** que se diferencian en tres ejes independientes: género (*man/woman*, *king/queen*), realeza (el *king* vive en un *palace*) y edad (el *boy* va a la *school*);\n",
    "* **geografía**: países, sus capitales y sus idiomas, conectados por frases coherentes;\n",
    "* **animales** y **comida**, que aparecen en contextos claramente distintos;\n",
    "* **profesiones**, donde sembramos deliberadamente un **sesgo**: *engineer, pilot, mechanic, programmer* (ingeniero, piloto, mecánico, programador) aparecen con *he* (él) el 85 % de las veces, y *nurse, receptionist, nanny, secretary* (enfermera, recepcionista, niñera, secretaria) con *she* (ella) el 85 % de las veces. El texto real tiene desviaciones como esta, y la sección 5 muestra lo que les hacen a los embeddings."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "bc687381",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:31.676145Z",
     "iopub.status.busy": "2026-10-16T09:04:31.675523Z",
     "iopub.status.idle": "2026-10-16T09:04:31.952535Z",
     "shell.execute_reply": "2026-10-16T09:04:31.950240Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  we eat rice for dinner\n",
      "  the wife drives her car to work\n",
      "  the receptionist finished her work\n",
      "  in lisbon people speak portuguese\n",
      "  the cheese is very tasty\n",
      "  the boy works in the town\n",
      "  the japanese language is spoken in japan\n",
      "  he is the prince of the kingdom\n"
     ]
    }
   ],
   "source": [
    "people = [  # (masculino, femenino, realeza, joven)\n",
    "    (\"man\", \"woman\", False, False), (\"boy\", \"girl\", False, True), (\"king\", \"queen\", True, False),\n",
    "    (\"prince\", \"princess\", True, True), (\"father\", \"mother\", False, False), (\"son\", \"daughter\", False, True),\n",
    "    (\"brother\", \"sister\", False, True), (\"uncle\", \"aunt\", False, False), (\"husband\", \"wife\", False, False),\n",
    "]\n",
    "countries = [(\"france\", \"paris\", \"french\"), (\"spain\", \"madrid\", \"spanish\"), (\"italy\", \"rome\", \"italian\"),\n",
    "             (\"germany\", \"berlin\", \"german\"), (\"portugal\", \"lisbon\", \"portuguese\"), (\"japan\", \"tokyo\", \"japanese\"),\n",
    "             (\"china\", \"beijing\", \"chinese\"), (\"russia\", \"moscow\", \"russian\"), (\"greece\", \"athens\", \"greek\"),\n",
    "             (\"poland\", \"warsaw\", \"polish\")]\n",
    "animals = [\"dog\", \"cat\", \"horse\", \"cow\", \"sheep\", \"rabbit\"]\n",
    "foods = [\"apple\", \"bread\", \"cheese\", \"rice\", \"soup\", \"cake\"]\n",
    "jobs_he = [\"engineer\", \"pilot\", \"mechanic\", \"programmer\"]   # profesiones que el corpus sesgado empareja sobre todo con \"he\"\n",
    "jobs_she = [\"nurse\", \"receptionist\", \"nanny\", \"secretary\"]   # ... y sobre todo con \"she\"\n",
    "\n",
    "def sentence(rng):\n",
    "    r = rng.random()\n",
    "    if r < 0.40:                                     # personas: género, realeza, edad\n",
    "        m, f, royal, young = rng.choice(people)\n",
    "        female = rng.random() < 0.5\n",
    "        p, pron, poss = (f, \"she\", \"her\") if female else (m, \"he\", \"his\")\n",
    "        t = rng.random()\n",
    "        if t < 0.35:\n",
    "            return f\"the {p} said that {pron} was tired\"\n",
    "        if t < 0.55:\n",
    "            return f\"{pron} is the {p} of the family\" if not royal else f\"{pron} is the {p} of the kingdom\"\n",
    "        if t < 0.80:\n",
    "            if royal:\n",
    "                return rng.choice([f\"the {p} lives in the palace\", f\"the {p} wears a crown\", f\"the {p} rules the kingdom\", f\"the {p} sits on the throne\"])\n",
    "            return rng.choice([f\"the {p} lives in a house\", f\"the {p} works in the town\", f\"the {p} walks to the market\"])\n",
    "        if young:\n",
    "            return rng.choice([f\"the young {p} plays in the garden\", f\"the {p} goes to school\", f\"the young {p} learns to read\"])\n",
    "        return rng.choice([f\"the old {p} reads {poss} newspaper\", f\"the {p} drives {poss} car to work\", f\"the old {p} rests at home\"])\n",
    "    if r < 0.70:                                     # geografía\n",
    "        c, city, lang = rng.choice(countries)\n",
    "        return rng.choice([f\"{city} is the capital of {c}\", f\"people in {c} speak {lang}\", f\"in {city} people speak {lang}\",\n",
    "                           f\"we flew to {city} last summer\", f\"we travelled to {c} last summer\", f\"{city} is a big city in {c}\",\n",
    "                           f\"the {lang} language is spoken in {c}\", f\"{c} is a country in the world\"])\n",
    "    if r < 0.85:                                     # animales y comida: dos grupos claros\n",
    "        if rng.random() < 0.5:\n",
    "            a = rng.choice(animals)\n",
    "            return rng.choice([f\"the {a} eats grass in the field\", f\"the {a} runs across the farm\", f\"the farmer feeds the {a}\", f\"the {a} sleeps in the barn\"])\n",
    "        f_ = rng.choice(foods)\n",
    "        return rng.choice([f\"we eat {f_} for dinner\", f\"the {f_} is very tasty\", f\"she bought some {f_} at the market\", f\"he cooked {f_} in the kitchen\"])\n",
    "    job = rng.choice(jobs_he + jobs_she)             # profesiones, con una desviación de género deliberada\n",
    "    skew = 0.85 if job in jobs_he else 0.15          # probabilidad de que la frase use \"he\"\n",
    "    pron, poss = (\"he\", \"his\") if rng.random() < skew else (\"she\", \"her\")\n",
    "    return rng.choice([f\"the {job} said that {pron} was tired\", f\"the {job} finished {poss} work\", f\"{pron} works as a {job}\",\n",
    "                       f\"the {job} drives {poss} car to work\"])\n",
    "\n",
    "rng = random.Random(0)\n",
    "corpus = [sentence(rng) for _ in range(60000)]\n",
    "for s in corpus[:8]:\n",
    "    print(\" \", s)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ef0c273",
   "metadata": {},
   "source": [
    "## 3. Entrenamiento: skip-gram con muestreo negativo\n",
    "\n",
    "El modelo **skip-gram** (Mikolov et al., 2013, el artículo de \"word2vec\") convierte la hipótesis distribucional en una tarea de entrenamiento: dada una palabra central, predecir qué palabras aparecen a pocas posiciones de ella.\n",
    "\n",
    "Predecir la palabra correcta entre todo el vocabulario exige un softmax sobre $V$ palabras, lo que resulta caro con vocabularios grandes. El **muestreo negativo** lo sustituye por una pregunta barata de sí o no: para un par real (central, contexto), empuja la puntuación $\\sigma(u_o \\cdot v_c)$ hacia 1; para $k$ palabras de \"ruido\" aleatorias, empuja sus puntuaciones hacia 0.\n",
    "\n",
    "$$ \\mathcal{L} = -\\log \\sigma(u_o^\\top v_c) \\;-\\; \\sum_{j=1}^{k} \\log \\sigma(-u_{n_j}^\\top v_c) $$\n",
    "\n",
    "Cada palabra tiene dos vectores: $v$ cuando es la palabra central y $u$ cuando es una palabra de contexto. Tras el entrenamiento usamos $v + u$ como embedding de cada palabra (el artículo de GloVe hace lo mismo) y restamos el vector medio del vocabulario. Centrar elimina una dirección que comparten todas las palabras y que, si no, domina las similitudes coseno; prueba los vectores $v$ en bruto en el ejercicio 2 y verás cómo se hunden las analogías de idiomas. Las palabras de ruido se extraen con probabilidad proporcional a $\\text{frecuencia}^{0.75}$, lo que muestrea las palabras raras un poco más a menudo que su frecuencia en bruto."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "34cf5242",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:31.960472Z",
     "iopub.status.busy": "2026-10-16T09:04:31.960017Z",
     "iopub.status.idle": "2026-10-16T09:04:55.685621Z",
     "shell.execute_reply": "2026-10-16T09:04:55.684344Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "vocabulario de 148 palabras, 374,742 tokens, 1,528,452 pares (central, contexto)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "época 1: pérdida 1.590  (6 s)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "época 2: pérdida 1.503  (12 s)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "época 3: pérdida 1.548  (18 s)\n"
     ]
    }
   ],
   "source": [
    "from collections import Counter\n",
    "counts = Counter(w for s in corpus for w in s.split())\n",
    "itos = sorted(counts, key=lambda w: -counts[w])\n",
    "stoi = {w: i for i, w in enumerate(itos)}\n",
    "V = len(itos)\n",
    "\n",
    "window = 3\n",
    "pairs = []\n",
    "for s in corpus:\n",
    "    ids = [stoi[w] for w in s.split()]\n",
    "    for i, c in enumerate(ids):\n",
    "        for j in range(max(0, i - window), min(len(ids), i + window + 1)):\n",
    "            if j != i:\n",
    "                pairs.append((c, ids[j]))\n",
    "pairs = torch.tensor(pairs)\n",
    "freq = torch.tensor([counts[w] for w in itos], dtype=torch.float)\n",
    "noise_dist = freq ** 0.75 / (freq ** 0.75).sum()\n",
    "print(f\"vocabulario de {V} palabras, {sum(counts.values()):,} tokens, {len(pairs):,} pares (central, contexto)\")\n",
    "\n",
    "class SkipGram(nn.Module):\n",
    "    def __init__(self, V, d=32):\n",
    "        super().__init__()\n",
    "        self.centre = nn.Embedding(V, d)       # v: los embeddings que conservamos\n",
    "        self.context = nn.Embedding(V, d)      # u: solo se usa durante el entrenamiento\n",
    "        nn.init.normal_(self.centre.weight, 0, 0.1); nn.init.zeros_(self.context.weight)\n",
    "    def loss(self, c, o, k=5):\n",
    "        v = self.centre(c)\n",
    "        pos = (v * self.context(o)).sum(-1)\n",
    "        negatives = torch.multinomial(noise_dist, len(c) * k, replacement=True).view(-1, k)\n",
    "        neg = torch.bmm(self.context(negatives), v.unsqueeze(-1)).squeeze(-1)\n",
    "        return -(F.logsigmoid(pos) + F.logsigmoid(-neg).sum(-1)).mean()\n",
    "\n",
    "torch.manual_seed(0)\n",
    "sg = SkipGram(V)\n",
    "opt = torch.optim.Adam(sg.parameters(), lr=3e-3)\n",
    "t0 = time.time()\n",
    "for epoch in range(3):\n",
    "    perm = torch.randperm(len(pairs))\n",
    "    for i in range(0, len(pairs), 2048):\n",
    "        b = pairs[perm[i:i + 2048]]\n",
    "        loss = sg.loss(b[:, 0], b[:, 1])\n",
    "        opt.zero_grad(); loss.backward(); opt.step()\n",
    "    print(f\"época {epoch + 1}: pérdida {loss.item():.3f}  ({time.time() - t0:.0f} s)\")\n",
    "W = sg.centre.weight.detach() + sg.context.weight.detach()\n",
    "emb = F.normalize(W - W.mean(0), dim=1)    # centrados y de longitud 1: ahora un producto escalar es una similitud coseno"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07ff9bcc",
   "metadata": {},
   "source": [
    "## 4. Explorar el espacio de embeddings\n",
    "\n",
    "La **similitud coseno** $\\cos(a, b) = \\frac{a \\cdot b}{\\|a\\|\\|b\\|}$ mide si dos vectores apuntan en la misma dirección. Nadie le dijo al modelo que *Paris* es una ciudad ni que *dog* es un animal; solo vio qué palabras aparecen junto a cuáles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f7214e9b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:55.689141Z",
     "iopub.status.busy": "2026-10-16T09:04:55.688657Z",
     "iopub.status.idle": "2026-10-16T09:04:55.707389Z",
     "shell.execute_reply": "2026-10-16T09:04:55.706225Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "paris     → berlin (0.86), beijing (0.85), tokyo (0.83), rome (0.83), warsaw (0.82)\n",
      "spanish   → greek (0.85), spoken (0.8), portuguese (0.78), french (0.76), speak (0.75)\n",
      "dog       → cat (1.0), cow (1.0), rabbit (1.0), sheep (0.99), horse (0.99)\n",
      "cheese    → rice (1.0), bread (0.99), soup (0.99), apple (0.99), cake (0.99)\n",
      "king      → man (0.79), uncle (0.79), husband (0.78), father (0.78), queen (0.73)\n",
      "girl      → sister (0.99), daughter (0.99), princess (0.75), young (0.7), boy (0.68)\n"
     ]
    }
   ],
   "source": [
    "def nearest(word, n=5, E=None):\n",
    "    E = emb if E is None else E\n",
    "    sims = E @ E[stoi[word]]\n",
    "    return [(itos[i], round(sims[i].item(), 2)) for i in sims.argsort(descending=True)[1:n + 1]]\n",
    "\n",
    "for w in [\"paris\", \"spanish\", \"dog\", \"cheese\", \"king\", \"girl\"]:\n",
    "    print(f\"{w:9s} → \" + \", \".join(f\"{x} ({s})\" for x, s in nearest(w)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "ec9d04f6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:55.710307Z",
     "iopub.status.busy": "2026-10-16T09:04:55.710045Z",
     "iopub.status.idle": "2026-10-16T09:04:56.405982Z",
     "shell.execute_reply": "2026-10-16T09:04:56.404452Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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EREREVUhTNKIiIiIiIiqECZpREREREREVQiTNCIiIiIioiqESRoREREREVEVwiSNiIiIiIioCmGSRkREREREVIUwSSMiIiIiIqpCmKQRERERERFVIUzSiIiIiIiIqhAmaURERERERFUIkzQiIiIiIqIqhEkaERERERFRFcIkjYiIiIiIqAphkkZERERERFSFMEkjIiIiIiKqQpikERERERERVSFM0oiIiIiIiKoQJmlERERERERVCJM0IiIiIiKiKoRJGhERERERURXCJI2IiIiIiKgKYZJGRERERERUhTBJIyIiIiIiqkKYpBEREREREVUhTNKIiIiIiIiqECZpREREREREVQiTNCIiIiIioiqESdpnxtnZGWlpaZUdBhERERERlUCxsgOgDyssLKyyQyAiIiIiolKwJe0zI5FIkJycjIkTJ6JRo0ZwdnZG69atERUVJVdm5syZcHFxgbW1NbZv3y6u69+/Pxo2bAhHR0d07doVT58+BQDExsZCV1cXc+bMgaurK+rWrYt//vlH3C40NBRt27ZFw4YN4eLigt27dwMAnj9/jg4dOsDBwQGOjo4YOHCguM2yZcvQuHFjNGjQAJ06dcL9+/cr+vQQEREREVU6JmmfqSlTpiA0NBRhYWEYOXIkxo4dK7deIpHg6tWrOHLkCL799lvExsYCAFatWoXLly/j2rVraNWqFebOnStuk5KSAkdHR1y5cgVr167Fd999BwBITk7GsGHDsH37dly+fBnHjx/HhAkT8OjRI2zbtg0WFhaIiIjAtWvXsHz5cgDAjh07EBUVhZCQEPz333/o378/Ro4c+UHODRERERFRZWJ3x8/U8ePHsWbNGqSlpUEmkyExMVFu/ZAhQwAAlpaWaN26Nc6cOQNzc3Ps2LEDW7duRXZ2NrKzs2FoaChuo6qqih49egAAmjVrhrt37wIAzp8/j3v37qFz585y+4iKikLTpk2xcuVKTJgwAa1bt0anTp0AAIGBgQgNDYWrqysAID8/v2JOBBERERFRFcMk7TOUmpqK0aNHIzQ0FHXq1MG1a9fQunXrUreRSCQ4d+4cfvrpJ4SEhMDY2Bh//fUXZs+eLZZRUVGBRCIBAEilUjGxEgQB9vb2OH/+fLF1h4WF4cSJE9i3bx9mzZqFq1evQhAETJs2DcOGDSunoyYiIiIi+jiwu+Nn6P79+1BSUkL1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erRIQLvA3jbUFhERERG5XgppUirtXHXikoB2gT1tqC0iIiIicr0U0qRUutqG2fa2obaIiIiIyLVSSJNSqSxsqC0iIiIiUhyFNCmVysKG2iIiIiIixVFIk1KpNG6oLSIiIiJyLVSjXEql0rihtoiIiIjItdBvslJqlXcy0axLXZp1qXu7hyIiIiIiUmK03FFERERERMSOKKSJiIiIiIjYEYU0ERERERERO6KQJiIiIiIiYkcU0kREREREROyIQpqIiIiIiIgdUUiTUmPFihWYzWYATpw4QevWra/5eBERERGR0kIhTUqlGjVqsGrVqts9DBERERGREqeQJreFwWBg+PDhBAcH07BhQ2bMmGFr+/3332nSpAmBgYG0bduWXbt2XXJ+QkICnp6eAGRlZREREUHjxo0JCgrigQcesB2Xn5/PoEGDCAoKws/Pj82bN9/0axMRERER+TtMt3sAcucyGAzExMRw8OBBQkJCuPfee3F2dubpp59mxYoVBAQEMGPGDMLDw9m5c+dl+1m8eDEpKSm2MJeUlGRr27NnD1OmTOHLL79k0qRJvPXWW/z+++83/dpERERERG6UZtLktunfvz8A9erVo02bNqxcuZINGzYQEBBAQEAAAD169ODEiRMcP378sv0EBQWxe/duBg0axOzZsylXrpytrUGDBrRo0QKA0NBQDhw4cBOvSERERETk71NIE7thMBhu6Lx69eqxa9cuOnXqxJo1a/D39yc5ORkAJycn23EODg7k5+eXyFhFRERERG4WhTS5baZOnQoUPl+2atUqWrduTcuWLdmxYwdxcXEAzJo1i5o1a1KzZs3L9nPs2DEMBgNdu3blk08+wWq1cvTo0VtyDSIiIiIiJU3PpMlNkZudz7alR9m56gSZqTk4ezji17oGQR1rU96p8MeuoKCA4OBgMjIyGD9+PD4+PgDMmDGDyMhI8vPzqVixInPmzLniLNuOHTsYOnQoVquV/Px8evXqRWBgICtWrLgFVyoiIiIiUrIMVqvVerWD0tLS8PDwIDU1FXd391sxLinFcrPzmT8mhrNH07n4p8tggCq13ej2r2AcK5QjOTnZVqFRRERERKQsu55MpeWOUuK2LT16SUADsFrh7NF0ti3VUkQRERERkcvRckcpcTtXnbgkoF1gtV5ov+oEroiIiIjIHUkzaVLiMlNz/la7iIiIiMidTCFNSpyzh+PfahcRERERuZMppEmJ82tdg8sVYzQYCttFRERERKR4CmlS4oI61qZKbbdLgtqF6o5BHWvfnoGJiIiIiJQCCmlS4so7mej2r2CaPVwXF09HDAZw8XSk2cN16favYNs+aWVB//79Wb58+e0ehoiIiIiUIdonTe4o+fn5mExlJySKiIiISOmgfdJELmIwGBgxYgTNmjVj6NChREVF0a1bN1v7r7/+Srt27QDYt28f9957L0FBQQQEBDB8+HAAfvnlFwIDAzGbzfj7+7NgwQIA2rVrx/z58wGYOXMmLVq0IDg4mKCgIH755Rfbd7Rr145XX32V1q1bU79+fQYOHHhLrl1ERERESh9NKcgdwcHBgU2bNgEQFRV12eMmTJjAww8/zNChQwFISkoCYPjw4UyePJnQ0FAsFgtpaWmXnPvggw/y1FNPYTAYSEhIoGXLlhw+fBhHx8JqlgcOHGD58uXk5eXRuHFj1q1bR2hoaAlfqYiIiIiUdgppckfo27fvNR3Xpk0bXnvtNc6fP0/btm0JCwsDoGPHjrz00kuEh4fzwAMPYDabLzn30KFD9OjRg2PHjmEymUhKSuLQoUM0atQIgIiICEwmEyaTCbPZzIEDBxTSREREROQSWu4odwRXV1fba5PJREFBge19dna27fXjjz/OmjVr8PX1tc2qAYwZM4apU6fi7OxM7969+fjjjy/5ju7du9O/f3/i4uKIjY3F1dW1SN9OTk621w4ODuTn55foNYqIiIhI2aCZNLnjNGjQgO3bt5OVlUW5cuWYOXOmrW3fvn3Ur1+fyMhImjdvTqtWrQDYs2cPfn5++Pn5YTKZ+O9//3tJv8nJydStWxeA6dOnk5ycfGsuSERERETKFIU0KfVys/PZtvQoO1edIDM1B2cPR/xa1yCoY+1iy/23bNmSzp074+/vT/Xq1bn33nvZsGEDAHPnzmX69OmUL18ei8XCpEmTABg2bBjx8fGUL18eZ2dnJk6ceEm/48aNIzw8HE9PTzp06ECdOnVu7oWLiIiISJmkEvxSquVm5zN/TAxnj6Zz8U/yhY2zy9q+bCIiIiJSOqkEv9wxti09eklAA7Ba4ezRdLYtPXp7BiYiIiIicoMU0qRU27nqxCUB7QKrtbBdRERERKQ0UUiTUi0zNedvtYuIiIiI2BuFNCnVnD0c/1a7iIiIiIi9UUiTUs2vdQ0MhuLbDIbCdhERERGR0kQhTUq1oI61qVLb7ZKgdqG6Y1DH2rdnYCIiIiIiN0i1yaVUK+9kotu/gq9rnzQREREREXum32Cl1CvvZKJZl7o061L3dg9FRERERORv03JHERERERERO6KQJiIiIiIiYkcU0kREREREROyIQpqIiIiIiIgdUUgTERERERGxIwppIiIiIiIidkQhTURERERExI4opImIiIiIiNgRhTQRERERERE7opAmIiIiIiJiRxTSRERERERE7IhCmoiIiIiIiB1RSBMREREREbEjCmkiIiIiIiJ2RCFNRERERETEjiikiYiIiIiI2BGFNBERERERETuikCYiIiIiImJHFNJERERERETsiEKaiIiIiIiIHVFIExERERERsSMKaSIiIiIiInZEIU1ERERERMSOKKSJiIiIiIjYEYU0ERERERERO6KQJiIiIiIiYkcU0kREREREROyIQpqIiIiIiIgdUUgTERERERGxIwppIiIiIiIidkQhTURERERExI4opImIiIiIiNgRhTQRERERERE7opAmIiIiIiJiRxTSRERERERE7IhCmoiIiIiIiB1RSBMREREREbEjCmkiIiIiIiJ2RCFNRERERETEjiikiYiIiIiI2BGFNBERERERETuikCYiIiIiImJHFNJERERERETsiEKaiIiIiIiIHVFIExERERERsSMKaSIiIiIiInZEIU1ERERERMSOKKSJiIiIiIjYEYU0ERERERERO6KQJiIiIiIiYkcU0kREREREROyIQpqIiIiIiIgdUUgTERERERGxIwppIiIiIiIidkQhTURERERExI4opP1NI0eOJDs7+6rH+fj4EBsbe/MHJCIiIiIipZpC2t/073//+5pCmoiIiIiIyLVQSLtISkoKH374YZHP2rVrx/z584s9fuDAgQC0bt0as9nMmTNneOyxxwgICMDf35/JkycXe97nn3/Ovffey6ZNm2jUqBFWq9XW1qpVK3777TcAvv/+ewIDAwkMDKRLly4cP368BK5SRERERETsmULaRYoLaVcyadIkAFatWkVsbCwvvvgivr6+7Nixg2XLlvHee++xfv162/EWi4V//etfLFu2jOjoaJo1a0blypVZsmQJADExMSQmJtKpUyfi4uJ47bXX+O2339i+fTutWrWif//+JXvBIiIiIiJidwzWi6dx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2I1rDV9V3ZyufpBIKaWQJiIiIiJ241rD19Mt6tzkkYjcPgppIiIiImI3riV8mYwG+t1X9xaMRuT2UEgTEREREbvR7766VHVzvGy7ARjYtj4ujtpJSsouhTQRERERsRsujiZ+ffG+YoOa0QB+Ndz5Z7v6t2FkIreOQpqIiIiI2JWq7k4sf7Ud/7q/IdXcnTAaCkvuDwlryOznQjWLJmWe9kkTERERERG5ybRPmoiIiIiISCmlkCYiIiIiImJHFNJERERERETsiEKaiIiIiIiIHVFIExERERERsSMKaSIiIiIiInZEIU1ERERERMSOKKSJiIiIiIjYEYU0ERERERERO6KQJiIiIiIiYkcU0kREREREROyIQpqIiIiIiIgdUUgTERERERGxIwppIiIiIiIidkQhTURERERExI4opImIiIiIiNgRhTQRERERERE7opAmIiIiIiJiRxTSRERERERE7IhCmoiIiIiIiB1RSBMREREREbEjpms5yGq1ApCWlnZTByMiIiIiIlIWXchSF7LVlVxTSEtPTwegdu3af2NYIiIiIiIid7b09HQ8PDyueIzBeg1RzmKxcOLECdzc3DAYDCU2QBERERERkTuB1WolPT2dGjVqYDRe+amzawppIiIiIiIicmuocIiIiIiIiIgdUUgTERERERGxIwppIiIiIiIidkQhTURERERExI4opImIiIiIiNgRhTQRERERERE7opAmIiIiIiJiR/4f9+Mg9pM0aAIAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1100x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "groups = {\"personas (masculino)\": [p[0] for p in people], \"personas (femenino)\": [p[1] for p in people],\n",
    "          \"países\": [c[0] for c in countries], \"capitales\": [c[1] for c in countries], \"idiomas\": [c[2] for c in countries],\n",
    "          \"animales\": animals, \"comida\": foods}\n",
    "words = [w for ws in groups.values() for w in ws]\n",
    "X = emb[[stoi[w] for w in words]].numpy()\n",
    "X = X - X.mean(0)\n",
    "U, S, Vt = np.linalg.svd(X, full_matrices=False)       # PCA a mano: proyección sobre las 2 direcciones de mayor varianza\n",
    "P = X @ Vt[:2].T\n",
    "fig, ax = plt.subplots(figsize=(11, 8))\n",
    "k = 0\n",
    "for (name, ws), color in zip(groups.items(), plt.cm.tab10.colors):\n",
    "    pts = P[k:k + len(ws)]; k += len(ws)\n",
    "    ax.scatter(pts[:, 0], pts[:, 1], color=color, label=name, s=30)\n",
    "    for (x, y), w in zip(pts, ws):\n",
    "        ax.annotate(w, (x, y), fontsize=8, xytext=(3, 3), textcoords=\"offset points\")\n",
    "ax.legend(); ax.set_title(\"Embeddings de palabras de 32 dimensiones proyectados a 2D con PCA\"); ax.set_xticks([]); ax.set_yticks([])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39665f9c",
   "metadata": {},
   "source": [
    "### Analogías: las relaciones se convierten en direcciones\n",
    "\n",
    "Si *man → woman* y *king → queen* se diferencian de la misma manera (el género), los vectores diferencia deberían ser aproximadamente iguales, así que\n",
    "\n",
    "$$ \\vec{\\text{queen}} \\approx \\vec{\\text{king}} - \\vec{\\text{man}} + \\vec{\\text{woman}} $$\n",
    "\n",
    "Respondemos \"*a* es a *b* como *c* es a ?\" calculando $\\vec b - \\vec a + \\vec c$ y devolviendo la palabra más parecida que no sea ninguna de las tres de entrada."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6ff24850",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:56.408959Z",
     "iopub.status.busy": "2026-10-16T09:04:56.408674Z",
     "iopub.status.idle": "2026-10-16T09:04:56.519967Z",
     "shell.execute_reply": "2026-10-16T09:04:56.518180Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "man : woman  ::  king : queen\n",
      "king : queen  ::  prince : princess\n",
      "boy : girl  ::  brother : sister\n",
      "paris : france  ::  rome : italy\n",
      "france : french  ::  japan : japanese\n",
      "berlin : germany  ::  madrid : spain\n",
      "\n",
      "masculino → femenino    38.9% de 72 analogías correctas\n",
      "capital → país         100.0% de 90 analogías correctas\n",
      "país → idioma           98.9% de 90 analogías correctas\n"
     ]
    }
   ],
   "source": [
    "def analogy(a, b, c, E=None, among=None):\n",
    "    # \"a es a b como c es a ?\"; opcionalmente restringe la respuesta a una lista de palabras candidatas\n",
    "    E = emb if E is None else E\n",
    "    q = F.normalize(E[stoi[b]] - E[stoi[a]] + E[stoi[c]], dim=0)\n",
    "    for i in (E @ q).argsort(descending=True):\n",
    "        if itos[i] not in (a, b, c) and (among is None or itos[i] in among):\n",
    "            return itos[i]\n",
    "\n",
    "for a, b, c in [(\"man\", \"woman\", \"king\"), (\"king\", \"queen\", \"prince\"), (\"boy\", \"girl\", \"brother\"),\n",
    "                (\"paris\", \"france\", \"rome\"), (\"france\", \"french\", \"japan\"), (\"berlin\", \"germany\", \"madrid\")]:\n",
    "    print(f\"{a} : {b}  ::  {c} : {analogy(a, b, c)}\")\n",
    "\n",
    "def score(tests):\n",
    "    return np.mean([analogy(a, b, c) == d for a, b, c, d in tests])\n",
    "\n",
    "gender_tests = [(m1, f1, m2, f2) for m1, f1, *_ in people for m2, f2, *_ in people if m1 != m2]\n",
    "capital_tests = [(ci1, co1, ci2, co2) for co1, ci1, _ in countries for co2, ci2, _ in countries if co1 != co2]\n",
    "language_tests = [(co1, la1, co2, la2) for co1, _, la1 in countries for co2, _, la2 in countries if co1 != co2]\n",
    "print()\n",
    "for name, tests in [(\"masculino → femenino\", gender_tests), (\"capital → país\", capital_tests), (\"país → idioma\", language_tests)]:\n",
    "    print(f\"{name:22s} {score(tests):6.1%} de {len(tests)} analogías correctas\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "64434eb9",
   "metadata": {},
   "source": [
    "Las analogías geográficas salen casi perfectas, a partir de nada más que estadísticas de coocurrencia. Las de género son más difíciles, y los fallos son informativos: las personas de este corpus se diferencian en varios ejes a la vez (género, realeza, edad, papel en la familia), así que la respuesta a *son : daughter :: brother : ?* tiene que competir con palabras cercanas que comparten la mayoría de esos ejes. Los embeddings de word2vec reales cometen el mismo tipo de errores.\n",
    "\n",
    "## 5. Los embeddings heredan los sesgos de su texto\n",
    "\n",
    "Nuestro corpus dijo *the engineer … he* el 85 % de las veces y *the nurse … she* el 85 % de las veces. El modelo no tiene forma de saber que se trata de un patrón social y no de un hecho sobre la ingeniería, así que lo aprende. Bolukbasi et al. (2016) encontraron lo mismo en embeddings entrenados con artículos de noticias (\"el hombre es al programador informático lo que la mujer al ama de casa\").\n",
    "\n",
    "Podemos medirlo: construimos una **dirección de género** $g$ promediando las diferencias de pares claramente marcados por género y proyectamos cada profesión sobre ella. Un valor positivo significa \"más cerca de *he*\" y uno negativo, \"más cerca de *she*\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "946c3832",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:56.523195Z",
     "iopub.status.busy": "2026-10-16T09:04:56.522922Z",
     "iopub.status.idle": "2026-10-16T09:04:56.778092Z",
     "shell.execute_reply": "2026-10-16T09:04:56.776740Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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06d4Gy0RUSWnVt4BEBERERERFYaJCxERERERqTwmLkREREREpPIq7TMuRERUdSS4uHI4ZBXAYYuJqDTxigsREREREak8Ji5ERERERKTymLgQEREREZHKY+JCREREREQqj4kLERERERGpvFJNXDIyMkqt7szMzFKruyxVlv0gIiIiIipNxUpcPDw8EBgYiMDAQCgUCpiYmGDSpEkQQgAArK2tMW3aNPTr1w+GhoYYNGgQAGDz5s1o1KgR5HI5rK2tMW/ePKV679y5g65du0JHRwd169bF+vXrYW1tjYULF0plZDIZli1bho8//hh6enqYMWMGsrKyMGDAANStWxc6Ojpo0KABFi1apFS3v78/vL29MXPmTJibm8PIyAhTp07Fq1evMHr0aBgbG6NWrVoIDw+X1klOToZMJsOmTZvg5uYGHR0dfPDBB7hy5QpiYmLg6uoKfX19dOnSBf/995/S9latWgUHBwdoa2vD3t4eS5cuzVXvxo0b4e7uDm1tbaxbt644h4CIiIiIqEoq9u+4REREYMCAATh58iROnTqFQYMGoXbt2hg4cCAAYO7cuZg8eTKmTJkCADh9+jR8fHwQHByMzz//HMeOHcPgwYNRvXp1+Pv7AwD69euHBw8eIDIyEpqamhgxYgTu37+fa9vBwcEICwvDwoULoaGhgezsbNSqVQu//fYbqlevjmPHjmHQoEGwtLSEj4+PtN6BAwdQq1YtHD58GFFRURgwYACOHTuGtm3bIjo6Ghs3bsRXX32Fjh07olatWtJ6U6ZMwcKFC1G7dm18+eWX6N27NwwMDLBo0SLo6urCx8cHkydPxrJlywAA69atw+TJk7FkyRI4Ozvj7NmzGDhwIPT09ODn5yfVO27cOMybNw/Ozs7Q1tbOs53T09ORnp4uTaemphb3UBERERERVRoykXO5pAg8PDxw//59XLx4ETKZDMDrL+F//PEHLl26BGtrazg7O2Pr1q3SOn369MF///2HPXv2SPPGjBmDHTt24OLFi7h8+TIcHBykKxkAcPXqVdjZ2WHBggUICgp6HahMhqCgICxYsKDAGAMDA3H37l38/vvvAF5fcYmMjMS1a9egpvb6ApO9vT3MzMxw+PBhAEBWVhYUCgVWrVqFL774AsnJyahbty5WrVqFAQMGAAA2bNgAX19f7N+/H+3btwcAhIWFYfXq1bh8+TIA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mpbJZErzZDIZgNfPrqSlpaF79+6YNWtWrnosLS1x7dq1Ym/zzfoBYM6cOVi0aBEWLlwIR0dH6OnpISgoCBkZGYXGnd+tXzo6OkWK601yuRxyubzY6xERERERVUbl/oxLcTRr1gwXL16EtbU1bG1tlV56enqws7ODjo4O9u/f/87biIqKQo8ePfC///0PTZo0Qb169XDlypX3itvJyQmxsbF49OjRe9VDRERERFRVVajEZciQIXj06BF8fX0RExODpKQk7N69G/3790dWVha0tbUxduxYjBkzBmvWrEFSUhJOnDiBn376qcjbsLOzw969e3Hs2DHEx8fjq6++wr17994rbl9fX1hYWMDb2xtRUVG4du0aNm/erDSaGRERERER5a9CJS41atRAVFQUsrKy0KlTJzg6OiIoKAhGRkZQU3u9K5MmTcLIkSMxefJkODg44PPPP8/32ZO8TJw4Ec2aNYOXlxc8PDykhON9aGlpYc+ePTAzM8NHH30ER0dHhIWFQZ0PkhIRERERFUm5jipGRVfU0RaIiKoSjipW9jiqGBGVtKJ+z61QV1yIiIiIiKhqKvdRxYiIiN5Xg9OneDWaiKiS4xUXIiIiIiJSeUxciIiIiIhI5TFxISIiIiIilcfEhYiIiIiIVB4fziciogovwcWVwyGXEA53TESqildciIiIiIhI5TFxISIiIiIilcfEhYiIiIiIVB4Tl2KytrbGwoULpWmZTIZt27aVWzxERERERFUBH84vppiYGOjp6b3z+v7+/njy5AmTHSIiIiKiYmDiUkympqblHQIRERERUZXDW8Xe4uHhgcDAQAQGBkKhUMDExASTJk2CEAJA7lvF3nb+/Hm0b98eOjo6qF69OgYNGoS0tDQAQHBwMCIiIrB9+3bIZDLIZDJERkbmWU96ejpSU1OVXkREREREVRUTlzxERERAQ0MDJ0+exKJFizB//nysWrWq0PWePXsGLy8vVKtWDTExMfjtt9+wb98+BAYGAgBGjRoFHx8fdO7cGXfu3MGdO3fQqlWrPOsKDQ2FQqGQXlZWViW6j0REREREFQlvFcuDlZUVFixYAJlMhgYNGuD8+fNYsGABBg4cWOB669evx8uXL7FmzRrpOZglS5age/fumDVrFszNzaGjo4P09HRYWFgUWNf48eMxYsQIaTo1NZXJCxERERFVWbzikocPP/wQ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iI6OlpZv3rxZWt/ExET06tUr37hv3LghPv74Y6GnpycMDAzEZ599Ju7evSstz+vh9QULFog6derkGbsQQgQGBgobGxshl8uFqamp6Nu3r3jw4IG0PDIyUnzwwQdCS0tLWFhYiLFjx4rMzExp+fu0/8mTJ0XHjh2Fvr6+0NPTE05OTmLGjBn5xvr2/p05c0a4uroKbW1tYWdnJ3777bd8t5UjMzNTDB8+XBgaGgojIyMxYsQI0a9fv0Ifzn+X+F+8eCG+/fZbYWlpKbS0tIStra34+eefpeVxcXGiU6dOQldXVxgYGAg3NzdpxLq3RxV78eKFGDp0qDAxMRFyuVy0bt1aacS7nIfzHz9+LM07e/asACCuX7+eb3scP35cNGnSRGhpaYmmTZuKzZs3Kz2cL4QQV65cET179hRGRkZCR0dH2Nvbi6CgIKVj/LYVK1aImjVrCh0dHeHt7S2mT58uLCwslMr8/fffolWrVkJHR0cYGhqK5s2bK41GB0Bs3bpVaR2FQiGN/FeU2N4+ljkKO6+L4uHDh0JbW1saCe59paeniy+++EJYWVkJLS0tUaNGDREYGCgNnhAeHq40wIEQQmzdulW8/VWpsD7pXZTEsXhfL168EAqFQhw/frxE6iMqDTIh8vjpYCKi/8/DwwNNmzZV+r2TkiSEgJ2dHQYPHowRI0aUyjaIKruBAwfi8uXLSg9aVwajR49Gamoqli9fXt6hVHrLli3D1q1bsWfPnvIOhShfvFWMiMrNf//9hyVLluDu3btFeg6FiF6bO3cu4uLicPXqVSxevBgRERHw8/Mr77BK3IQJE1CnTp33GgCBikZTUxOLFy8u7zCICsSH84mo3JiZmcHExAQrVqxAtWrVyjscogrj5MmTmD17Np4+fYp69erh+++/R0BAQHmHVeKMjIzw3XfflXcYVUJlPH+o8uGtYkREREREpPJ4qxgREREREak8Ji5ERERERKTymLgQEREREZHKY+JCREREREQqj4kLERERERGpPCYuRERERESk8pi4EBERERGRymPiQkREREREKu//ATRggf56X7iNAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 900x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "man : engineer :: woman : nanny\n",
      "he  : pilot    :: she   : nanny\n",
      "\n",
      "man : <profesión-he> :: woman : ?   (respuesta restringida a profesiones)\n",
      "  engineer     → nanny\n",
      "  pilot        → nanny\n",
      "  mechanic     → nanny\n",
      "  programmer   → nanny\n",
      "el 100% de las respuestas son profesiones de 'she'\n"
     ]
    }
   ],
   "source": [
    "definitional = [(\"he\", \"she\"), (\"man\", \"woman\"), (\"king\", \"queen\"), (\"father\", \"mother\"), (\"boy\", \"girl\"), (\"his\", \"her\")]\n",
    "g = F.normalize(sum(emb[stoi[m]] - emb[stoi[f]] for m, f in definitional), dim=0)\n",
    "\n",
    "occupations = jobs_he + jobs_she\n",
    "proj = {w: (emb[stoi[w]] @ g).item() for w in occupations + [\"dog\", \"cheese\", \"paris\", \"king\", \"queen\"]}\n",
    "fig, ax = plt.subplots(figsize=(9, 4))\n",
    "order = sorted(proj, key=proj.get)\n",
    "ax.barh(order, [proj[w] for w in order], color=[\"#d62728\" if w in occupations else \"#7f7f7f\" for w in order])\n",
    "ax.axvline(0, color=\"k\", lw=0.8); ax.set_xlabel(\"proyección sobre la dirección de género  (← she · he →)\")\n",
    "ax.set_title(\"Las profesiones (en rojo) heredan la desviación del texto de entrenamiento\"); plt.show()\n",
    "\n",
    "print(\"man : engineer :: woman :\", analogy(\"man\", \"engineer\", \"woman\"))\n",
    "print(\"he  : pilot    :: she   :\", analogy(\"he\", \"pilot\", \"she\"))\n",
    "\n",
    "def bias_probe(E):\n",
    "    # para cada profesión de \"he\", ¿a qué profesión la lleva man -> woman?\n",
    "    flips = [analogy(\"man\", job, \"woman\", E=E, among=occupations) for job in jobs_he]\n",
    "    return flips, np.mean([f in jobs_she for f in flips])\n",
    "\n",
    "flips, rate = bias_probe(emb)\n",
    "print(f\"\\nman : <profesión-he> :: woman : ?   (respuesta restringida a profesiones)\")\n",
    "for job, f in zip(jobs_he, flips):\n",
    "    print(f\"  {job:12s} → {f}\")\n",
    "print(f\"el {rate:.0%} de las respuestas son profesiones de 'she'\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c23d4c0",
   "metadata": {},
   "source": [
    "### Eliminar el sesgo: neutralizar\n",
    "\n",
    "La solución más simple del mismo artículo es **neutralizar** las palabras que deberían ser neutras en cuanto al género: restarles su componente a lo largo de $g$, de modo que queden exactamente a medio camino entre *he* y *she*:\n",
    "\n",
    "$$ \\vec w_{\\text{sin sesgo}} = \\vec w - (\\vec w \\cdot g)\\, g $$\n",
    "\n",
    "Las palabras cuyo género forma parte de su significado (*king*, *mother*) se dejan como están."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "3e1abce0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:56.783157Z",
     "iopub.status.busy": "2026-10-16T09:04:56.782888Z",
     "iopub.status.idle": "2026-10-16T09:04:56.796813Z",
     "shell.execute_reply": "2026-10-16T09:04:56.795297Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "profesión         antes  después\n",
      "engineer          0.138   -0.000\n",
      "pilot             0.095   -0.000\n",
      "mechanic          0.104    0.000\n",
      "programmer        0.113   -0.000\n",
      "nurse            -0.266   -0.000\n",
      "receptionist     -0.250   -0.000\n",
      "nanny            -0.273    0.000\n",
      "secretary        -0.259   -0.000\n",
      "\n",
      "tras neutralizar, man : <profesión-he> :: woman : ?\n",
      "  engineer     → pilot\n",
      "  pilot        → engineer\n",
      "  mechanic     → pilot\n",
      "  programmer   → engineer\n",
      "el 0% de las respuestas son profesiones de 'she' (antes: 100%)\n",
      "\n",
      "palabras más cercanas a 'nurse' tras neutralizar: ['secretary', 'engineer', 'receptionist', 'programmer']\n"
     ]
    }
   ],
   "source": [
    "emb_db = emb.clone()\n",
    "for w in occupations:\n",
    "    v = emb_db[stoi[w]]\n",
    "    emb_db[stoi[w]] = F.normalize(v - (v @ g) * g, dim=0)\n",
    "\n",
    "print(f\"{'profesión':14s} {'antes':>8s} {'después':>8s}\")\n",
    "for w in occupations:\n",
    "    print(f\"{w:14s} {(emb[stoi[w]] @ g).item():8.3f} {(emb_db[stoi[w]] @ g).item():8.3f}\")\n",
    "flips_db, rate_db = bias_probe(emb_db)\n",
    "print(\"\\ntras neutralizar, man : <profesión-he> :: woman : ?\")\n",
    "for job, f in zip(jobs_he, flips_db):\n",
    "    print(f\"  {job:12s} → {f}\")\n",
    "print(f\"el {rate_db:.0%} de las respuestas son profesiones de 'she' (antes: {rate:.0%})\")\n",
    "print(\"\\npalabras más cercanas a 'nurse' tras neutralizar:\", [w for w, _ in nearest(\"nurse\", 4, E=emb_db)])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0cf99b91",
   "metadata": {},
   "source": [
    "Las proyecciones son ahora exactamente cero y, en este corpus de juguete, la prueba de analogías ya no asigna profesiones \"masculinas\" a \"femeninas\". Los vecinos más cercanos de *nurse* ahora están mezclados, pero su antiguo grupo sigue apareciendo primero: parte del sesgo sobrevive en otras direcciones. En la práctica importan dos advertencias:\n",
    "\n",
    "* Con embeddings reales, investigaciones posteriores (Gonen y Goldberg, 2019) mostraron que este tipo de proyección sobre todo **oculta** el sesgo en lugar de eliminarlo. El género se aprende a lo largo de muchas direcciones a la vez, así que quitar una de ellas deja las profesiones agrupadas según su antiguo género, y un clasificador normalmente aún puede recuperarlo. El sesgo de un modelo es, en última instancia, una propiedad de sus datos de entrenamiento.\n",
    "* Los modelos de lenguaje modernos (notebook 08) siguen empezando con una capa de embeddings exactamente como esta, y heredan de la misma forma los patrones de su texto de entrenamiento; por eso evaluar sus sesgos sigue siendo un campo activo."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bda50dba",
   "metadata": {},
   "source": [
    "---\n",
    "# Parte B · Traducción secuencia a secuencia con atención\n",
    "\n",
    "## 6. El problema\n",
    "\n",
    "La traducción transforma una secuencia en otra de **distinta longitud y distinto orden**:\n",
    "\n",
    "> *the red car* → *el coche rojo* (el adjetivo pasa detrás del sustantivo)\n",
    "> *he does not eat* → *él no come* (el inglés necesita \"does\", el español no)\n",
    "\n",
    "La arquitectura **codificador-decodificador** (encoder-decoder; Sutskever et al., 2014) lo resuelve así:\n",
    "1. Una RNN **codificadora** lee la frase de origen y la convierte en estados ocultos.\n",
    "2. Una RNN **decodificadora** genera la frase de destino palabra a palabra, y cada paso depende de la palabra anterior.\n",
    "\n",
    "La versión original comprimía toda la frase en **un solo** vector, un cuello de botella para las frases largas. La **atención** (Bahdanau et al., 2014) permite que el decodificador mire hacia atrás a *todos* los estados del codificador en cada paso y elija cuáles importan. Esa idea, llevada al extremo, es el transformer (notebook 07).\n",
    "\n",
    "```\n",
    "           codificador (GRU bidireccional)                decodificador (GRU + atención)\n",
    " the → red → car → <eos>                     <sos> → el → coche → rojo\n",
    "   h1    h2    h3    h4  ─────── atención ─────►  en cada paso: pesos α sobre h1..h4,\n",
    "                                                   contexto = Σ α_i h_i, predice la siguiente palabra\n",
    "```\n",
    "\n",
    "## 7. Un corpus sintético de inglés → español\n",
    "\n",
    "Para entrenar en minutos en una CPU, generamos frases a partir de una pequeña gramática: sujeto + (negación) + verbo + artículo + sustantivo + (adjetivo). Aun así contiene las partes difíciles: la conjugación verbal, la concordancia de género (*rojo/roja*, *el/la*), el cambio de orden del adjetivo y el auxiliar inglés \"do/does\", que desaparece en español."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d6f7e133",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:56.801135Z",
     "iopub.status.busy": "2026-10-16T09:04:56.800866Z",
     "iopub.status.idle": "2026-10-16T09:04:57.011958Z",
     "shell.execute_reply": "2026-10-16T09:04:57.010276Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10080 pares de frases, por ejemplo:\n",
      "  EN: you do not eat a small table \n",
      "  ES: tú no comes una mesa pequeña\n",
      "  EN: you do not want an apple \n",
      "  ES: tú no quieres una manzana\n",
      "  EN: she eats an old apple \n",
      "  ES: ella come una manzana vieja\n",
      "  EN: she needs a red cat \n",
      "  ES: ella necesita un gato rojo\n",
      "  EN: he needs a white dog \n",
      "  ES: él necesita un perro blanco\n",
      "  EN: i do not buy a bread \n",
      "  ES: yo no compro un pan\n"
     ]
    }
   ],
   "source": [
    "subjects = [(\"i\", \"yo\", 0), (\"you\", \"tú\", 1), (\"he\", \"él\", 2), (\"she\", \"ella\", 2), (\"we\", \"nosotros\", 3), (\"they\", \"ellos\", 4)]\n",
    "verbs = {  # base en inglés, 3.ª persona en inglés, conjugaciones en español para yo/tú/él/nosotros/ellos\n",
    "    \"eat\":  (\"eats\",  [\"como\", \"comes\", \"come\", \"comemos\", \"comen\"]),\n",
    "    \"see\":  (\"sees\",  [\"veo\", \"ves\", \"ve\", \"vemos\", \"ven\"]),\n",
    "    \"want\": (\"wants\", [\"quiero\", \"quieres\", \"quiere\", \"queremos\", \"quieren\"]),\n",
    "    \"buy\":  (\"buys\",  [\"compro\", \"compras\", \"compra\", \"compramos\", \"compran\"]),\n",
    "    \"have\": (\"has\",   [\"tengo\", \"tienes\", \"tiene\", \"tenemos\", \"tienen\"]),\n",
    "    \"need\": (\"needs\", [\"necesito\", \"necesitas\", \"necesita\", \"necesitamos\", \"necesitan\"]),\n",
    "}\n",
    "nouns = [(\"apple\", \"manzana\", \"f\"), (\"book\", \"libro\", \"m\"), (\"car\", \"coche\", \"m\"), (\"house\", \"casa\", \"f\"), (\"dog\", \"perro\", \"m\"),\n",
    "         (\"table\", \"mesa\", \"f\"), (\"bread\", \"pan\", \"m\"), (\"letter\", \"carta\", \"f\"), (\"cat\", \"gato\", \"m\"), (\"shirt\", \"camisa\", \"f\")]\n",
    "adjectives = [(\"red\", \"rojo\", \"roja\"), (\"big\", \"grande\", \"grande\"), (\"new\", \"nuevo\", \"nueva\"),\n",
    "              (\"small\", \"pequeño\", \"pequeña\"), (\"old\", \"viejo\", \"vieja\"), (\"white\", \"blanco\", \"blanca\"), (None, None, None)]\n",
    "articles = {\"the\": {\"m\": \"el\", \"f\": \"la\"}, \"a\": {\"m\": \"un\", \"f\": \"una\"}}\n",
    "\n",
    "pairs = []\n",
    "for en_s, es_s, person in subjects:\n",
    "    third = en_s in (\"he\", \"she\")\n",
    "    for v, (v3, conj) in verbs.items():\n",
    "        for neg in (False, True):\n",
    "            for art in articles:\n",
    "                for en_n, es_n, g in nouns:\n",
    "                    for en_a, es_am, es_af in adjectives:\n",
    "                        if neg:\n",
    "                            en_v = (\"does not \" if third else \"do not \") + v\n",
    "                            es_v = \"no \" + conj[person]\n",
    "                        else:\n",
    "                            en_v = v3 if third else v\n",
    "                            es_v = conj[person]\n",
    "                        first = en_a or en_n\n",
    "                        en_art = \"an\" if art == \"a\" and first[0] in \"aeiou\" else art\n",
    "                        en_np = f\"{en_art} {en_a + ' ' if en_a else ''}{en_n}\"\n",
    "                        es_np = f\"{articles[art][g]} {es_n}\" + (f\" {es_am if g == 'm' else es_af}\" if en_a else \"\")\n",
    "                        pairs.append((f\"{en_s} {en_v} {en_np}\", f\"{es_s} {es_v} {es_np}\"))\n",
    "\n",
    "random.seed(0); random.shuffle(pairs)\n",
    "print(len(pairs), \"pares de frases, por ejemplo:\")\n",
    "for p in pairs[:6]:\n",
    "    print(\"  EN:\", p[0], \"\\n  ES:\", p[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "6f27d19f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:57.015251Z",
     "iopub.status.busy": "2026-10-16T09:04:57.014984Z",
     "iopub.status.idle": "2026-10-16T09:04:57.050778Z",
     "shell.execute_reply": "2026-10-16T09:04:57.049191Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "vocabulario de origen: 43 palabras, vocabulario de destino: 65 palabras\n",
      "entrenamiento: 9080 pares, prueba: 1000 pares (frases que el modelo nunca ve)\n"
     ]
    }
   ],
   "source": [
    "class Vocab:\n",
    "    def __init__(self, sentences):\n",
    "        self.itos = [\"<pad>\", \"<sos>\", \"<eos>\"] + sorted({w for s in sentences for w in s.split()})\n",
    "        self.stoi = {w: i for i, w in enumerate(self.itos)}\n",
    "    def encode(self, s):\n",
    "        return [self.stoi[w] for w in s.split()] + [2]\n",
    "    def decode(self, ids):\n",
    "        return \" \".join(self.itos[i] for i in ids if i > 2)\n",
    "\n",
    "src_vocab, tgt_vocab = Vocab([p[0] for p in pairs]), Vocab([p[1] for p in pairs])\n",
    "PAD, SOS, EOS = 0, 1, 2\n",
    "\n",
    "def batchify(pp):\n",
    "    src = [torch.tensor(src_vocab.encode(a)) for a, _ in pp]\n",
    "    tgt = [torch.tensor(tgt_vocab.encode(b)) for _, b in pp]\n",
    "    return (nn.utils.rnn.pad_sequence(src, batch_first=True, padding_value=PAD),\n",
    "            nn.utils.rnn.pad_sequence(tgt, batch_first=True, padding_value=PAD))\n",
    "\n",
    "n_test = 1000\n",
    "train_pairs, test_pairs = pairs[n_test:], pairs[:n_test]\n",
    "print(f\"vocabulario de origen: {len(src_vocab.itos)} palabras, vocabulario de destino: {len(tgt_vocab.itos)} palabras\")\n",
    "print(f\"entrenamiento: {len(train_pairs)} pares, prueba: {len(test_pairs)} pares (frases que el modelo nunca ve)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65762aa7",
   "metadata": {},
   "source": [
    "## 8. El modelo: codificador GRU bidireccional + decodificador con atención\n",
    "\n",
    "En el paso $t$ del decodificador, con estado oculto $s_{t-1}$, la **atención aditiva (de Bahdanau)** puntúa cada estado del codificador $h_i$, normaliza con softmax y construye un vector de contexto:\n",
    "\n",
    "$$ e_{t,i} = v^\\top \\tanh(W_s s_{t-1} + W_h h_i), \\qquad \\alpha_{t,i} = \\text{softmax}_i(e_{t,i}), \\qquad c_t = \\sum_i \\alpha_{t,i} h_i $$\n",
    "\n",
    "Después, el decodificador consume $[\\text{embedding}(y_{t-1}); c_t]$. Tanto el codificador como el decodificador empiezan con una capa `nn.Embedding`: la misma tabla de búsqueda que en la Parte A, pero aquí los vectores se aprenden como subproducto de la traducción en lugar de con un objetivo aparte. Durante el entrenamiento usamos **teacher forcing** (forzado por el profesor): la entrada del decodificador en cada paso es la palabra anterior *real*, no su propia conjetura."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d194c006",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:57.054431Z",
     "iopub.status.busy": "2026-10-16T09:04:57.054162Z",
     "iopub.status.idle": "2026-10-16T09:04:57.095660Z",
     "shell.execute_reply": "2026-10-16T09:04:57.094141Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "parámetros del seq2seq: 440,321\n",
      "salida sin entrenar: necesitas no blanco pequeña camisa blanco pequeña camisa blanco pequeña camisa blanco\n"
     ]
    }
   ],
   "source": [
    "class Encoder(nn.Module):\n",
    "    def __init__(self, vocab, emb=64, hid=128):\n",
    "        super().__init__()\n",
    "        self.emb = nn.Embedding(vocab, emb, padding_idx=PAD)\n",
    "        self.rnn = nn.GRU(emb, hid, batch_first=True, bidirectional=True)\n",
    "        self.bridge = nn.Linear(2 * hid, hid)\n",
    "    def forward(self, src):\n",
    "        out, h = self.rnn(self.emb(src))                             # out: (B, S, 2H)\n",
    "        h0 = torch.tanh(self.bridge(torch.cat([h[0], h[1]], dim=-1)))  # estado inicial del decodificador\n",
    "        return out, h0\n",
    "\n",
    "class AdditiveAttention(nn.Module):\n",
    "    def __init__(self, hid):\n",
    "        super().__init__()\n",
    "        self.Ws, self.Wh, self.v = nn.Linear(hid, hid), nn.Linear(2 * hid, hid), nn.Linear(hid, 1, bias=False)\n",
    "    def forward(self, s, enc_out, mask):\n",
    "        scores = self.v(torch.tanh(self.Ws(s).unsqueeze(1) + self.Wh(enc_out))).squeeze(-1)   # (B, S)\n",
    "        scores = scores.masked_fill(~mask, -1e9)                                              # se ignora el relleno\n",
    "        alpha = scores.softmax(-1)\n",
    "        return (alpha.unsqueeze(-1) * enc_out).sum(1), alpha\n",
    "\n",
    "class Decoder(nn.Module):\n",
    "    def __init__(self, vocab, emb=64, hid=128):\n",
    "        super().__init__()\n",
    "        self.emb = nn.Embedding(vocab, emb, padding_idx=PAD)\n",
    "        self.att = AdditiveAttention(hid)\n",
    "        self.rnn = nn.GRUCell(emb + 2 * hid, hid)\n",
    "        self.out = nn.Linear(hid + 2 * hid + emb, vocab)\n",
    "    def step(self, y_prev, s, enc_out, mask):\n",
    "        e = self.emb(y_prev)\n",
    "        ctx, alpha = self.att(s, enc_out, mask)\n",
    "        s = self.rnn(torch.cat([e, ctx], -1), s)\n",
    "        return self.out(torch.cat([s, ctx, e], -1)), s, alpha\n",
    "\n",
    "class Seq2Seq(nn.Module):\n",
    "    def __init__(self):\n",
    "        super().__init__()\n",
    "        self.enc, self.dec = Encoder(len(src_vocab.itos)), Decoder(len(tgt_vocab.itos))\n",
    "    def forward(self, src, tgt):                       # teacher forcing (forzado por el profesor)\n",
    "        enc_out, s = self.enc(src)\n",
    "        mask = src != PAD\n",
    "        y_prev = torch.full((src.shape[0],), SOS)\n",
    "        logits = []\n",
    "        for t in range(tgt.shape[1]):\n",
    "            lg, s, _ = self.dec.step(y_prev, s, enc_out, mask)\n",
    "            logits.append(lg); y_prev = tgt[:, t]\n",
    "        return torch.stack(logits, 1)\n",
    "    @torch.no_grad()\n",
    "    def translate(self, sentence, max_len=12):\n",
    "        src = torch.tensor([src_vocab.encode(sentence)])\n",
    "        enc_out, s = self.enc(src)\n",
    "        y, out, alphas = torch.tensor([SOS]), [], []\n",
    "        for _ in range(max_len):\n",
    "            lg, s, a = self.dec.step(y, s, enc_out, src != PAD)\n",
    "            y = lg.argmax(-1)                          # decodificación voraz\n",
    "            if y.item() == EOS: break\n",
    "            out.append(y.item()); alphas.append(a[0])\n",
    "        return tgt_vocab.decode(out), torch.stack(alphas) if alphas else None\n",
    "\n",
    "torch.manual_seed(0)\n",
    "s2s = Seq2Seq()\n",
    "print(f\"parámetros del seq2seq: {count_params(s2s):,}\")\n",
    "print(\"salida sin entrenar:\", s2s.translate(\"she does not want the red car\")[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "1536a6c4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:04:57.100119Z",
     "iopub.status.busy": "2026-10-16T09:04:57.099835Z",
     "iopub.status.idle": "2026-10-16T09:06:42.883208Z",
     "shell.execute_reply": "2026-10-16T09:06:42.881758Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "época 1: pérdida 0.0354  (24 s)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "época 2: pérdida 0.0016  (47 s)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "época 3: pérdida 0.0008  (61 s)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "época 4: pérdida 0.0004  (74 s)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "época 5: pérdida 0.0003  (87 s)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "época 6: pérdida 0.0002  (106 s)\n"
     ]
    }
   ],
   "source": [
    "opt = torch.optim.Adam(s2s.parameters(), lr=2e-3)\n",
    "t0, losses = time.time(), []\n",
    "import copy\n",
    "checkpoints, step = {}, 0\n",
    "for epoch in range(6):\n",
    "    random.shuffle(train_pairs)\n",
    "    for i in range(0, len(train_pairs), 64):\n",
    "        src, tgt = batchify(train_pairs[i:i + 64])\n",
    "        logits = s2s(src, tgt)\n",
    "        loss = F.cross_entropy(logits.reshape(-1, logits.shape[-1]), tgt.reshape(-1), ignore_index=PAD)\n",
    "        opt.zero_grad(); loss.backward(); nn.utils.clip_grad_norm_(s2s.parameters(), 1.0); opt.step()\n",
    "        losses.append(loss.item())\n",
    "        step += 1\n",
    "        if step in (40, 80):\n",
    "            checkpoints[step] = copy.deepcopy(s2s.state_dict())   # se guarda para la comparación con búsqueda en haz de la sección 10\n",
    "    print(f\"época {epoch + 1}: pérdida {np.mean(losses[-100:]):.4f}  ({time.time() - t0:.0f} s)\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "5ce88992",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:06:42.887530Z",
     "iopub.status.busy": "2026-10-16T09:06:42.887206Z",
     "iopub.status.idle": "2026-10-16T09:06:48.704700Z",
     "shell.execute_reply": "2026-10-16T09:06:48.703328Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "exactitud de coincidencia exacta en 1000 frases no vistas: 99.9%\n",
      "\n",
      "EN    : you do not eat a small table\n",
      "ES*   : tú no comes una mesa pequeña\n",
      "SALIDA: tú no comes una mesa pequeña  ✓\n",
      "\n",
      "EN    : you do not want an apple\n",
      "ES*   : tú no quieres una manzana\n",
      "SALIDA: tú no quieres una manzana  ✓\n",
      "\n",
      "EN    : she eats an old apple\n",
      "ES*   : ella come una manzana vieja\n",
      "SALIDA: ella come una manzana vieja  ✓\n",
      "\n",
      "EN    : she needs a red cat\n",
      "ES*   : ella necesita un gato rojo\n",
      "SALIDA: ella necesita un gato rojo  ✓\n",
      "\n",
      "EN    : he needs a white dog\n",
      "ES*   : él necesita un perro blanco\n",
      "SALIDA: él necesita un perro blanco  ✓\n",
      "\n",
      "EN    : i do not buy a bread\n",
      "ES*   : yo no compro un pan\n",
      "SALIDA: yo no compro un pan  ✓\n",
      "\n"
     ]
    }
   ],
   "source": [
    "s2s.eval()\n",
    "exact = sum(s2s.translate(a)[0] == b for a, b in test_pairs)\n",
    "print(f\"exactitud de coincidencia exacta en {len(test_pairs)} frases no vistas: {exact / len(test_pairs):.1%}\\n\")\n",
    "for a, b in test_pairs[:6]:\n",
    "    hyp = s2s.translate(a)[0]\n",
    "    print(f\"EN    : {a}\\nES*   : {b}\\nSALIDA: {hyp}  {'✓' if hyp == b else '✗'}\\n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "28089c39",
   "metadata": {},
   "source": [
    "## 9. Visualizar la atención\n",
    "\n",
    "Cada fila muestra qué palabras en inglés miró el decodificador mientras producía esa palabra en español. Busca:\n",
    "* el patrón **cruzado** donde el adjetivo cambia de orden (*red car* → *coche rojo*),\n",
    "* \"no\" atendiendo a \"not\", y el verbo conjugado atendiendo al verbo en inglés,\n",
    "* el pronombre sujeto que a veces atiende a la palabra *contigua* al sujeto en inglés (por ejemplo *ella* → *does*). El codificador es bidireccional, así que cada $h_i$ ya mezcla información de sus vecinas (*does* solo aparece después de *he/she*). Los pesos de atención son una pista útil sobre lo que usa el modelo, no una alineación exacta de palabras."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "11d3f2ce",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:06:48.708277Z",
     "iopub.status.busy": "2026-10-16T09:06:48.707973Z",
     "iopub.status.idle": "2026-10-16T09:06:49.271307Z",
     "shell.execute_reply": "2026-10-16T09:06:49.269476Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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YcOGxosvvmgsWbLEZjsLFy40goODb6i+mjVrGt26dbNOWywW45577jFmzJhhGIZhvP/++0b58uWNnJwc6zqpqamGk5OT8ccffxjHjx83JBlpaWkFbr9FixZG7969beY988wzRrt27azTkoxFixbZrDNq1CijTJkyxtGjR63zli9fbjg7OxtZWVnWeTt27DAkGT///LNhGIbh6elppKSkFOnYly1bZjg5ORmZmZkFLn/uueeMxx9/3GbekCFDjPr161unrzx/R44cMSQZCQkJ1nlr1641JBlHjhwxDMMwkpOTDUnGunXrrOtkZGQYkoz169cXevwFOXbsmCHJ2LZtm2EY/++1NGvWLOs6n332mSHJWLVqlXVeUlKSzWulatWqNv8WDMMwQkNDjX79+hmGYRgvv/yy0bp1a8NisVyznnzh4eHGgAEDbOZFRUUZPXr0sE5f77VXkLfeesu4//77C10+c+ZMw9PT0zh+/HiR6jQMw2jQoIHx7rvvGoZhGAsWLDC8vLyM7OzsIrW98vwXJDw83AgJCbE5d8OGDTNCQkIMwzCMgwcPGs7OzsZ///tfm3aPPfaYMWLECMMwDKNr1642/2YMwzC6dOlieHt7W6d79OhhREVF2axz+f9df/31l1GuXDnjp59+slmnZ8+eRteuXQ3DMIzVq1cbkoyVK1dal6emphqSjPPnzxd6jJefQwAozehvXq0o73PJyck272mjRo0yGjdubJ0u7n7KgAEDjNatW1unly1bZpjNZuPkyZOGYVx6b+zTp49Nmx9++MFwcnKyvh/eaD/mRt6H8+soiCSjb9++NvMefPBB41//+pdhGIbx8ccfG8HBwTbnIjc313BzczOWLVtmGMal16mvr6+Rm5trXSf/9fH222/bbPt6574gUVFRxgsvvGCdnjlzplG1alXra/PK57dOnTrGp59+arONsWPHGs2bN7c57vzPC9f7fAIUJ0b6AQAAAHexVq1aafPmzTaPvn37XrVe5cqVFR8fr5EjR9r8IrYwLVu2lMlkKvBRo0YN7du3Tx9//LHmzp17ze3Mnz//qvry1a9fX9u3b9e6dev0wgsv6OjRo2rfvr169eplXadjx4767bffin5C/n+NGjWy/m0ymVSlShUdPXpU0qXLRTVu3Fju7u7WdcLCwmSxWJSZmakKFSooNjZWkZGRat++vaZOnaoj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fLx1H7Vq1dKqVav0xx9/6OTJk4XWEhERoYYNGyo6OlqbNm3Szz//rJiYGIWHh6tZs2Y6f/684uLilJaWpoMHDyo9PV0bNmwoNEgLDw/Xo48+qqefflorVqyw/kJ86dKlkqRXXnlFq1at0tixY7Vr1y7Nnj1b06ZNs6n9ZpUpU0Yvv/yy1q9fr19++UWxsbF66KGHrvkFSvny5VWxYkW9//772rNnj7777jsNHjz4lmuRLj1Pb7zxhubPn6/MzEwNHz5cmzdv1oABAyRJkydP1meffabffvtNu3bt0hdffKEqVapYL4N1pdatWys1NVWpqan67bff9K9//UunTp26oZoCAwOVlZWlefPmae/evXrnnXe0aNGia7bp2rWrqlSpog4dOig9PV379u3TggULtHbtWus2Fy5cqM2bN2vLli167rnnbH6R/8033+idd97R5s2bdfDgQc2ZM0cWi0XBwcG3dP6zsrI0ePBgZWZm6rPPPtO7775rPbdBQUGKjo5WTEyMFi5cqP379+vnn39WUlKSUlNTJck6knbixInavXu3pk2bZn2d5mvdurU2btyoOXPmaPfu3Ro1apRNCOjp6an4+HgNGjRIs2fP1t69e7Vp0ya9++67mj17dpGOoyjnEABKO/qbtoryPnc9xd1PkWTtT44bN06dOnWyGW03bNgw/fTTT4qLi9PmzZu1e/duff3114qLiyvycV+puN6HJemLL77QRx99pF27dmnUqFH6+eefrbVFR0erUqVKioqK0g8//KD9+/crLS1N/fv31++//37DdV/v3BcmOjpaqamp+uijj64b5o0ePVpJSUl65513tGvXLm3btk3JycmaPHlyodu+1ucToFjZ9Y6CAAAAAArVo0cPQ9JVj+DgYOs6NWvWNKZMmWLT7tNPPzUkGeHh4bettv379xdYmyTjs88+Mwzj0g3rW7VqZVSuXNkoW7asUaNGDSM2NtY4cOCAdTvJycnGjX4sKeiYGzdubIwaNco6vXXrVqNVq1aGq6urUaFCBaN3797GmTNnDMMwjD/++MPo0KGD4efnZ5QtW9aoWbOmMXLkSCMvL8/afvr06Ubt2rWNMmXKGEFBQcacOXNs9rd48WKjbt26houLi1GzZk3DMAxj1KhRRuPGja+q9+DBg8Y///lPw93d3fD09DSeeeYZ448//jAMwzByc3ONZ5991vD39zfKli1rVK1a1YiLizPOnz9f6PEfP37ceP75542KFSsarq6uxr333mt888031uVffvmlUb9+faNMmTJGjRo1jLfeeuu650+SsWjRIut0/vP766+/GoZx6Xny9vY2FixYYNSuXdswm81GRESEcfDgQWubwo5/xYoVRkhIiGE2m41GjRoZaWlpNvu7cl+GYRirV682JBknT560zsuvIV9eXp6RmJhoVKtWzShTpozRuHFj49tvv7Uuf//994377rvPcHd3N7y8vIzHHnvM2LRpU6Hn9cKFC8a//vUvo0KFCsY999xjJCUlGVFRUUaPHj2uee6ufO0NGTLEqFixouHh4WF06dLFmDJlik3dBTlw4IDx9NNPG15eXka5cuWMZs2aGevXr7een1atWhlubm6Gv7+/MW3aNCM8PNwYMGCAYRiG8cMPPxjh4eFG+fLlDTc3N6NRo0bG/Pnzi3z+CxIeHm7069fP6Nu3r+Hl5WWUL1/e+Pe//21YLBab8zVy5EijVq1aRpkyZQw/Pz+jY8eOxtatW63rfPjhh0b16tUNNzc3o3379sbEiROvOhcjR440fH19DW9vb2PQoEFGXFyczf9dFovFePvtt43g4GCjTJkyRuXKlY3IyEhjzZo1hmEU/Fr59ddfDUnG/v37i3QOAaA0o79ZsOu9z13ZL7myH1Tc/ZR8DzzwgCHJ+O67765a9vPPPxuPP/644eHhYbi7uxuNGjUyxo0bZ11elH7MlW7mffhKkoz/+7//Mx5//HHDbDYbtWrVsumrGIZhHDlyxIiJiTEqVapkmM1mo3bt2kbv3r2N06dPG4Zx6XUaFRVl06agPqRhXP/cFyYvL8/w8/MzJBl79+61WVZQP3fu3LnGfffdZ5QtW9YoX7688eijjxoLFy60Oe7L+1vX+nwCFCeTYVxxAX0AAAAAAC6TkpKigQMH3vDINzimli1b6r777tPbb79drNvldQQAQOljMpm0aNEidejQwd6l3DG5ublydXXVihUrFBERYe9yUMpwTz8AAAAAAAAAAIBblJ2drYULF8rJyanYb2MAFAWhHwAAAAAAAAAAwC0aNWqUPv30U73xxhuqXr26vctBKcTlPQEAAAAAAAAAAAAH52TvAgAAAAAAAAAAAADcGkI/AAAAAAAAAAAAwMFxTz8AAADcERaLRYcPH5anp6dMJpO9ywEA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svT0009bv2iqXbv2NY97xIgRGjx4sHU6OzubL54AAECJkpubq/Hjx2vlypVq3ry5pEt9pB9//FEzZ85Unz59rtl+4sSJio2NVb9+/SRJgwcP1rp16zRx4kS1atVKWVlZqlKliiIiIlSmTBnVqFFDDzzwQKHbo/8FAEDpxkg/AACA26xRo0Y2035+fjp69KgyMjLk7+9v80VM/fr15ePjo4yMDEmXvvjp1auXIiIiNGHCBO3du9e6bkZGhsLCwmy2HRYWpt27dysvL++aNZUtW9amroyMDLm4uOjBBx+0zqtYsaKCg4OttfTv31+vv/66wsLCNGrUKG3duvWa+zCbzfLy8rJ5AAAAlCR79uzRuXPn9Pjjj8vDw8P6mDNnjk2/rTCF9efy+1/PPPOMzp8/r9q1a6t3795atGiRLl68WOj26H8BAFC6EfoBAADcZvmX48xnMplksViK1DYxMVE7duzQE088oe+++07169fXokWLbrkmNzc36z3+iqpXr17at2+funfvrm3btqlZs2Z69913b7kWAAAAR5WTkyNJSk1N1ebNm62PnTt33tB9/Qrj7++vzMxMTZ8+XW5uburXr58effRR6+XXAQAALkfoBwAAYCchISE6dOiQDh06ZJ23c+dOnTp1SvXr17fOCwoK0qBBg7R8+XI99dRTSk5OtrZPT0+32WZ6erqCgoLk7Ows6dKIvuuN+svf1sWLF7V+/XrrvOPHjyszM9OmFn9/f/Xt21cLFy7UK6+8og8++ODmDh4AAKAEqF+/vsxms7KyslS3bl2bR1Euq1lYf+7y/pebm5vat2+vd955R2lpaVq7dq22bdtW7McCAAAcH/f0AwAAsJOIiAg1bNhQ0dHRevvtt3Xx4kX169dP4eHhatasmc6fP68hQ4aoU6dOCggI0O+//64NGzbo6aefliS98sorCg0N1dixY9WlSxetXbtW06ZN0/Tp0637qFWrlr7//ns9++yzMpvNqlSpUoG1BAYGKioqSr1799bMmTPl6emp4cOHq1q1aoqKipIkDRw4UG3btlVQUJBOnjyp1atXKyQk5PafKAAAgLuUp6en4uPjNWjQIFksFj388MM6ffq00tPT5eXlpZo1a16z/ZAhQ9S5c2c1adJEERER+s9//qOFCxdq5cqVkqSUlBTl5eXpwQcfVLly5fTJJ5/Izc3tutsFAACl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qJ07d2rt2rVq0KCBvcsBAAAokQ4cOCBnZ2dNmzZN3bt3l4+PjwICAuxdFgAAgMOKj4/XqlWrbqjNkSNH1LZt29tUEQAAKOnuist7Xsv27dvVokULtWrVSn379rV3OQAAACVSQECAli1bJkmKjIy0czUAAACOz8PDw+aqVUVRpUqV21QNAAAoDe76kX733Xefzp07p9TUVO7XBwAAHErLli0VFxenuLg4eXt7q1KlSkpISJBhGJIuXb48Pj5e1apVk7u7ux588EGlpaXZbCMlJUU1atRQuXLl1LFjR02aNEk+Pj7W5bGxserQoYNNm4EDB6ply5bWaYvFoqSkJAUEBMjNzU2NGzfWl19+aV2elpYmk8mkVatWqVmzZipXrpxatGihzMxM6zp79+5VVFSUfH195eHhodDQUK1cufKax5+bm6vs7GybBwAAQEnx/vvvq2rVqrJYLDbzo6Ki9MILLxR4ec9Zs2YpJCRErq6uqlevnqZPn26z/MrLe27btk2tW7eWm5ubKlasqD59+ignJ6fQmuh/AQBQut31oR8AAIAjmz17tlxcXPTzzz9r6tSpmjx5smbNmiVJiouL09q1azVv3jxt3bpVzzzzjNq0aaPdu3dLktavX6+ePXsqLi5OmzdvVqtWrfT666/fcA1JSUmaM2eO3nvvPe3YsUODBg1St27dtGbNGpv1Xn31VU2aNEkbN26Ui4uLXnjhBeuynJwctWvXTqtWrdKvv/6qNm3aqH379srKyrrmfr29va0Pf3//G64dAADgbvXMM8/o+PHjWr16tXXeiRMntHTpUkVHR1+1/ty5czVy5EiNGzdOGRkZGj9+vBISEjR79uwCt3/27FlFRkaqfPny2rBhg7744gutXLlScXFxhdZE/wsAgNLtrr+8JwAAgCPz9/fXlClTZDKZFBwcrG3btmnKlCmKjIxUcnKysrKyVLVqVUmX7vuydOlSJScna/z48Zo6daratGmjoUOHSpKCgoL0008/aenSpUXef25ursaPH6+VK1eqefPmkqTatWvrxx9/1MyZMxUeHm5dd9y4cdbp4cOH64knntBff/0lV1dXNW7cWI0bN7auO3bsWC1atEiLFy8u9IunESNGaPDgwdbp7OxsvngCAAAlRvny5dW2bVt9+umneuyxxyRJX375pSpVqqRWrVrphx9+sFl/1KhRmjRpkp566ilJly6vvnPnTs2cOVM9evS4avuffvqp/vrrL82ZM0fu7u6SpGnTpql9+/Z644035Ovre1Ub+l8AAJRuhH4AAAC30UMPPSSTyWSdbt68uSZNmqRt27YpLy9PQUFBNuvn5uaqYsWKkqSMjAx17NjRZnnz5s1vKPTbs2ePzp07p8cff9xm/oULF9SkSRObeY0aNbL+7efnJ0k6evSoatSooZycHCUmJio1NVVHjhzRxYsXdf78+WuO9DObzTKbzUWuFQAAwNFER0erd+/emj59usxms+bOnatnn31WTk62F9c6e/as9u7dq549e6p3797W+RcvXpS3t3eB287IyFDjxo2tgZ8khYWFyWKxKDMzs8DQj/4XAAClG6EfAACAHeTk5MjZ2Vm//PKLnJ2dbZZ5eHgUeTtOTk7WewTm+/vvv232I0mpqamqVq2azXpXfiFUpkwZ69/5QWX+PWri4+O1YsUKTZw4UXXr1pWbm5s6deqkCxcuFLlWAACAkqZ9+/YyDEOpqakKDQ3VDz/8oClTply1Xn6f7IMPPtCDDz5os+zKviAAAMDNIvQDAAC4jdavX28zvW7dOgUGBqpJkybKy8vT0aNH9cgjjxTYNiQkpMD2l6tcubK2b99uM2/z5s3WAK9+/foym83KysqyuZTnjUpPT1dsbKx15GFOTo4OHDhw09sDAAAoCVxdXfXUU09p7ty52rNnj4KDg9W0adOr1vP19VXVqlW1b9++Au/3V5CQkBClpKTo7Nmz1tF+6enpcnJyUnBwcLEeBwAAKBkI/QAAAG6jrKwsDR48WC+++KI2bdqkd999V5MmTVJQUJCio6MVExOjSZMmqUmTJjp27JhWrVqlRo0a6YknnlD//v0VFhamiRMnKioqSsuWLbvq0p6tW7fWW2+9pTlz5qh58+b65JNPtH37duulOz09PRUfH69BgwbJYrHo4Ycf1unTp5Weni4vL68C7x9TkMDAQC1cuFDt27eXyWRSQkKCdRQgAABAaRYdHa0nn3xSO3bsULdu3Qpdb/To0erfv7+8vb3Vpk0b5ebmauPGjTp58qTNffgu3+6oUaPUo0cPJSYm6tixY3r55ZfVvXv3Ai/tCQAA4HT9VQAAAHCzYmJidP78eT3wwAN66aWXNGDAAPXp00eSlJycrJiYGL3yyisKDg5Whw4dtGHDBtWoUUPSpfsBfvDBB5o6daoaN26s5cuX67XXXrPZfmRkpBISEjR06FCFhobqzJkziomJsVln7NixSkhIUFJSkkJCQtSmTRulpqYqICCgyMcxefJklS9fXi1atFD79u0VGRlZ4K/YAQAASpvWrVurQoUKyszM1HPPPVfoer169dKsWbOUnJyshg0bKjw8XCkpKYX2ycqVK6dly5bpxIkTCg0NVadOnfTYY49p2rRpt+tQAACAgzMZV94EphTJzs6Wt7e3/jxxRF5eXvYuB7jtSvE/91Kr3JP17F2C3ZxPzbR3CbiDsrOz5VvBT6dPn76r3tNbtmyp++67T2+//XaxbTMlJUUDBw7UqVOnim2bdwp9L9zNLAYjV4uL+9P32ruEEiVnwTZ7l1BiOJu4b1pxuVv7Xo4uNzdXrq6uWrFihSIiIoplm/S/gNLBrU2QvUv4/9q787ic0v9/4K+7TYTIHiE+tjLWZDf2nezUtBHJvn9oMIUJWaqpLBkjsg5KWaKQdRBSskz2SUVMSvt639fvD7/uz/QZ8/3MEqf77vV8PO7HY5xz7uZ1rk73fZ3zPtd11ErumcdSRyD6nT/b/+L0nkRERERERERERBLKyMhAUFAQNDQ00LJl+b15k4iIiP4ZFv2IiIiIiIiIiIgk5OLiggMHDsDd3R0NGjSQOg4RERGpKBb9iIiIiD6RixcvlvrPtLe3h729fan/XCIiIiKSjqenJzw9PaWOQURERCpOQ+oARERERERERERERERERPTPsOhHREREREREREREREREpOJY9CMiIiIiIiIiIiIiIiJScSz6EREREREREREREREREak4Fv2IiIiIiIiIiIiIiIiIVByLfkREREREREREREREREQqjkU/IiIiIiIiIiIiIiIiIhXHoh8RERERERERERERERGRimPRj4iIiIiIiIiIiIiIiEjFaUkdQEpCCABAZkamxEmIPo/iY57KkSKF1Akkk5GRIXUE+oyKv8v5OUdEREREREREROVVuS76ZWZ+uED4r8bNJU5CRESlrY5BPakjkAQyMzOhr68vdQwiIiIiIiIiIqLPrlwX/QwNDZGQkIAqVapAJpN91v93RkYGjIyMkJCQgKpVq37W/7fUyuu+l9f9Brjv5XHfy+t+A+V336XebyEEMjMzYWho+Nn/30RERERERERERGVBuS76aWhooEGDBpJmqFq1arm6KPxb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vX79Gps3b4alpSWAD9McDhw4EGFhYTA3Nwfwofjq7e2Nw4cP49KlS9DT05MyMhEREZFKY/+LRT8iIiIiIiJSE1FRUdi8eTNiYmJw6dIltG7dWupIZVqHDh3g5+eHGTNm4M2bN5g0aZJy3YgRIwAAnp6e2LNnD1auXIn169dLFVWlKBQKaGhoIC4uDrq6uujTpw+AD1McTp06FdnZ2Zg/fz5WrVoFAwMDpKSkICwsDK1atZI4OREREZFqYv/rP2RCXSYqJSIiIiIionItNzcXt2/fRuPGjWFkZCR1HJURGxuLUaNGwdDQEH5+fjA1NVWuCw0NxfLly2FqaoodO3agYsWKajP10afWpUsXNGvWDHv37i2x/Ndff8WLFy9w+fJltGzZEm3atEHDhg0lSklERESkPtj/YtGPiIiIiIiIqNyLjY2FnZ0dzM3NMXfu3BKFv/DwcLRo0QKNGjWSMKFqEEJAJpPh9OnT+Pbbb7Fjxw5lW6alpSElJQVRUVElRlUSERER0d/H/ldJLPoREREREREREaKjozF16lR06NABCxYsUD4nkf46e3t7pKen4/Dhw9DW1kZERAR8fHwQFxeHOnXq4MSJE6hcuTJHTRIRERGVEva/PmDRj4iIiIiIiIgAfCj8OTk5oUmTJnBxcUHLli2ljqRyLl26BEtLS1y8eBExMTEICwvDoUOHMG3aNPTt2xcjR46UOiIRERGRWmH/6z+0pA5ARERERERERGVD+/bt4evriyVLlkBfX1/qOCrp4sWLyM/Px1dffYXk5GRMnjwZYWFh6NGjh3Kb4mmoiIiIiOifY//rP1j0IyIiIiIiIiKlTp064cyZM9DV1ZU6isopKipCYmIiWrVqhR49emDZsmXQ19eHTCYrcaGpPFxwIiIiIvoc2P8qidN7EhERERERERGVkvT0dAghlBebFAoFNDQ0pI5FREREpLbY//oPFv2IiIiIiIiIiD6B8jKNFBEREVFZUd77Xyz6EREREREREREREREREam48jm+kYiIiIiIiIiIiIiIiEiNsOhHREREREREREREREREpOJY9CMiIiIiIiIiIiIiIiJScSz6EREREREREREREREREak4Fv2IiIiIiIiIiIiIiIiIVByLfkREREREREREREREREQqjkU/IiIiIiIiIiIiIiIiIhXHoh8RERERERERERERERGRimPRj4iIiIiIiIiIiIiIiEjFsehHREREREREREREREREpOJY9CMiIiIiIiIiIiIiIiJScf8PE5bDVNb24YkAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1800x500 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "examples = [\"she does not want the red car\", \"we buy a small house\", \"they see the old dog\"]\n",
    "fig, axes = plt.subplots(1, 3, figsize=(18, 5))\n",
    "for ax, sent in zip(axes, examples):\n",
    "    out, alpha = s2s.translate(sent)\n",
    "    ax.imshow(alpha.numpy(), cmap=\"Greens\", vmin=0, vmax=1)\n",
    "    ax.set_xticks(range(len(sent.split()) + 1)); ax.set_xticklabels(sent.split() + [\"<eos>\"], rotation=45)\n",
    "    ax.set_yticks(range(len(out.split()))); ax.set_yticklabels(out.split())\n",
    "    ax.set_title(f\"EN → ES: '{out}'\", fontsize=10)\n",
    "plt.tight_layout(); plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1baaa6a2",
   "metadata": {},
   "source": [
    "## 10. Búsqueda en haz: buscar una frase mejor\n",
    "\n",
    "`translate` usa **decodificación voraz** (greedy): en cada paso se compromete con la palabra más probable. Eso no es lo mismo que encontrar la *frase* más probable: una palabra que parece la mejor ahora puede obligar a una continuación mala después.\n",
    "\n",
    "La **búsqueda en haz** (beam search) conserva las $B$ traducciones parciales más probables en cada paso. Cada una se amplía con todas las posibles palabras siguientes, y solo sobreviven las $B$ mejores de todos esos candidatos. Las puntuaciones son sumas de logaritmos de probabilidad, divididas por la longitud para no penalizar injustamente las salidas más largas. Con $B = 1$ se reduce a la decodificación voraz.\n",
    "\n",
    "El efecto se ve mejor en un modelo que todavía duda, así que comparamos ambos decodificadores con puntos de control guardados al principio de la primera época, además de con el modelo final."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "5fec0a77",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-16T09:06:49.274394Z",
     "iopub.status.busy": "2026-10-16T09:06:49.274128Z",
     "iopub.status.idle": "2026-10-16T09:08:40.060801Z",
     "shell.execute_reply": "2026-10-16T09:08:40.059710Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "modelo                    voraz    haz=4   (coincidencia exacta en 1000 frases no vistas)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tras 40 lotes             55.8%    54.2%\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tras 80 lotes             94.8%    94.4%\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "entrenado del todo        99.9%   100.0%\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "tras 40 lotes: la búsqueda en haz arregla 25 frases y estropea 41\n",
      "\n",
      "[arreglada por la búsqueda en haz]\n",
      "EN    : she eats an old apple\n",
      "voraz : ella no come una manzana vieja\n",
      "haz   : ella come una manzana vieja\n",
      "\n",
      "[arreglada por la búsqueda en haz]\n",
      "EN    : she has a big letter\n",
      "voraz : ella come una carta grande\n",
      "haz   : ella tiene una carta grande\n",
      "\n",
      "[estropeada por la búsqueda en haz]\n",
      "EN    : she wants the big cat\n",
      "voraz : ella quiere el gato grande\n",
      "haz   : ella come el gato grande\n",
      "\n",
      "[estropeada por la búsqueda en haz]\n",
      "EN    : i have the small dog\n",
      "voraz : yo tengo el perro pequeño\n",
      "haz   : yo veo el perro pequeño\n"
     ]
    }
   ],
   "source": [
    "@torch.no_grad()\n",
    "def beam_translate(model, sentence, beam=4, max_len=12):\n",
    "    src = torch.tensor([src_vocab.encode(sentence)])\n",
    "    enc_out, s0 = model.enc(src)\n",
    "    mask = src != PAD\n",
    "    beams = [(0.0, [SOS], s0)]                   # (suma de log-probabilidades, tokens, estado del decodificador)\n",
    "    finished = []\n",
    "    for _ in range(max_len):\n",
    "        candidates = []\n",
    "        for score, toks, s in beams:\n",
    "            lg, s_new, _ = model.dec.step(torch.tensor([toks[-1]]), s, enc_out, mask)\n",
    "            logp = lg.log_softmax(-1)[0]\n",
    "            top = logp.topk(beam)\n",
    "            for lp, idx in zip(top.values.tolist(), top.indices.tolist()):\n",
    "                candidates.append((score + lp, toks + [idx], s_new))\n",
    "        candidates.sort(key=lambda c: c[0] / (len(c[1]) - 1), reverse=True)\n",
    "        beams = []\n",
    "        for c in candidates:\n",
    "            (finished if c[1][-1] == EOS else beams).append(c)\n",
    "            if len(beams) == beam:\n",
    "                break\n",
    "        if not beams or len(finished) >= beam:\n",
    "            break\n",
    "    best = max(finished + beams, key=lambda c: c[0] / (len(c[1]) - 1))\n",
    "    return tgt_vocab.decode(best[1][1:])\n",
    "\n",
    "snapshots = {}\n",
    "for k, state in checkpoints.items():\n",
    "    snapshots[f\"tras {k} lotes\"] = Seq2Seq(); snapshots[f\"tras {k} lotes\"].load_state_dict(state); snapshots[f\"tras {k} lotes\"].eval()\n",
    "snapshots[\"entrenado del todo\"] = s2s\n",
    "early = snapshots[\"tras 40 lotes\"]\n",
    "print(f\"{'modelo':22s} {'voraz':>8s} {'haz=4':>8s}   (coincidencia exacta en {len(test_pairs)} frases no vistas)\")\n",
    "for name, m in snapshots.items():\n",
    "    g = np.mean([m.translate(a)[0] == b for a, b in test_pairs])\n",
    "    bs = np.mean([beam_translate(m, a) == b for a, b in test_pairs])\n",
    "    print(f\"{name:22s} {g:8.1%} {bs:8.1%}\")\n",
    "\n",
    "fixed, broken = [], []\n",
    "for a, b in test_pairs:\n",
    "    gr, bm = early.translate(a)[0], beam_translate(early, a)\n",
    "    if gr != b and bm == b: fixed.append((a, gr, bm))\n",
    "    if gr == b and bm != b: broken.append((a, gr, bm))\n",
    "print(f\"\\ntras 40 lotes: la búsqueda en haz arregla {len(fixed)} frases y estropea {len(broken)}\")\n",
    "for title, rows in [(\"arreglada por la búsqueda en haz\", fixed[:2]), (\"estropeada por la búsqueda en haz\", broken[:2])]:\n",
    "    for a, gr, bm in rows:\n",
    "        print(f\"\\n[{title}]\\nEN    : {a}\\nvoraz : {gr}\\nhaz   : {bm}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a21402b",
   "metadata": {},
   "source": [
    "El resultado es instructivo: con el modelo poco entrenado, la búsqueda en haz arregla algunas frases pero estropea todavía más, así que la exactitud global *baja* ligeramente. La búsqueda en haz solo puede encontrar traducciones que el modelo ya puntúa alto. Ayuda cuando el error es un *compromiso prematuro* (la frase correcta tenía una puntuación total mayor que la voraz), y no puede ayudar, o incluso perjudica, cuando las propias probabilidades del modelo están mal, como ocurre al principio del entrenamiento. En los sistemas de traducción reales, donde los modelos son buenos pero no seguros, la búsqueda en haz suele dar una mejora modesta y constante, a cambio de $B$ veces más cálculo por frase. Es lo habitual en traducción y reconocimiento de voz; los modelos de chat suelen *muestrear* en su lugar (notebook 08), porque en el texto abierto la frase más probable tiende a ser sosa y repetitiva.\n",
    "\n",
    "## Resumen\n",
    "\n",
    "| Idea | Qué hace | Dónde sigue viva |\n",
    "|---|---|---|\n",
    "| embeddings de palabras | las palabras se convierten en vectores; uso parecido → vectores cercanos; relaciones → direcciones | la primera capa de todo modelo de lenguaje |\n",
    "| sesgo en los embeddings | los patrones estadísticos del texto se convierten en geometría, incluidos los indeseados | la evaluación de sesgos de los LLM modernos |\n",
    "| codificador-decodificador | leer una entrada completa y después generar una salida de otra longitud | traducción, resumen, reconocimiento de voz |\n",
    "| atención | en cada paso de salida, mirar atrás a cada posición de entrada y elegir lo que importa | **el transformer** (notebook 07) |\n",
    "| búsqueda en haz | buscar una *frase* probable, no una sucesión de palabras probables | decodificadores de traducción y de voz |\n",
    "\n",
    "Los pesos de atención que dibujaste en la sección 9 son la semilla del transformer. El notebook 07 elimina por completo la recurrencia y construye una red **solo** con atención y MLP de propagación hacia adelante.\n",
    "\n",
    "## Ejercicios\n",
    "\n",
    "1. **Embeddings:** cambia el tamaño del embedding a 8 y a 128. ¿Cómo cambian las puntuaciones de las analogías? ¿Y el tamaño de la ventana (1 frente a 5)?\n",
    "2. **Embeddings:** usa solo los vectores centrales, sin centrar (`emb = F.normalize(sg.centre.weight.detach(), dim=1)`). ¿Qué familia de analogías se rompe, y por qué una dirección compartida podría perjudicarla más?\n",
    "3. **Embeddings:** elimina la desviación (usa 0.5 para todas las profesiones en `sentence`) y vuelve a entrenar. ¿Qué le pasa a la gráfica del sesgo?\n",
    "4. **Embeddings:** después de neutralizar, imprime `nearest(\"nurse\", E=emb_db)`. ¿Qué palabras siguen más cerca y qué dice eso del método?\n",
    "5. **Seq2seq:** quita la atención (usa solo el estado final del codificador como contexto). ¿Cuánto baja la exactitud, y recupera algo la búsqueda en haz?\n",
    "6. **Seq2seq:** deja fuera del entrenamiento todas las frases que contengan *\"white cat\"*. ¿Puede el modelo traducir *\"the white cat\"* correctamente (generalización composicional)?"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
