多语言 NLP


文档摘要

多语言 NLP 本节摘要:一个模型、一百多种语言、其中多数零训练数据——跨语言迁移是 2020 年代实用的奇迹。英语有数十亿标注样本,乌尔都语只有几千,米提利语几乎没有。任何服务全球受众的实用 NLP 系统都必须在「没有任务特定训练数据」的长尾语言上工作。多语言模型通过同时在许多语言上训一个模型来解决:共享表示让模型把高资源语种学到的技能迁移到低资源语种。在英语情感分析上微调一下,它对乌尔都语的情感预测开箱就出奇地好——这就是零样本跨语言迁移,重塑了 NLP 走向世界的方式。本节点明取舍、列经典模型(mBERT、XLM-R、XLM-V、mT5、NLLB-200、BLOOM、Aya-23),并讲透那个让新团队栽跟头的决定:如何为迁移选源语言——以及为何默认选英语常常是错的。

多语言 NLP

本节摘要:一个模型、一百多种语言、其中多数零训练数据——跨语言迁移是 2020 年代实用的奇迹。英语有数十亿标注样本,乌尔都语只有几千,米提利语几乎没有。任何服务全球受众的实用 NLP 系统都必须在「没有任务特定训练数据」的长尾语言上工作。多语言模型通过同时在许多语言上训一个模型来解决:共享表示让模型把高资源语种学到的技能迁移到低资源语种。在英语情感分析上微调一下,它对乌尔都语的情感预测开箱就出奇地好——这就是零样本跨语言迁移,重塑了 NLP 走向世界的方式。本节点明取舍、列经典模型(mBERT、XLM-R、XLM-V、mT5、NLLB-200、BLOOM、Aya-23),并讲透那个让新团队栽跟头的决定:如何为迁移选源语言——以及为何默认选英语常常是错的。最后揭示低资源语言上「分词税」(生育税、变体恢复税、容量外溢税)如何让模型静悄悄变差,以及为何你无法靠堆数据走出一个坏分词器。

对应原课程:Phase 5 · Lesson 18 · multilingual-nlp(原英文 phases/05-nlp-foundations-to-advanced/18-multilingual-nlp/docs/en.md)。前置依赖:第 04 节(GloVe、FastText、子词)、第 11 节(机器翻译)。

学习目标

阅读完本节,你应当能够:

  1. 说清零样本跨语言迁移的机理:共享词表 + 共享表示如何让英语微调泛化到乌尔都语。
  2. 在分类、生成、翻译任务上选出正确的多语言基座模型(XLM-R、mT5、NLLB、Aya-23)。
  3. 解释为何默认用英语做源语言常是错的,以及如何用 LANGRANK/qWALS 选更好的源。
  4. 识别低资源语言上的分词税(生育、变体恢复、容量外溢),并用字节级回退缓解。

一、问题与直觉

英语有数十亿标注样本。乌尔都语有几千。米提利语几乎没有。任何服务全球受众的实用 NLP 系统,都必须在任务特定训练数据不存在的语言长尾上工作。

多语言模型通过同时在许多语言上训一个模型来解决。共享表示让模型把高资源语种学到的技能迁移到低资源语种。在英语情感分析上微调一下,它对乌尔都语的情感预测开箱就出奇地好。这就是零样本跨语言迁移,它重塑了 NLP 走向世界的方式。

三大支柱:

  • 共享词表:多语言模型用一种在所有目标语言文本上训的 SentencePiece 或 WordPiece 分词器。词表是共享的——同一子词单元在不同但相关的语言里代表同一语素。英语和意大利语的 anti- 拿到同一个 token。
  • 共享表示:一个在许多语言上做掩码语言建模预训练的 Transformer 学到,不同语言里语义相近的句子产生相近的隐状态。mBERT、XLM-R、NLLB 都展现这一点。英语「cat」的嵌入簇聚在法语的「chat」、西班牙语的「gato」附近,整句嵌入同理。
  • 零样本迁移:在一个语言(通常英语)的标注数据上微调模型;推理时,跑它支持的任何其他语言。无需目标语种标签。对类型学相近的语言效果强,对相远的弱。
  • 少样本微调:在目标语种加 100500 条标注样本。准确率跳到英语基线的 9598%(分类任务)。这是多语言 NLP 里性价比最高的单一杠杆。

二、从零实现

第 1 步:零样本跨语言分类

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

一个模型、三种语言、同一个 API。XLM-R 在 NLI 数据上训过,通过蕴含把戏迁移到分类。

第 2 步:多语言嵌入空间

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

互译句在嵌入空间里落得近,不同的英语句子落得远。这就是跨语言检索、聚类、相似性能工作的原因。

第 3 步:少样本微调策略

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

对 100~500 条目标语种样本,num_train_epochs=5learning_rate=2e-5 是安全默认。学习率过高会让多语言对齐坍缩,你最终得到一个「英语专用」模型。

三、框架对比

经典模型谱系

模型 年份 覆盖 备注
mBERT 2018 104 语言 在维基百科上训。第一个实用多语言 LM,低资源上弱。
XLM-R 2019 100 语言 在 CommonCrawl 上训(比维基大得多)。跨语言基线。Base 270M、Large 550M。
XLM-V 2023 100 语言 XLM-R 配 100 万 token 词表(原 25 万)。低资源更好。
mT5 2020 101 语言 多语言生成的 T5 架构。
NLLB-200 2022 200 语言 Meta 翻译模型,含 55 种低资源。
BLOOM 2022 46 语言 + 13 编程 开源 176B 多语言 LLM。
Aya-23 2024 23 语言 Cohere 多语言 LLM,阿拉伯、印地、斯瓦希里上强。

按用例选。分类用 XLM-R-base 是稳妥默认;生成任务按「翻译还是开放生成」选 mT5 或 NLLB;LLM 风格的工作配 Aya-23 或用显式多语言提示的 Claude。

源语言决定(2026 研究)

多数团队默认用英语做微调源。2026 研究常常证明这是错的

语言相似性比原始语料规模更能预测迁移质量。对斯拉夫语目标,德语或俄语常常胜过英语;对印度语目标,印地语常常胜过英语。qWALS 相似度度量(2026,基于世界语言结构图谱特征)量化了这一点。LANGRANK(Lin 等,ACL 2019)是另一个更早的方法,从语言相似性、语料规模、谱系关联的组合里给候选源语种排名。

💡 实用规则:如果你的目标语种有一个类型学相近的高资源亲戚,先试在它上面微调,再和英语微调对比。

真正有效的评估

  • 按语种的留出准确率,而非聚合。聚合数字藏住长尾。
  • 与单语基线对标:数据够的语种,从零训的单语模型有时胜过多语言模型。要测。
  • 实体级测试:目标语种的命名实体。多语言模型对远离拉丁字母的文字常常分词很弱。
  • 跨语言一致性:两种语言里同义的输入应当给出相同预测,测这个差距。

四、可复用产物

保存为 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).

五、练习

  1. 基础:在英语、法语、印地语、阿拉伯语各 10 句上跑零样本分类流水线,报告各自准确率。应看到法语强、印地语尚可、阿拉伯语不稳。
  2. 进阶:用 paraphrase-multilingual-MiniLM-L12-v2 在一个混合语种小语料上搭跨语言检索器。用英语查询,检索任意语种文档,测 recall@5。
  3. 挑战:对一个印地语分类任务,对比英语源与印地语源微调。两种体制下都用 500 条目标语种样本做少样本微调,报告哪种源产出更好的印地语准确率、好多少。这就是 LANGRANK 论点的微缩版。

本节要点回顾

  1. 跨语言迁移是实用奇迹:在英语微调,开箱跑百种语言,重塑了 NLP 走向世界的方式。
  2. 三大支柱:共享词表(同语素同 token)、共享表示(同义句隐状态近)、零样本推理。
  3. 少样本微调性价比最高:100500 条目标语种样本把分类准确率拉到英语基线的 9598%。
  4. learning_rate=2e-5 是安全默认:过高会让多语言对齐坍缩,得到英语专用模型。
  5. 默认选英语常是错的:相似性比规模更能预测迁移,斯拉夫语选俄语/德语、印度语选印地语常更好。
  6. XLM-R 是跨语言基线:100 语言 CommonCrawl 预训练,Base 270M/Large 550M。
  7. NLLB-200 含 55 种低资源语言,是 200 语言翻译的首选。
  8. 聚合指标藏长尾:必须做按语种的留出评估,而非一个总数。
  9. 分词税静悄悄伤低资源:生育税(每词更多 token)、变体恢复税(错字成冷启动)、容量外溢税(留给推理的容量更小)。
  10. 无法靠堆数据走出坏分词器:用 XLM-V 大词表或字节级回退(byte_fallback=True/byte-level BPE),训前先验目标文上的生育。

下一节,我们钻进「分词税」的根——进入「子词分词」,看 BPE、WordPiece、Unigram、SentencePiece 如何决定一个 token 边界,以及生育与覆盖率为何决定一切。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U