机器翻译


文档摘要

机器翻译 本节摘要:翻译这项任务,养了 NLP 研究三十年,现在还在养。模型读一句语言 A,产出一句语言 B。长度变、词序变、一词对多词、习语拒绝一一对应——"I miss you" 译成法语是 "tu me manques",字面是「你对我来说是缺失的」,词级对齐全垮。机器翻译是逼着 NLP 发明编码器-解码器、注意力、Transformer、乃至整个 LLM 范式的那项任务,每一步前进都因为翻译质量可测、而人机差距顽固。本节跳过历史课,直教 2026 年的工作流水线:预训练多语言编码器-解码器(NLLB-200 或 mBART)、子词分词、束搜索、BLEU 与 chrF 评估,以及那几个仍会悄悄混进生产的失败模式。 对应原课程:Phase 5 · Lesson 11 · (原英文 )。

机器翻译

本节摘要:翻译这项任务,养了 NLP 研究三十年,现在还在养。模型读一句语言 A,产出一句语言 B。长度变、词序变、一词对多词、习语拒绝一一对应——"I miss you" 译成法语是 "tu me manques",字面是「你对我来说是缺失的」,词级对齐全垮。机器翻译是逼着 NLP 发明编码器-解码器、注意力、Transformer、乃至整个 LLM 范式的那项任务,每一步前进都因为翻译质量可测、而人机差距顽固。本节跳过历史课,直教 2026 年的工作流水线:预训练多语言编码器-解码器(NLLB-200 或 mBART)、子词分词、束搜索、BLEU 与 chrF 评估,以及那几个仍会悄悄混进生产的失败模式。

对应原课程:Phase 5 · Lesson 11 · machine-translation(原英文 phases/05-nlp-foundations-to-advanced/11-machine-translation/docs/en.md)。前置依赖:第 10 节(注意力机制)、第 04 节(GloVe、FastText、子词)。

学习目标

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

  1. 说清现代机器翻译流水线的四段(分词→编码→带交叉注意力的解码→去分词)与三大运营抉择。
  2. NLLB-200 跑一次预训练翻译,并用 sacrebleu 算 BLEU 与 chrF。
  3. 区分 2026 年的三层评估体系(启发式 BLEU/chrF、学习式 COMET、LLM 评判),知道各自适用场景。
  4. 识别生产 MT 的五大失败(幻觉、脱靶语言、术语漂移、敬语错配、短输入长度爆炸)及缓解手段。

一、问题与直觉

模型读一句语言 A,产出一句语言 B。长度变,词序变,有的源词映到多个目标词,反之亦然。习语拒绝一一对应——"I miss you" 译成法语是 "tu me manques",字面是「你对我来说是缺失的」,任何词级对齐都活不下来。

机器翻译是逼着 NLP 发明编码器-解码器、注意力、Transformer、乃至整个 LLM 范式的那项任务。每一步前进都因为翻译质量可测,而人机差距顽固。

现代机器翻译是 Transformer 编码器-解码器,在平行文本上训练。编码器用源语言的分词读入,解码器借助交叉注意力(第 10 节)用编码器输出,逐子词生成目标。解码用束搜索避开贪心陷阱,输出再去分词、去真大小写,对照参考打分。

驱动真实质量的三大运营抉择:

  • 分词器:在混合语言语料上训的 SentencePiece BPE。跨语言共享词表,正是 NLLB 零样本语对的基础。
  • 模型大小:NLLB-200 蒸馏 6 亿笔记本能跑,3.3B 是已发表的生产默认,54.5B 是研究天花板。
  • 解码:通用内容束宽 4~5,长度惩罚防过短,需要术语一致时上受约束解码。

二、从零实现

第 1 步:一次预训练 MT 调用

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM model_id = "facebook/nllb-200-distilled-600M" tok = AutoTokenizer.from_pretrained(model_id, src_lang="eng_Latn") model = AutoModelForSeq2SeqLM.from_pretrained(model_id) src = "The cats are running." inputs = tok(src, return_tensors="pt") out = model.generate( **inputs, forced_bos_token_id=tok.convert_tokens_to_ids("fra_Latn"), num_beams=5, length_penalty=1.0, max_new_tokens=64, ) print(tok.batch_decode(out, skip_special_tokens=True)[0])
Les chats courent.

三处要紧。src_lang 告诉分词器用哪套文字与切分;forced_bos_token_id 告诉解码器生成哪种语言。两者都是 NLLB 专属技巧,mBART 和 M2M-100 各有约定,不通用。

第 2 步:BLEU 与 chrF

BLEU 测输出与参考的 n-gram 重叠:四个参考 n-gram 尺寸(1~4),精度的几何均值,过短的简洁惩罚。分数在 [0, 100]。常用,但难解读:30 BLEU「可用」,40「好」,50「出色」,1 BLEU 以内的差距是噪声。

chrF 测字符级 F 分数,对形态丰富语言更敏感(BLEU 在那里少算匹配),常与 BLEU 并报。

import sacrebleu hypotheses = ["Les chats courent."] references = [["Les chats courent."]] bleu = sacrebleu.corpus_bleu(hypotheses, references) chrf = sacrebleu.corpus_chrf(hypotheses, references) print(f"BLEU: {bleu.score:.1f} chrF: {chrf.score:.1f}")

永远用 sacrebleu,它归一化分词让分数跨论文可比。自己滚 BLEU,就是误导性基准的由来。

三层评估体系(2026)

现代机器翻译评估用三族互补指标,至少上两族。

  • 启发式(BLEU、chrF):快、基于参考、可解读、对改写不敏感。用于遗留对比与回归检测。
  • 学习式(COMET、BLEURT、BERTScore):在人类判断上训的神经模型,比较译文与源、与参考的语义相似度。COMET 自 2023 起与机器翻译研究相关性最高,是 2026 质量要紧处的生产默认。
  • LLM 评判(无参考):提示大模型从流畅度、充分性、语气、文化适切度打分。设计良好的评分细则下,GPT-4 评判约 80% 与人一致。用于无参考的开放内容。

💡 2026 实战栈:sacrebleu 出 BLEU 和 chrF,unbabel-comet 出 COMET,提示的 LLM 出最终面向人的信号。每个指标在信任生产数据前,都用 50~100 个人工标注样本校准。

无参考指标(COMET-QE、BLEURT-QE、LLM 评判)让你在没有参考时评估翻译,这对长尾语对要紧——那里根本没有参考译文。

第 3 步:生产里什么会坏

上面这条流水线 80% 的时候译得流畅,剩下 20% 静默失败。已命名失败模式:

  • 幻觉:模型编造源里没有的内容,在不熟领域词汇上常见。症状:输出流畅却断言源里没说的事实。缓解:对领域术语上受约束解码,合规内容人工复核,监控输出远长于输入的情况。
  • 脱靶生成:模型译成了错的语言。NLLB 在罕见语对上出人意料地易犯。缓解:核实 forced_bos_token_id,并在输出上恒用语言识别模型检查。
  • 术语漂移:"Sign up" 在文档 1 译成 "s'inscrire"、文档 2 译成 "créer un compte"。对 UI 文本和面向用户的串,一致性比原始质量更要紧。缓解:术语表受约束解码或后编辑字典。
  • 敬语错配:法语 "tu" vs "vous"、日语敬语等级。模型挑训练里更常见的那种,对面向客户的内容通常错。缓解:模型支持时用敬语 token 前缀提示,或在纯正式语料上微调小模型。
  • 短输入长度爆炸:极短输入常产出过长译文,因为长度惩罚在源 token 约 5 以下断崖式失效。缓解:与源长度成比例的硬最大长度上限。

第 4 步:面向领域微调

预训练模型是通才。法律、医学、游戏对话翻译,在领域平行数据上微调可测地受益。配方并不花哨:

from transformers import Trainer, TrainingArguments from datasets import Dataset pairs = [ {"src": "The defendant pleaded guilty.", "tgt": "L'accusé a plaidé coupable."}, ] ds = Dataset.from_list(pairs) def preprocess(ex): return tok( ex["src"], text_target=ex["tgt"], truncation=True, max_length=128, padding="max_length", ) ds = ds.map(preprocess, remove_columns=["src", "tgt"]) args = TrainingArguments(output_dir="out", per_device_train_batch_size=4, num_train_epochs=3, learning_rate=3e-5) Trainer(model=model, args=args, train_dataset=ds).train()

几千条高质量平行样本胜过几十万条噪声网抓样本。训练数据质量是最大的生产杠杆。

三、框架对比

2026 年机器翻译的生产栈:

用例 推荐起点
任意到任意,200 语言 facebook/nllb-200-distilled-600M(笔记本)或 nllb-200-3.3B(生产)
英语为中心,高质量,50 语言 facebook/mbart-large-50-many-to-many-mmt
短跑、推理便宜,英-法/德/西 Helsinki-NLP / Marian 模型
延迟敏感的浏览器端 ONNX 量化的 Marian(约 50 MB)
最高质量,愿意付费 GPT-4 / Claude / Gemini 配翻译提示

截至 2026,LLM 在若干语对上已超越专用 MT 模型,尤以习语内容和长上下文为甚。代价是每 token 成本与延迟。当上下文长度、风格一致或提示式领域适配比吞吐更要紧时,选 LLM。

四、可复用产物

保存为 outputs/skill-mt-evaluator.md:

--- name: mt-evaluator description: Evaluate a machine translation output for shipping. version: 1.0.0 phase: 5 lesson: 11 tags: [nlp, translation, evaluation] --- Given a source text and a candidate translation, output: 1. Automatic score estimate. BLEU and chrF ranges you would expect. State whether a reference is available. 2. Five-point human-verifiable check list: (a) content preservation (no hallucinations), (b) correct language, (c) register / formality match, (d) terminology consistency with glossary if provided, (e) no truncation or length explosion. 3. One domain-specific issue to probe. E.g., for legal: named entities and statute citations. For medical: drug names and dosages. For UI: placeholder variables `{name}`. 4. Confidence flag. "Ship" / "Ship with review" / "Do not ship". Tie to the severity of issues found in step 2. Refuse to ship a translation without a language-ID check on output. Refuse to evaluate without a reference unless the user explicitly opts in to reference-free scoring (COMET-QE, BLEURT-QE). Flag any content over 1000 tokens as likely needing chunked translation.

五、练习

  1. 基础:用 nllb-200-distilled-600M 把一段 5 句英文译成法语再译回英文,测往返与原文的接近度。应看到语义保留、用词漂移。
  2. 进阶:用 fasttext lid.176langdetect 对翻译输出做语言识别,集成进 MT 调用,在返回前抓住脱靶生成。
  3. 挑战:在 5000 对的自选领域语料上微调 nllb-200-distilled-600M,测微调前后留出集的 BLEU,报告哪些句子变好、哪些退步。

本节要点回顾

  1. 翻译养了 NLP 三十年:习语拒绝一一对应,词级对齐全垮,逼出编码器-解码器/注意力/Transformer/LLM。
  2. 2026 流水线四段:SentencePiece 分词→编码→交叉注意力束搜索解码→去分词。
  3. 三大运营抉择:分词器(共享词表)、模型大小(6 亿54.5B)、解码(束宽 45+长度惩罚)。
  4. NLLB 的 src_langforced_bos_token_id 是 NLLB 专属,与 mBART/M2M-100 不通用。
  5. BLEU 是 n-gram 精度几何均值+简洁惩罚,30 可用、40 好、50 出色、1 内是噪声。
  6. chrF 字符级 F 分数对形态丰富语言更敏感,常与 BLEU 并报。
  7. 永远用 sacrebleu,它归一化分词让分数跨论文可比。
  8. 三层评估:启发式(BLEU/chrF)、学习式(COMET,2026 生产默认)、LLM 评判(无参考)。
  9. 五大生产失败:幻觉、脱靶语言、术语漂移、敬语错配、短输入长度爆炸,各有缓解。
  10. 几千高质量样本胜过几十万噪声网抓,数据质量是最大生产杠杆。

下一节,我们把「变长到变长」用到压缩上——进入「文本摘要」,看抽取式与生成式如何取舍、ROUGE 怎么算。


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