Phase 05 - Lesson 18
NLP Multilingüe
Un modelo, más de 100 idiomas, cero datos de entrenamiento para la mayoría de ellos. La transferencia entre idiomas es el milagro práctico de la década de 2020.
Tipo: Aprender Lenguajes: Python Requisitos previos: Fase 5 · 04 (GloVe, FastText, Subword), Fase 5 · 11 (Traducción Automática) Tiempo: ~45 minutos
El Problema
El inglés tiene miles de millones de ejemplos etiquetados. El urdu tiene miles. El maithili casi ninguno. Cualquier sistema práctico de NLP que sirva a una audiencia global tiene que funcionar en la cola larga de idiomas donde no existen datos de entrenamiento específicos para la tarea.
Los modelos multilingües resuelven esto entrenando un solo modelo en muchos idiomas simultáneamente. La representación compartida permite que el modelo transfiera habilidades aprendidas en idiomas con muchos recursos a idiomas con pocos recursos. Haz el fine-tuning del modelo en análisis de sentimiento en inglés y produce predicciones de sentimiento sorprendentemente buenas en urdu sin ninguna adaptación. Eso es transferencia entre idiomas zero-shot, y ha reconfigurado la forma en que el NLP llega al mundo.
Esta lección nombra las concesiones, los modelos canónicos y la única decisión que confunde a los equipos nuevos en el trabajo multilingüe: elegir un idioma de origen para la transferencia.
El Concepto
Vocabulario compartido. Los modelos multilingües usan un tokenizador SentencePiece o WordPiece entrenado en texto de todos los idiomas de destino. El vocabulario es compartido: la misma unidad de subpalabra representa el mismo morfema en idiomas relacionados. anti- en inglés y en italiano recibe el mismo token.
Representación compartida. Un transformer preentrenado en modelado de lenguaje enmascarado en muchos idiomas aprende que las oraciones semánticamente similares en idiomas diferentes producen estados ocultos similares. mBERT, XLM-R y NLLB exhiben esto. Los embeddings de "cat" en inglés se agrupan cerca de "chat" en francés y "gato" en español, y lo mismo ocurre con los embeddings de oraciones completas.
Transferencia zero-shot. Haz el fine-tuning del modelo en datos etiquetados en un idioma (normalmente inglés). En la inferencia, ejecútalo en cualquier otro idioma que el modelo admita. No se necesitan etiquetas en el idioma de destino. Los resultados son sólidos para idiomas tipológicamente relacionados y más débiles para los distantes.
Fine-tuning few-shot. Agrega de 100 a 500 ejemplos etiquetados en el idioma de destino. La precisión salta al 95-98% de la línea base en inglés en tareas de clasificación. Esta es la palanca más rentable del NLP multilingüe.
Los modelos
| Modelo | Año | Cobertura | Notas |
|---|---|---|---|
| mBERT | 2018 | 104 idiomas | Entrenado en Wikipedia. Primer LM multilingüe práctico. Débil en idiomas con pocos recursos. |
| XLM-R | 2019 | 100 idiomas | Entrenado en CommonCrawl (mucho más grande que Wikipedia). Define la línea base entre idiomas. Base 270M, Large 550M. |
| XLM-V | 2023 | 100 idiomas | XLM-R con vocabulario de 1M de tokens (vs 250k). Mejor en idiomas con pocos recursos. |
| mT5 | 2020 | 101 idiomas | Arquitectura T5 para generación multilingüe. |
| NLLB-200 | 2022 | 200 idiomas | Modelo de traducción de Meta; incluye 55 idiomas con pocos recursos. |
| BLOOM | 2022 | 46 idiomas + 13 de programación | LLM abierto de 176B entrenado de forma multilingüe. |
| Aya-23 | 2024 | 23 idiomas | LLM multilingüe de Cohere. Fuerte en árabe, hindi y suajili. |
Elige según el caso de uso. La clasificación funciona bien con XLM-R-base como opción predeterminada sensata. Las tareas de generación piden mT5 o NLLB según se trate de traducción o generación abierta. El trabajo al estilo de LLM combina con Aya-23 o Claude usando prompting multilingüe explícito.
La decisión del idioma de origen (investigación de 2026)
La mayoría de los equipos asumen el inglés como fuente del fine-tuning por defecto. Investigaciones recientes (2026) muestran que esto suele estar equivocado.
La similitud entre idiomas predice la calidad de la transferencia mejor que el tamaño bruto del corpus. Para objetivos eslavos, el alemán o el ruso a menudo superan al inglés. Para objetivos índicos, el hindi a menudo supera al inglés. La métrica de similitud qWALS (2026, basada en las características del World Atlas of Language Structures) cuantifica esto. LANGRANK (Lin et al., ACL 2019) es un método separado y anterior que clasifica los idiomas de origen candidatos a partir de una combinación de similitud lingüística, tamaño del corpus y parentesco genético.
Regla práctica: si tu idioma de destino tiene un pariente tipológicamente cercano con muchos recursos, prueba primero el fine-tuning en ese y luego compáralo con el fine-tuning en inglés.
Constrúyelo
Paso 1: clasificación entre idiomas zero-shot
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
tok = AutoTokenizer.from_pretrained("joeddav/xlm-roberta-large-xnli")
model = AutoModelForSequenceClassification.from_pretrained("joeddav/xlm-roberta-large-xnli")
def classify(text, candidate_labels, hypothesis_template="This text is about {}."):
scores = {}
for label in candidate_labels:
hypothesis = hypothesis_template.format(label)
inputs = tok(text, hypothesis, return_tensors="pt", truncation=True)
with torch.no_grad():
logits = model(**inputs).logits[0]
entail_score = torch.softmax(logits, dim=-1)[2].item()
scores[label] = entail_score
return dict(sorted(scores.items(), key=lambda x: -x[1]))
print(classify("I love this product!", ["positive", "negative", "neutral"]))
print(classify("मुझे यह उत्पाद पसंद है!", ["positive", "negative", "neutral"]))
print(classify("J'adore ce produit !", ["positive", "negative", "neutral"]))
Un modelo, tres idiomas, la misma API. XLM-R entrenado en datos de NLI transfiere bien a la clasificación mediante el truco de la implicación (entailment).
Paso 2: espacio de embeddings multilingüe
from sentence_transformers import SentenceTransformer
import numpy as np
model = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
pairs = [
("The cat is sleeping.", "Le chat dort."),
("The cat is sleeping.", "El gato está durmiendo."),
("The cat is sleeping.", "Die Katze schläft."),
("The cat is sleeping.", "The dog is barking."),
]
for eng, other in pairs:
emb_eng = model.encode([eng], normalize_embeddings=True)[0]
emb_other = model.encode([other], normalize_embeddings=True)[0]
sim = float(np.dot(emb_eng, emb_other))
print(f" {eng!r} <-> {other!r}: cos={sim:.3f}")
Las traducciones quedan cerca en el espacio de embeddings. Una oración distinta en inglés queda más lejos. Esto es lo que hace que la recuperación, el agrupamiento y la similitud entre idiomas funcionen.
Paso 3: estrategia de fine-tuning few-shot
from transformers import TrainingArguments, Trainer
from datasets import Dataset
def few_shot_finetune(base_model, base_tokenizer, examples):
ds = Dataset.from_list(examples)
def tokenize_fn(ex):
out = base_tokenizer(ex["text"], truncation=True, max_length=128)
out["labels"] = ex["label"]
return out
ds = ds.map(tokenize_fn)
args = TrainingArguments(
output_dir="out",
per_device_train_batch_size=8,
num_train_epochs=5,
learning_rate=2e-5,
save_strategy="no",
)
trainer = Trainer(model=base_model, args=args, train_dataset=ds)
trainer.train()
return base_model
Para 100-500 ejemplos en el idioma de destino, num_train_epochs=5 y learning_rate=2e-5 son los valores predeterminados seguros. Tasas de aprendizaje más altas hacen que la alineación multilingüe colapse y terminas con un modelo solo en inglés.
Evaluación que realmente funciona
- Precisión por idioma en conjuntos reservados. No agregada. El agregado oculta la cola larga.
- Comparación con una línea base monolingüe. Para idiomas con suficientes datos, un modelo monolingüe entrenado desde cero a veces supera al multilingüe. Pruébalo.
- Pruebas a nivel de entidad. Entidades nombradas en el idioma de destino. Los modelos multilingües suelen tener una tokenización débil para escrituras alejadas del latino.
- Consistencia entre idiomas. El mismo significado en dos idiomas debe producir la misma predicción. Mide la diferencia.
Úsalo
El stack de 2026:
| Tarea | Recomendado |
|---|---|
| Clasificación, 100 idiomas | XLM-R-base (~270M) con fine-tuning |
| Clasificación de texto zero-shot | joeddav/xlm-roberta-large-xnli |
| Embeddings de oraciones multilingües | sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 |
| Traducción, 200 idiomas | facebook/nllb-200-distilled-600M (ver lección 11) |
| Generativo multilingüe | Claude, GPT-4, Aya-23, mT5-XXL |
| NLP de idiomas con pocos recursos | XLM-V o un fine-tune específico de dominio en un idioma relacionado con muchos recursos |
Siempre reserva presupuesto para el fine-tuning en el idioma de destino si el rendimiento importa. Zero-shot es un punto de partida, no una respuesta final.
El impuesto de la tokenización (lo que sale mal en idiomas con pocos recursos)
Los modelos multilingües comparten un solo tokenizador entre todos sus idiomas. Ese vocabulario se entrena en un corpus dominado por inglés, francés, español, chino y alemán. Para cualquier idioma fuera del conjunto dominante, tres impuestos se acumulan silenciosamente:
- Impuesto de fertilidad. El texto en un idioma con pocos recursos se tokeniza en muchos más tokens por palabra que el inglés. Una oración en hindi puede necesitar de 3 a 5 veces los tokens de una oración equivalente en inglés. Ese factor de 3-5x consume tu ventana de contexto, la eficiencia del entrenamiento y la latencia.
- Impuesto de recuperación de variantes. Cada error tipográfico, variante de diacrítico, discrepancia de normalización Unicode o variación de mayúsculas se convierte en una secuencia sin relación y de arranque en frío en el espacio de embeddings. El modelo no puede aprender correspondencias ortográficas que un hablante nativo da por obvias.
- Impuesto de desbordamiento de capacidad. Los impuestos 1 y 2 consumen posiciones de contexto, profundidad de capas y dimensiones de embedding. Lo que queda para el razonamiento real es sistemáticamente menor que lo que un idioma con muchos recursos obtiene del mismo modelo.
El síntoma práctico: tu modelo entrena con normalidad en hindi, la curva de pérdida se ve correcta, la perplejidad de evaluación se ve razonable y las salidas en producción están sutilmente equivocadas. La morfología colapsa a mitad de la oración. Las flexiones raras quedan irrecuperables. No puedes escalar datos para salir de un tokenizador roto.
Mitigaciones: elige un tokenizador con buena cobertura para tu idioma de destino (el vocabulario de 1M de tokens de XLM-V es una corrección directa); verifica la fertilidad de tokenización en texto de destino reservado antes de entrenar; usa fallback a nivel de byte (SentencePiece byte_fallback=True, BPE a nivel de byte al estilo GPT-2) para escrituras verdaderamente de cola larga, de modo que nada quede nunca como OOV.
Entrégalo
Guárdalo como outputs/skill-multilingual-picker.md:
---
name: multilingual-picker
description: Pick source language, target model, and evaluation plan for a multilingual NLP task.
version: 1.0.0
phase: 5
lesson: 18
tags: [nlp, multilingual, cross-lingual]
---
Given requirements (target languages, task type, available labeled data per language), output:
1. Source language for fine-tuning. Default English; check LANGRANK or qWALS if target language has a typologically close high-resource language.
2. Base model. XLM-R (classification), mT5 (generation), NLLB (translation), Aya-23 (generative LLM).
3. Few-shot budget. Start with 100-500 target-language examples if available. Zero-shot only if labeling is infeasible.
4. Evaluation plan. Per-language accuracy (not aggregate), cross-lingual consistency, entity-level F1 on non-Latin scripts.
Refuse to ship a multilingual model without per-language evaluation — aggregate metrics hide long-tail failures. Flag scripts with low tokenization coverage (Amharic, Tigrinya, many African languages) as needing a model with byte-fallback (SentencePiece with byte_fallback=True, or byte-level tokenizer like GPT-2).
Ejercicios
- Fácil. Ejecuta el pipeline de clasificación zero-shot en 10 oraciones por idioma entre inglés, francés, hindi y árabe. Reporta la precisión en cada uno. Deberías ver un francés sólido, un hindi decente y un árabe variable.
- Medio. Usa
paraphrase-multilingual-MiniLM-L12-v2para construir un recuperador entre idiomas sobre un pequeño corpus de idiomas mixtos. Consulta en inglés, recupera documentos en cualquier idioma. Mide el recall@5. - Difícil. Compara el fine-tuning con origen en inglés y con origen en hindi para una tarea de clasificación en hindi. Usa 500 ejemplos en el idioma de destino para el fine-tuning few-shot en ambos regímenes. Reporta qué origen produce mejor precisión en hindi y por cuánto. Esta es la tesis de LANGRANK en miniatura.
Términos clave
| Término | Lo que dice la gente | Lo que realmente significa |
|---|---|---|
| Modelo multilingüe | Un modelo, muchos idiomas | Vocabulario y parámetros compartidos entre idiomas. |
| Transferencia entre idiomas | Entrenar en un idioma, ejecutar en otro | Hacer fine-tuning en el origen, evaluar en el destino sin etiquetas en el idioma de destino. |
| Zero-shot | Sin etiquetas en el idioma de destino | Transferencia sin fine-tuning en el idioma de destino. |
| Few-shot | Pocas etiquetas en el destino | 100-500 ejemplos en el idioma de destino usados para fine-tuning. |
| mBERT | Primer LM multilingüe | BERT de 104 idiomas preentrenado en Wikipedia. |
| XLM-R | Línea base entre idiomas estándar | RoBERTa de 100 idiomas preentrenado en CommonCrawl. |
| NLLB | MT de 200 idiomas de Meta | No Language Left Behind. Incluye 55 idiomas con pocos recursos. |
Lecturas Adicionales
- Conneau et al. (2019). Unsupervised Cross-lingual Representation Learning at Scale — el artículo de XLM-R.
- Pires, Schlinger, Garrette (2019). How Multilingual is Multilingual BERT? — el artículo de análisis que inició la línea de investigación sobre transferencia entre idiomas.
- Costa-jussà et al. (2022). No Language Left Behind — el artículo de NLLB-200.
- Üstün et al. (2024). Aya Model: An Instruction Finetuned Open-Access Multilingual Language Model — Aya, el LLM multilingüe de Cohere.
- Language Similarity Predicts Cross-Lingual Transfer Learning Performance (2026) — el artículo sobre idioma de origen qWALS / LANGRANK.