Phase 05: NLP: Foundations to Advanced

Çok dilli NLP

Bir model, 100+ dil, çoğu için sıfır eğitim verisi. Diller arası transfer 2020'lerin pratik mucizesidir.

Type: Learn

Languages: Python

Prerequisites: Phase 5 · 04 (GloVe, FastText, Subword), Phase 5 · 11 (Machine Translation)

Time: ~45 minutes

Sorun

İngilizce milyarlarca etiketli örneğe sahiptir. Urdu binlerce. Maithili neredeyse hiç bir şey. Küresel bir kitleye hizmet eden herhangi bir pratik NLP sistemi görev-özel eğitim verileri olmayan uzun kuyruğu dillerde çalışmalıdır.

Çok dilli modeller, bir modelin birden fazla dilde aynı anda eğitilmesiyle bunu çözer. Paylaşılan temsil, modelin yüksek kaynaklı dillerde öğrenilen becerileri düşük kaynaklı dillere aktarmasına olanak sağlar. İngilizce duygu analizi modelini ince ayarlayın ve bu, şaşırtıcı derecede iyi duygu tahminlerini Urdu dilinde ortaya çıkarır. Bu sıfır çekimli diller arası transfer ve NLP'nin dünyaya nasıl gönderildiğini yeniden şekillendirdi.

Bu ders, değişimlerin, kanonik modellerin ve ekiplerin çok dilli çalışmaya yeni başlamasını sağlayan tek kararın adını veriyor: transfer için bir kaynak dili seçmek.

Anlaşım

!Cross-lingual transfer via shared multilingual embedding space

Shared vocabulary.Çok dilli modeller tüm hedef dillerden metin üzerine eğitilmiş bir SentencePiece veya WordPiece işaretleyicisini kullanır. Sözlük paylaşılan: aynı alt kelime birimi ilgili diller arasında aynı morfemi temsil eder. anti-İngilizce ve İtalyanca aynı işaret.

Shared representation.Birçok dilde maskeli dil modelleme konusunda önceden eğitilmiş bir transformer, farklı dillerde semantik olarak benzer cümlelerin benzer gizli durumlar ürettiğini öğrenir. mBERT, XLM-R ve NLLB hepsi bunu gösterir.

Zero-shot transfer.Model, bir dilde (genellikle İngilizce) etiketlenmiş verilere dayalı modelde ince ayarlama yapın. Sonuç olarak, modelin desteklediği diğer dillerde çalıştırın. Hedef dili etiketlerine ihtiyaç yoktur. Sonuçlar tipolojik olarak ilişkili dillerde güçlüdür ve uzak dillerde daha zayıfdır.

Few-shot fine-tuning.Hedef dili 100-500 etiketli örnek ekleyin. Düzgünlük sınıflandırma görevleri için İngilizce temel çizginin 95-98%'ine kadar atlar. Bu, çok dilli NLP'de en ekonomik tek kaldıraçtır.

Modeller

ModelYearCoverageNotes
mBERT2018104 languagesTrained on Wikipedia. First practical multilingual LM. Weak on low-resource.
XLM-R2019100 languagesTrained on CommonCrawl (much larger than Wikipedia). Sets the cross-lingual baseline. Base 270M, Large 550M.
XLM-V2023100 languagesXLM-R with 1M-token vocabulary (vs 250k). Better on low-resource.
mT52020101 languagesT5 architecture for multilingual generation.
NLLB-2002022200 languagesMeta's translation model; includes 55 low-resource languages.
BLOOM202246 languages + 13 programmingOpen 176B LLM trained multilingually.
Aya-23202423 languagesCohere's multilingual LLM. Strong on Arabic, Hindi, Swahili.

Kullanımsal durumlara göre seçin. Sınıflama akılda kalmış varsayım olarak XLM-R tabanıyla iyi çalışır. Doğruluk görevleri çevirime göre açık nesil için mT5 veya NLLB gerektirir. Açık bir çok dilli istek kullanan Aya-23 veya Claude ile LLM tarzında iş çiftleri.

Kaynak dili kararı (2026 araştırması)

Çoğu ekip, ince ayarlama kaynağı olarak İngilizce'yi varsayım olarak kullanır.

Dil benzerliği, transfer kalitesini ham korpus boyutundan daha iyi tahmin eder. Slavic hedefleri için, Almanca veya Rusça genellikle İngilizce'yi yener.qWALSDünya Dil Yapıları Atlası özelliklerine dayanan 2026 benzerlik metrikası bunu ölçüyor. LANGRANK(Lin et al., ACL 2019) dil benzerliği, korpus boyutu ve genetik ilişki kombinasyonundan aday kaynak dillerini sıralayan ayrı, daha eski bir yöntemdir.

Uygulanabilir kurallar: Eğer hedef dilizin tipik olarak yakın bir kaynaklı akrabası varsa, önce onu ince ayarlamaya çalışın, sonra İngilizce ince ayarına karşılaştırın.

Yapın

Adım 1: sıfır çekimli diller arası sınıflandırma

pythonfrom 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"]))

Bir model, üç dil, aynı API. NLI'de eğitimli XLM-R verileri entailment hilesi ile sınıflandırmaya iyi aktarır.

Adım 2: Çok Dilli Eklentime Alanı

pythonfrom 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}")

Çevirmeler yerleşim alanında yakındır. Farklı bir İngilizce cümlesi daha da ilerler. Bu, diller arası arama, gruplama ve benzerlik işlevini yapar.

Adım 3: Birkaç atışlı ince ayarlama stratejisi

pythonfrom 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

100-500 hedef dil örneği için, num_train_epochs=5ve learning_rate=2e-5Yüksek öğrenme oranları, çok dilli uyumluğun çökmesine neden olur ve sadece İngilizce bir model elde edilir.

Gerçekten işe yarayan değerlendirme

  • Per-language accuracy on held-out sets.Toplantı uzun kuyruğu saklıyor.
  • Benchmark against monolingual baseline.Yeterince veri olan diller için, sıfırdan eğitilen tek dilli bir model bazen çok dilli olanı yener.
  • Entity-level tests.Çok dilli modeller genellikle Latin'den uzak metinler için zayıf bir işaretlemeye sahiptir.
  • Cross-lingual consistency.İki dilde aynı anlam aynı tahmin oluşturmalı.

Kullan

2026'da:

TaskRecommended
Classification, 100 languagesXLM-R-base (~270M) fine-tuned
Zero-shot text classificationjoeddav/xlm-roberta-large-xnli
Multilingual sentence embeddingssentence-transformers/paraphrase-multilingual-MiniLM-L12-v2
Translation, 200 languagesfacebook/nllb-200-distilled-600M (see lesson 11)
Generative multilingualClaude, GPT-4, Aya-23, mT5-XXL
Low-resource language NLPXLM-V or a domain-specific fine-tune on related high-resource language

Eğer performans önemli ise hedef dilde ince ayarlamalar için her zaman bütçe yapın.

Tokenizasyon vergisi (az kaynaklı diller için ne yanlış gider)

Çok dilli modeller tüm dillerinde tek bir işaretlemeci paylaşırlar. Bu kelime birikimi İngilizce, Fransızca, İspanyolca, Çinli, Almanca tarafından baskın bir corpus üzerinde eğitilir.

  • Fertility tax.Düşük kaynaklı dil metni İngilizce'den çok daha fazla kelime için işaretleme yapar. Bir Hint cümlesi, eşdeğer bir İngilizce cümlesinin 3-5 katına kadar işaretlere ihtiyaç duyabilir. Bu 3-5 kat bağlam pencerenizi, eğitim verimliliğini ve gecikmeyi tüketir.
  • Variant recovery tax.Her yazı tipi hatası, diyakritik varyansı, Unicode normallaşımının eşleşmemesi veya durum değişimi yerleşim alanında soğuk başlangıçla ilişkisiz bir dizige dönüşür.
  • Capacity spillover tax.Vergi 1 ve 2 bağlam pozisyonlarını, katman derinliğini ve yerleştirme boyutlarını tüketir. Gerçek mantık için kalan sistematik olarak aynı modelden yüksek kaynaklı bir dilin aldığından daha küçüktür.

Pratik semptom: modeliniz normalde Hintçe eğitim alır, kayıp eğri doğru görünür, değerleme karmaşıklığı makul görünür ve üretim sonuçları ince yanlışdır. Morfoloji cümle ortasında çökür. Nadir eğrilikler geri kazanılamaz kalır. You cannot data-scale your way out of a broken tokenizer.

Yumuşaklıklar: hedef dili için iyi bir kapsamlılık olan bir tokenizer seçin (XLM-V'nin 1M-token kelime birikimi doğrudan bir düzeltme); eğitimden önce tutulan hedef metin üzerinde tokenleştirme verimliliğini kontrol edin; bayt seviyesindeki geri dönüşü kullanın (SentencePiece byte_fallback=True, GPT-2-style byte-level BPE) için gerçekten uzun kuyruklu senaryolar için hiçbir şey asla OOV değildir.

Gönder

  • Kaydet .outputs/skill-multilingual-picker.md- ...
markdown---
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).

Egzersizler

  1. Easy.İngilizce, Fransızca, Hintçe ve Arapça dillerinde her dilde 10 cümle üzerinde sıfır atış sınıflandırma borusunu çalıştırın. Her birinde doğruluk raporlayın. Güçlü Fransızca, onurlu Hintçe, değişken Arapça görmeniz gerekir.
  2. Medium.Kullanımparaphrase-multilingual-MiniLM-L12-v2İngilizce sorgulama, herhangi bir dilde belgeler almak.
  3. Hard.Bir Hint sınıflandırma görevi için İngilizce kaynak ve Hintçe kaynak ince ayarlamaları karşılaştırın. Her iki rejimde birkaç atış ince ayarlama için 500 hedef dil örneğini kullanın. Hangi kaynak daha iyi Hintçe doğruluğu ürettiğini ve ne kadar rapor edin.

Anahtar Terimler

TermWhat people sayWhat it actually means
Multilingual modelOne model, many languagesShared vocabulary and parameters across languages.
Cross-lingual transferTrain on one language, run on anotherFine-tune on source, evaluate on target without target-language labels.
Zero-shotNo target-language labelsTransfer without fine-tuning on the target language.
Few-shotSmall target labels100-500 target-language examples used for fine-tuning.
mBERTFirst multilingual LM104-language BERT pretrained on Wikipedia.
XLM-RStandard cross-lingual baseline100-language RoBERTa pretrained on CommonCrawl.
NLLBMeta's 200-language MTNo Language Left Behind. Includes 55 low-resource languages.

Daha Fazla Okumak

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.