机器翻译与文本摘要实战:Seq2Seq 的两大经典任务

· 约 7 分钟 ·
本文目录(10 节)

机器翻译和文本摘要是 Seq2Seq(序列到序列)的两大原型任务:输入一段文本,输出另一段文本。今天它们被 LLM 冲击得最厉害——「直接问 GPT 不就行了」——但理解这两个任务的专门技术仍然有价值:评估方法、任务特性、以及在特定约束下(成本、隐私、术语一致性)专用方案依然是更优解。

这篇按「翻译」和「摘要」两条线讲:技术演进只留主干,重点放在评估的坑和落地选型。

前置阅读:建议先读 Transformer 详解、NLP 综合指南。

机器翻译:四十年三代范式

规则时代(1950s-1980s):语言学家手写转换规则,词典 + 语法树。能演示不能商用——语言的例外比规则多。

统计时代(1990s-2013):从平行语料学概率模型。「我」对齐到「I/me」,短语表 + 调序模型,Google Translate 第一代的内核。核心概念词对齐(alignment)值得知道——它是注意力机制的前身。

神经时代(2014 至今):Seq2Seq + 注意力 → Transformer → 预训练大模型。一句话概括演进动力:上下文看得越来越远。RNN 编码器把整句压成一个向量(瓶颈);注意力让解码时每步回看源句(解决瓶颈);Transformer 全注意力;LLM 直接用超长上下文。

今天怎么做翻译

from transformers import pipeline

# 专用模型:Helsinki-NLP 的 MarianMT,小快专
translator = pipeline("translation_zh_to_en",
                      model="Helsinki-NLP/opus-mt-zh-en")
print(translator("人工智能正在改变世界")[0]["translation_text"])

选型决策:

场景方案
通用、量大、成本敏感专用小模型(MarianMT/NLLB)自部署
质量优先、有术语要求商业 API(DeepL/谷歌)+ 术语表
垂直领域、风格特殊LLM + few-shot 示例(术语和风格都能通过示例注入)
数据涉密不出内网开源模型私有化(NLLB、Qwen)

术语一致性是企业翻译的头号痛点:同一个产品名在一百页文档里要译成同一个词。方案按强度:prompt 里塞术语表 → 术语约束解码(constrained decoding,强制输出包含指定译文)→ 翻译记忆库(TM,历史翻译的句对检索复用)。

BLEU:用最广泛,被误解最深

BLEU 是翻译评估的标准指标:n-gram 精确率的加权几何平均 + 短句惩罚。直觉:译文的 n-gram 有多少出现在参考译文里。

from sacrebleu import corpus_bleu

hyp = ["the cat is on the mat"]
ref = [["the cat sits on the mat"]]
print(corpus_bleu(hyp, ref).score)   # 语料级 BLEU

三个必须知道的坑:

  1. 单句 BLEU 不可信。BLEU 设计为语料级指标(上千句平均),单句得分波动巨大——评估实验至少几百句。
  2. 分词影响结果。不同分词器的 BLEU 差好几个点,论文对比必须用 sacrebleu 统一(内部固定分词),否则数字不可比。
  3. 高 BLEU ≠ 好翻译。流畅但忠实的改写(换同义词)会被 BLEU 惩罚;死译硬贴参考译文反而得分高。所以有了 COMET(神经网络评估,学人类打分)和 chrF(字符级,对形态丰富的语言友好)作为补充。LLM 时代新招:直接用 GPT-4 当裁判打分,和人类判断相关性已超传统指标。

文本摘要:抽取式 vs 生成式

抽取式(Extractive):从原文选若干句子拼成摘要。优点:不会编造(句子都是原文的);缺点:生硬、句子间不连贯、无法压缩信息密度。BERTSUM 时代的技术,今天主要用于「关键句高亮」辅助阅读。

生成式(Abstractive):模型自己组织语言重写。优点:流畅、可压缩;缺点:幻觉——摘要里有原文没有的事实。

from transformers import pipeline

# PEGASUS:专为摘要预训练的模型(预训练任务就是「遮住关键句去重建」)
summarizer = pipeline("summarization", model="google/pegasus-xsum")
text = "(一篇 500 字的新闻稿……)"
print(summarizer(text, max_length=60, min_length=20)[0]["summary_text"])

生成式摘要的幻觉率是落地第一关。缓解手段:

  • 约束解码:要求摘要的实体(人名/数字/日期)必须出现在原文中——后处理校验比解码时约束实现简单。
  • 事实一致性评估:用 NLI 模型判断摘要每句是否被原文蕴含(entailment),不蕴含的标红。
  • LLM 方案:在提示中要求仅使用原文信息,并保留可追溯的来源片段。生成后逐项核对数字、日期和实体;模型自检可以辅助筛查,但不能代替与原文比对。要报告错误率,需要固定数据集、错误定义和人工复核流程。

摘要的评估:ROUGE

ROUGE 和 BLEU 对偶:BLEU 看精确率(译文有多少对),ROUGE 看召回率(参考摘要的内容被覆盖多少)。常用 ROUGE-1/2/L(unigram、bigram、最长公共子序列)。坑和 BLEU 同款:语料级使用、对「换说法」不友好。实践中 ROUGE 过筛 + 人工/LLM 评估定案。

LLM 时代这两个任务还剩什么

坦诚地说:通用翻译和通用摘要,LLM 已经碾压专用模型。专用方案剩下的阵地:

  1. 成本:日译百万条商品标题,专用小模型 GPU 自部署成本是 LLM API 的 1/50。
  2. 延迟与吞吐:实时字幕翻译要求 <200ms,7B 以上模型做不到。
  3. 术语/风格强约束:法律、医疗的术语一致性要求 100%,需要约束解码或后校验的工程化管道——LLM 也要包这层。
  4. 隐私:数据不出域。

所以今天的架构通常是:LLM 兜底质量,专用模型扛量,术语管道保证一致性。评估侧则彻底被 LLM 改造——「GPT-4 当裁判」已成论文和产品的标配(要验证裁判本身的偏差:偏爱长答案、偏爱自己的输出风格)。

踩坑排查

现象原因解法
BLEU 分数和别人论文对不上分词器不同换 sacrebleu 统一计算
摘要编造原文没有的数字生成式幻觉实体校验后处理 + NLI 一致性过滤
翻译漏译长句后半段输入超长被截断检查 max_length;长文分段+保持上下文
同一术语多种译法无术语约束术语表 prompt + 后处理替换表
摘要就是原文首句新闻语料的 lead bias模型没学到东西,检查训练数据分布
长文档摘要顾头不顾尾位置衰减分段摘要再聚合(map-reduce)

练习

  1. 用 Helsinki-NLP 模型翻译 50 句中英文本,分别用 sacrebleu 和 COMET 评估,对比两个指标的排序一致性。
  2. 用 PEGASUS 对 20 篇新闻做摘要,人工标注幻觉(每篇有几处原文没有的事实),统计幻觉类型分布。
  3. 实现一个简单的抽取式摘要 baseline:TextRank(句子间相似度构图 → PageRank 取 top-3 句),和生成式摘要做人工盲评对比。
  4. 构建术语约束管道:给定 20 个术语对照表,让翻译输出强制使用表内译法(后处理替换版即可),对比约束前后的术语一致率。

面试常问

Q:Seq2Seq 的瓶颈问题是什么,注意力怎么解决的? 原始 Seq2Seq 把整个源句压缩成一个定长向量——长句信息被挤爆,且解码每步只能用这一个向量。注意力让解码器每步对源句所有位置的隐状态加权求和(权重 = 当前解码状态与各位置的匹配度)——信息瓶颈解除,对齐可解释。这就是 Transformer 的自注意力前身。

Q:BLEU 和 ROUGE 的设计差异为什么对应翻译和摘要? 翻译追求「不多不少」——精确率主导(译文说的都得对),多译译错都是罪过,所以 BLEU 用精确率。摘要追求「覆盖要点」——召回率主导(参考摘要的要点别漏),措辞自由,所以 ROUGE 用召回。指标设计 = 任务价值观的数学化。

Q:Beam search 是什么,束宽怎么选? 自回归解码每步选概率最大的词(greedy)容易陷入局部最优;beam search 保留 top-k 条候选路径同时扩展。k=4~6 是翻译甜点;摘要和开放生成反而 k 大更差(退化到重复、通用文本——「beam search curse」),开放生成用核采样(top-p)。理解:精确任务要「最可能」,创作任务要「多样性」。

Q:低资源语言翻译怎么办? 五条路:① 迁移学习——高资源语对预训练,低资源微调;② 回译(back-translation)——目标语单语数据反向翻译成源语造伪平行语料,便宜有效;③ 多语言模型(NLLB、mBART)——语际迁移,近亲语言互赢;④ 零样本 pivot——通过英语桥接;⑤ LLM few-shot——几百对示例注入 prompt。

Q:评估生成任务(翻译/摘要)为什么难? 本质:开放式任务没有唯一正确答案,存在大量「都对」的输出。基于 n-gram 重叠的指标度量的是「和参考译文的表面相似度」,不是「质量」。人类评估是上限但贵且不一致(标注员间 κ 经常 <0.6)。当前实践:自动指标做粗筛 + LLM-as-Judge 规模化 + 关键场景人工抽检三层。

相关阅读

翻译和摘要是 NLP 的「元老任务」,它们的技术史就是半部 NLP 史——对齐孕育了注意力,评估难题孕育了 LLM-as-Judge。即使未来全被通用模型统一,这些任务提出的真问题依然在场。

💬 评论

这套方案在哪一步卡住了?也欢迎补充你的实现方式或踩坑经验。

正在连接评论服务,首次访问可能需要几秒…