Phase 05 - Lesson 11
Traducción Automática
La traducción es la tarea que financió la investigación en PLN durante treinta años y sigue financiándola hoy.
Tipo: Build Lenguajes: Python Prerrequisitos: Fase 5 · 10 (Mecanismo de Atención), Fase 5 · 04 (GloVe, FastText, Subword) Tiempo: ~75 minutos
El Problema
Un modelo lee una oración en un idioma y produce una oración en otro. La longitud varía. El orden de las palabras varía. Algunas palabras de origen mapean a varias palabras de destino y viceversa. Los modismos se resisten al mapeo uno a uno. "I miss you" en francés es "tu me manques" — literalmente "tú me haces falta". Ningún alineamiento a nivel de palabra sobrevive a eso.
La traducción automática es la tarea que obligó al PLN a inventar encoder-decoders, atención, transformers y, finalmente, todo el paradigma de los LLM. Cada paso hacia adelante llegó porque la calidad de la traducción era medible y la brecha entre humano y máquina era obstinada.
Esta lección omite la clase de historia y enseña el pipeline funcional de 2026: encoder-decoder multilingüe preentrenado (NLLB-200 o mBART), tokenización por subpalabras, beam search, evaluación con BLEU y chrF, y el puñado de modos de fallo que aún llegan a producción sin ser detectados.
El Concepto
La MT moderna es un transformer encoder-decoder entrenado con texto paralelo. El encoder lee el origen en la tokenización de su idioma. El decoder genera el destino, una subpalabra a la vez, usando la salida del encoder mediante cross-attention (lección 10). La decodificación usa beam search para evitar la trampa de la decodificación voraz (greedy). La salida se destokeniza, se revierte el truecasing y se puntúa contra una referencia.
Tres decisiones operativas determinan la calidad real de la MT en el mundo real.
- Tokenizador. SentencePiece BPE entrenado sobre un corpus de idiomas mezclados. El vocabulario compartido entre idiomas es lo que habilita los pares zero-shot en NLLB.
- Tamaño del modelo. El NLLB-200 distilled 600M cabe en un laptop. El NLLB-200 3.3B es el valor por defecto de producción publicado. 54.5B es el techo de investigación.
- Decodificación. Ancho de beam de 4-5 para contenido general. Penalización de longitud para evitar salida demasiado corta. Decodificación restringida cuando se necesita consistencia terminológica.
Constrúyelo
Paso 1: una llamada de MT preentrenada
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
model_id = "facebook/nllb-200-distilled-600M"
tok = AutoTokenizer.from_pretrained(model_id, src_lang="eng_Latn")
model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
src = "The cats are running."
inputs = tok(src, return_tensors="pt")
out = model.generate(
**inputs,
forced_bos_token_id=tok.convert_tokens_to_ids("fra_Latn"),
num_beams=5,
length_penalty=1.0,
max_new_tokens=64,
)
print(tok.batch_decode(out, skip_special_tokens=True)[0])
Les chats courent.
Tres cosas importan aquí. src_lang le dice al tokenizador qué script y segmentación aplicar. forced_bos_token_id le dice al decoder qué idioma generar. Ambos son trucos específicos de NLLB; mBART y M2M-100 usan sus propias convenciones y no son intercambiables.
Paso 2: BLEU y chrF
BLEU mide la superposición de n-gramas entre la salida y la referencia. Cuatro tamaños de n-grama de referencia (1-4), media geométrica de las precisiones, penalización por brevedad para salida demasiado corta. La puntuación está en [0, 100]. De uso común. Frustrante de interpretar: 30 BLEU es "utilizable"; 40 es "bueno"; 50 es "excepcional"; las diferencias por debajo de 1 BLEU son ruido.
chrF mide el F-score a nivel de carácter. Más sensible a idiomas morfológicamente ricos donde BLEU subcuenta las coincidencias. A menudo se reporta junto con BLEU.
import sacrebleu
hypotheses = ["Les chats courent."]
references = [["Les chats courent."]]
bleu = sacrebleu.corpus_bleu(hypotheses, references)
chrf = sacrebleu.corpus_chrf(hypotheses, references)
print(f"BLEU: {bleu.score:.1f} chrF: {chrf.score:.1f}")
Siempre usa sacrebleu. Normaliza la tokenización para que las puntuaciones sean comparables entre artículos. Implementar tu propio cálculo de BLEU es como surgen los benchmarks engañosos.
La jerarquía de evaluación de tres niveles (2026)
La evaluación moderna de MT usa tres familias de métricas complementarias. Entrega con al menos dos.
- Heurística (BLEU, chrF). Rápida, basada en referencia, interpretable, insensible a la paráfrasis. Úsala para comparación heredada y detección de regresiones.
- Aprendida (COMET, BLEURT, BERTScore). Modelos neuronales entrenados con juicio humano; comparan la similitud semántica de la traducción con el origen y la referencia. COMET tiene la mayor asociación con la investigación en MT desde 2023 y es el valor por defecto de producción de 2026 donde la calidad importa.
- LLM como juez (sin referencia). Pídele a un modelo grande que puntúe traducciones en fluidez, adecuación, tono y pertinencia cultural. GPT-4 como juez coincide con la concordancia humana ~80% de las veces cuando la rúbrica está bien diseñada. Úsalo para contenido abierto donde no existe referencia.
Stack práctico de 2026: sacrebleu para BLEU y chrF, unbabel-comet para COMET, y un LLM con prompt para la señal final orientada al humano. Calibra cada métrica contra 50-100 ejemplos etiquetados por humanos antes de confiar en ella con datos de producción.
Las métricas sin referencia (COMET-QE, BLEURT-QE, LLM como juez) permiten evaluar traducciones sin una referencia, lo cual importa para pares de idiomas de cola larga donde no existen traducciones de referencia.
Paso 3: qué se rompe en producción
El pipeline funcional de arriba traducirá con fluidez el 80% de las veces y fallará silenciosamente el 20% restante. Modos de fallo nombrados:
- Alucinación. El modelo inventa contenido que no estaba en el origen. Común en vocabulario de dominio desconocido. Síntoma: la salida es fluida pero afirma hechos que el origen no declaró. Mitigación: decodificación restringida en términos de dominio, revisión humana en contenido regulado, monitoreo de salida mucho más larga que la entrada.
- Generación off-target. El modelo traduce al idioma equivocado. NLLB es sorprendentemente propenso a esto en pares de idiomas raros. Mitigación: verifica el
forced_bos_token_idy siempre decodifica con una verificación de modelo de identificación de idioma (language-ID) en la salida. - Deriva terminológica. "Sign up" se convierte en "s'inscrire" en el doc 1 y "créer un compte" en el doc 2. Para texto de UI y cadenas orientadas al usuario, la consistencia importa más que la calidad bruta. Mitigación: decodificación restringida por glosario o diccionario de posedición.
- Discrepancia de formalidad. "tu" vs "vous" del francés, niveles de cortesía del japonés. El modelo elige la forma que fue más común en el entrenamiento. Para contenido orientado al cliente, esto suele estar equivocado. Mitigación: prefijo de prompt con un token de formalidad si el modelo lo soporta, o fine-tune de un modelo pequeño con corpus solo formales.
- Explosión de longitud en entrada corta. Las oraciones de entrada muy cortas a menudo producen traducciones demasiado largas porque la penalización de longitud se desploma por debajo de ~5 tokens de origen. Mitigación: límite máximo de longitud proporcional a la longitud del origen.
Paso 4: fine-tuning para un dominio
Los modelos preentrenados son generalistas. La traducción jurídica, médica o de diálogo de videojuegos se beneficia de forma medible del fine-tuning con datos paralelos de dominio. La receta no es exótica:
from transformers import Trainer, TrainingArguments
from datasets import Dataset
pairs = [
{"src": "The defendant pleaded guilty.", "tgt": "L'accusé a plaidé coupable."},
]
ds = Dataset.from_list(pairs)
def preprocess(ex):
return tok(
ex["src"],
text_target=ex["tgt"],
truncation=True,
max_length=128,
padding="max_length",
)
ds = ds.map(preprocess, remove_columns=["src", "tgt"])
args = TrainingArguments(output_dir="out", per_device_train_batch_size=4, num_train_epochs=3, learning_rate=3e-5)
Trainer(model=model, args=args, train_dataset=ds).train()
Unos pocos miles de ejemplos paralelos de alta calidad superan a unos pocos cientos de miles de ejemplos ruidosos extraídos de la web. La calidad de los datos de entrenamiento es la mayor palanca individual de producción.
Úsalo
El stack de producción de MT en 2026:
| Caso de uso | Punto de partida recomendado |
|---|---|
| Cualquiera-a-cualquiera, 200 idiomas | facebook/nllb-200-distilled-600M (laptop) o nllb-200-3.3B (producción) |
| Centrado en inglés, alta calidad, 50 idiomas | facebook/mbart-large-50-many-to-many-mmt |
| Ejecuciones cortas, inferencia barata, inglés-francés/alemán/español | Modelos Helsinki-NLP / Marian |
| Crítico en latencia, del lado del navegador | Marian cuantizado en ONNX (~50 MB) |
| Calidad máxima, dispuesto a pagar | GPT-4 / Claude / Gemini con prompts de traducción |
Los LLM ahora superan a los modelos de MT especializados en varios pares de idiomas a partir de 2026, particularmente en contenido idiomático y contexto largo. El tradeoff es el costo por token y la latencia. Elige un LLM cuando la longitud de contexto, la consistencia estilística o la adaptación de dominio mediante prompting importen más que el rendimiento (throughput).
Entrégalo
Guarda como outputs/skill-mt-evaluator.md:
---
name: mt-evaluator
description: Evaluate a machine translation output for shipping.
version: 1.0.0
phase: 5
lesson: 11
tags: [nlp, translation, evaluation]
---
Given a source text and a candidate translation, output:
1. Automatic score estimate. BLEU and chrF ranges you would expect. State whether a reference is available.
2. Five-point human-verifiable check list: (a) content preservation (no hallucinations), (b) correct language, (c) register / formality match, (d) terminology consistency with glossary if provided, (e) no truncation or length explosion.
3. One domain-specific issue to probe. E.g., for legal: named entities and statute citations. For medical: drug names and dosages. For UI: placeholder variables `{name}`.
4. Confidence flag. "Ship" / "Ship with review" / "Do not ship". Tie to the severity of issues found in step 2.
Refuse to ship a translation without a language-ID check on output. Refuse to evaluate without a reference unless the user explicitly opts in to reference-free scoring (COMET-QE, BLEURT-QE). Flag any content over 1000 tokens as likely needing chunked translation.
Ejercicios
- Fácil. Traduce un párrafo en inglés de 5 oraciones al francés y de vuelta al inglés usando
nllb-200-distilled-600M. Mide qué tan cerca está el ida y vuelta del original. Deberías ver preservación semántica con deriva en la elección de palabras. - Medio. Implementa una verificación de identificación de idioma (language-ID) en las salidas de traducción usando
fasttext lid.176olangdetect. Intégrala en la llamada de MT para que las generaciones off-target se capturen antes de retornar. - Difícil. Haz fine-tuning de
nllb-200-distilled-600Mcon un corpus de dominio de 5.000 pares de tu elección. Mide el BLEU en un conjunto de validación (held-out) antes y después del fine-tuning. Reporta qué tipos de oraciones mejoraron y cuáles empeoraron.
Términos Clave
| Término | Lo que la gente dice | Lo que realmente significa |
|---|---|---|
| BLEU | Puntuación de traducción | Precisión de n-gramas con penalización por brevedad. [0, 100]. |
| chrF | F-score de carácter | F-score a nivel de carácter. Más sensible para idiomas morfológicamente ricos. |
| NMT | MT Neuronal | Transformer encoder-decoder entrenado con texto paralelo. El valor por defecto de 2017+. |
| NLLB | No Language Left Behind | La familia de modelos de MT de 200 idiomas de Meta. |
| Decodificación restringida | Salida controlada | Forzar tokens o n-gramas específicos a aparecer / no aparecer en la salida. |
| Alucinación | Contenido inventado | Salida del modelo que no está respaldada por el origen. |
Lectura Adicional
- Costa-jussà et al. (2022). No Language Left Behind: Scaling Human-Centered Machine Translation — el artículo de NLLB.
- Post (2018). A Call for Clarity in Reporting BLEU Scores — por qué
sacrebleues la única forma correcta de reportar BLEU. - Popović (2015). chrF: character n-gram F-score for automatic MT evaluation — el artículo de chrF.
- Hugging Face MT guide — guía práctica de fine-tuning.