Phase 05 - Lesson 18
NLP Multilíngue
Um modelo, mais de 100 idiomas, zero dados de treino para a maioria deles. A transferência interlíngue é o milagre prático da década de 2020.
Tipo: Aprender Linguagens: Python Pré-requisitos: Fase 5 · 04 (GloVe, FastText, Subword), Fase 5 · 11 (Tradução Automática) Tempo: ~45 minutos
O Problema
O inglês tem bilhões de exemplos rotulados. O urdu tem milhares. O maithili quase nenhum. Qualquer sistema prático de NLP que atenda a um público global precisa funcionar na cauda longa de idiomas em que não existem dados de treino específicos para a tarefa.
Os modelos multilíngues resolvem isso treinando um único modelo em muitos idiomas simultaneamente. A representação compartilhada permite que o modelo transfira habilidades aprendidas em idiomas com muitos recursos para idiomas com poucos recursos. Faça o fine-tuning do modelo em análise de sentimento em inglês, e ele produz previsões de sentimento surpreendentemente boas em urdu sem nenhuma adaptação. Isso é transferência interlíngue zero-shot, e remodelou a forma como o NLP chega ao mundo.
Esta lição nomeia os tradeoffs, os modelos canônicos e a única decisão que confunde equipes novas em trabalho multilíngue: escolher um idioma de origem para a transferência.
O Conceito
Vocabulário compartilhado. Os modelos multilíngues usam um tokenizador SentencePiece ou WordPiece treinado em texto de todos os idiomas-alvo. O vocabulário é compartilhado: a mesma unidade de subpalavra representa o mesmo morfema em idiomas relacionados. anti- em inglês e em italiano recebe o mesmo token.
Representação compartilhada. Um transformer pré-treinado em modelagem de linguagem mascarada em muitos idiomas aprende que sentenças semanticamente similares em idiomas diferentes produzem estados ocultos similares. mBERT, XLM-R e NLLB exibem isso. Os embeddings de "cat" em inglês se agrupam perto de "chat" em francês e "gato" em espanhol, assim como os embeddings de sentenças completas.
Transferência zero-shot. Faça o fine-tuning do modelo em dados rotulados em um idioma (geralmente inglês). Na inferência, execute-o em qualquer outro idioma que o modelo suporte. Nenhum rótulo no idioma-alvo é necessário. Os resultados são fortes para idiomas tipologicamente relacionados e mais fracos para os distantes.
Fine-tuning few-shot. Adicione de 100 a 500 exemplos rotulados no idioma-alvo. A acurácia salta para 95-98% da linha de base em inglês em tarefas de classificação. Esta é a alavanca de melhor custo-benefício em NLP multilíngue.
Os modelos
| Modelo | Ano | Cobertura | Notas |
|---|---|---|---|
| mBERT | 2018 | 104 idiomas | Treinado na Wikipédia. Primeiro LM multilíngue prático. Fraco em idiomas com poucos recursos. |
| XLM-R | 2019 | 100 idiomas | Treinado no CommonCrawl (muito maior que a Wikipédia). Define a linha de base interlíngue. Base 270M, Large 550M. |
| XLM-V | 2023 | 100 idiomas | XLM-R com vocabulário de 1M de tokens (vs 250k). Melhor em idiomas com poucos recursos. |
| mT5 | 2020 | 101 idiomas | Arquitetura T5 para geração multilíngue. |
| NLLB-200 | 2022 | 200 idiomas | Modelo de tradução da Meta; inclui 55 idiomas com poucos recursos. |
| BLOOM | 2022 | 46 idiomas + 13 de programação | LLM aberto de 176B treinado de forma multilíngue. |
| Aya-23 | 2024 | 23 idiomas | LLM multilíngue da Cohere. Forte em árabe, hindi e suaíli. |
Escolha pelo caso de uso. A classificação funciona bem com o XLM-R-base como padrão sensato. Tarefas de geração pedem mT5 ou NLLB, dependendo de tradução vs geração aberta. Trabalho no estilo de LLM combina com Aya-23 ou Claude usando prompting multilíngue explícito.
A decisão do idioma de origem (pesquisa de 2026)
A maioria das equipes assume o inglês como fonte do fine-tuning por padrão. Pesquisas recentes (2026) mostram que isso costuma estar errado.
A similaridade entre idiomas prevê a qualidade da transferência melhor do que o tamanho bruto do corpus. Para alvos eslavos, alemão ou russo costumam superar o inglês. Para alvos índicos, o hindi costuma superar o inglês. A métrica de similaridade qWALS (2026, baseada nas características do World Atlas of Language Structures) quantifica isso. O LANGRANK (Lin et al., ACL 2019) é um método separado e anterior que classifica idiomas de origem candidatos a partir de uma combinação de similaridade linguística, tamanho do corpus e parentesco genético.
Regra prática: se o seu idioma-alvo tiver um parente tipologicamente próximo com muitos recursos, tente fazer o fine-tuning nesse primeiro e depois compare com o fine-tuning em inglês.
Construa
Passo 1: classificação interlíngue 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"]))
Um modelo, três idiomas, a mesma API. O XLM-R treinado em dados de NLI transfere bem para a classificação por meio do truque de entailment.
Passo 2: espaço de embeddings multilíngue
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}")
As traduções caem perto no espaço de embeddings. Uma sentença em inglês diferente cai mais longe. É isso que faz a recuperação, o agrupamento e a similaridade interlíngues funcionarem.
Passo 3: estratégia 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 exemplos no idioma-alvo, num_train_epochs=5 e learning_rate=2e-5 são os padrões seguros. Taxas de aprendizado mais altas fazem o alinhamento multilíngue colapsar e você acaba com um modelo só de inglês.
Avaliação que realmente funciona
- Acurácia por idioma em conjuntos de validação. Não agregada. O agregado esconde a cauda longa.
- Comparação com uma linha de base monolíngue. Para idiomas com dados suficientes, um modelo monolíngue treinado do zero às vezes supera o multilíngue. Teste.
- Testes em nível de entidade. Entidades nomeadas no idioma-alvo. Modelos multilíngues costumam ter tokenização fraca para escritas distantes do latino.
- Consistência interlíngue. O mesmo significado em dois idiomas deve produzir a mesma previsão. Meça a diferença.
Use
A stack de 2026:
| Tarefa | Recomendado |
|---|---|
| Classificação, 100 idiomas | XLM-R-base (~270M) com fine-tuning |
| Classificação de texto zero-shot | joeddav/xlm-roberta-large-xnli |
| Embeddings de sentenças multilíngues | sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 |
| Tradução, 200 idiomas | facebook/nllb-200-distilled-600M (ver lição 11) |
| Generativo multilíngue | Claude, GPT-4, Aya-23, mT5-XXL |
| NLP de idiomas com poucos recursos | XLM-V ou um fine-tune específico de domínio em idioma relacionado com muitos recursos |
Sempre reserve orçamento para fine-tuning no idioma-alvo se o desempenho importa. Zero-shot é um ponto de partida, não uma resposta final.
O imposto da tokenização (o que dá errado em idiomas com poucos recursos)
Os modelos multilíngues compartilham um único tokenizador entre todos os seus idiomas. Esse vocabulário é treinado em um corpus dominado por inglês, francês, espanhol, chinês e alemão. Para qualquer idioma fora do conjunto dominante, três impostos se acumulam silenciosamente:
- Imposto de fertilidade. O texto em idioma com poucos recursos é tokenizado em muito mais tokens por palavra do que o inglês. Uma sentença em hindi pode precisar de 3-5x os tokens de uma sentença equivalente em inglês. Esse 3-5x consome sua janela de contexto, eficiência de treino e latência.
- Imposto de recuperação de variantes. Cada erro de digitação, variante de diacrítico, divergência de normalização Unicode ou variação de caixa vira uma sequência sem relação e de partida fria no espaço de embeddings. O modelo não consegue aprender correspondências ortográficas que um falante nativo considera óbvias.
- Imposto de transbordamento de capacidade. Os impostos 1 e 2 consomem posições de contexto, profundidade de camadas e dimensões de embedding. O que resta para o raciocínio real é sistematicamente menor do que o que um idioma com muitos recursos obtém do mesmo modelo.
O sintoma prático: seu modelo treina normalmente em hindi, a curva de perda parece correta, a perplexidade de avaliação parece razoável, e as saídas em produção estão sutilmente erradas. A morfologia colapsa no meio da sentença. Flexões raras permanecem irrecuperáveis. Você não consegue escalar dados para sair de um tokenizador quebrado.
Mitigações: escolha um tokenizador com boa cobertura para o seu idioma-alvo (o vocabulário de 1M de tokens do XLM-V é uma correção direta); verifique a fertilidade da tokenização em texto-alvo de validação antes de treinar; use fallback em nível de byte (SentencePiece byte_fallback=True, BPE em nível de byte no estilo GPT-2) para escritas verdadeiramente de cauda longa, de modo que nada seja jamais OOV.
Entregue
Salve 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).
Exercícios
- Fácil. Execute o pipeline de classificação zero-shot em 10 sentenças por idioma entre inglês, francês, hindi e árabe. Relate a acurácia em cada um. Você deve ver um francês forte, um hindi razoável e um árabe variável.
- Médio. Use
paraphrase-multilingual-MiniLM-L12-v2para construir um recuperador interlíngue sobre um pequeno corpus de idiomas mistos. Consulte em inglês, recupere documentos em qualquer idioma. Meça o recall@5. - Difícil. Compare o fine-tuning com origem em inglês e com origem em hindi para uma tarefa de classificação em hindi. Use 500 exemplos no idioma-alvo para o fine-tuning few-shot em ambos os regimes. Relate qual origem produz melhor acurácia em hindi e por quanto. Essa é a tese do LANGRANK em miniatura.
Termos-chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| Modelo multilíngue | Um modelo, muitos idiomas | Vocabulário e parâmetros compartilhados entre idiomas. |
| Transferência interlíngue | Treinar em um idioma, executar em outro | Fazer fine-tuning na origem, avaliar no alvo sem rótulos no idioma-alvo. |
| Zero-shot | Nenhum rótulo no idioma-alvo | Transferência sem fine-tuning no idioma-alvo. |
| Few-shot | Poucos rótulos no alvo | 100-500 exemplos no idioma-alvo usados para fine-tuning. |
| mBERT | Primeiro LM multilíngue | BERT de 104 idiomas pré-treinado na Wikipédia. |
| XLM-R | Linha de base interlíngue padrão | RoBERTa de 100 idiomas pré-treinado no CommonCrawl. |
| NLLB | MT de 200 idiomas da Meta | No Language Left Behind. Inclui 55 idiomas com poucos recursos. |
Leitura Complementar
- Conneau et al. (2019). Unsupervised Cross-lingual Representation Learning at Scale — o artigo do XLM-R.
- Pires, Schlinger, Garrette (2019). How Multilingual is Multilingual BERT? — o artigo de análise que iniciou a linha de pesquisa sobre transferência interlíngue.
- Costa-jussà et al. (2022). No Language Left Behind — o artigo do NLLB-200.
- Üstün et al. (2024). Aya Model: An Instruction Finetuned Open-Access Multilingual Language Model — Aya, o LLM multilíngue da Cohere.
- Language Similarity Predicts Cross-Lingual Transfer Learning Performance (2026) — o artigo sobre idioma de origem qWALS / LANGRANK.