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

Transferência interlíngue via espaço de embeddings multilíngue compartilhado

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

  1. 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.
  2. Médio. Use paraphrase-multilingual-MiniLM-L12-v2 para 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.
  3. 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

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).