Text Summarization
文本摘要将文档浓缩为更短的文本,同时保留要点。内容涵盖抽取式和生成式方法、ROUGE 以及忠实度。
文本摘要是自然语言处理(NLP)的一项任务,目的是将文档浓缩成更短的文本,同时保留其中最重要的信息。两种主要方法是抽取式摘要和抽象式摘要:前者从原文中选出最重要的句子,后者则像人一样撰写新句子。摘要可以针对一份或多份文档,也可以是通用摘要,或聚焦于某个问题,例如“合同对终止事宜是怎么说的?”。电子邮件客户端、会议工具、新闻应用、搜索引擎和大型语言模型(LLM)助手都会生成摘要。
抽取式摘要#
IBM 的 Hans Peter Luhn 于 1958 年构建了首批自动摘要器之一:该系统根据每个句子中频繁出现且有意义的词语为句子打分,并将得分最高的句子作为摘要。H. P. Edmundson 于 1969 年加入提示词、标题词和句子位置等因素,图方法则于 2004 年问世。TextRank 和 LexRank 会构建一个图,其中节点代表句子,边代表相似度;然后选出中心性最高、也就是与文档其余部分最相似的句子。句子嵌入可以用几行代码实现中心性计算:
from sentence_transformers import SentenceTransformer
sentences = [
"The James Webb Space Telescope launched on 25 December 2021 on an Ariane 5 rocket from French Guiana.",
"Webb observes the universe in infrared light, which passes through the dust that hides young stars.",
"Its 6.5-meter primary mirror is built from 18 gold-coated hexagonal segments.",
"A five-layer sunshield the size of a tennis court keeps the mirror and instruments cold.",
"The telescope orbits the Sun about 1.5 million kilometers from Earth, near the second Lagrange point.",
"NASA published the first full-color science images from Webb in July 2022.",
]
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
# 根据每个句子与所有其他句子的平均相似度为其打分(即中心性)
embeddings = model.encode(sentences)
centrality = model.similarity(embeddings, embeddings).mean(dim=1)
# 按原始顺序保留中心性最高的两个句子
top = sorted(centrality.argsort(descending=True)[:2].tolist())
print(" ".join(sentences[i] for i in top))摘要保留了发射句和轨道句。抽取式摘要中的每个词都来自原文,因此摘要不会陈述文档中没有的信息;但它也会保留所选句子中的所有内容,包括读者可能不需要的细节,以及镜面句开头的“它的”这样的代词,而这个代词会指向一条被摘要省略的句子。
抽象式摘要#
抽象式模型属于序列到序列模型:编码器读取文档,解码器则逐个 token 撰写摘要。Alexander Rush 及其同事于 2015 年使用注意力机制训练模型撰写新闻标题;Abigail See 及其同事于 2017 年提出的指针生成网络,则让解码器直接从原文复制姓名和数字等词语,并对重复内容进行惩罚。预训练的 Transformer 随后大幅提升了质量:Facebook 的 BART(2019 年)通过重建被破坏的文本进行学习,Google 的 PEGASUS(2020 年)则通过重新生成从文档中删除的完整句子进行学习。这是一种与摘要本身密切相关的自监督预训练任务。
LLM 可以根据指令生成摘要,并遵循关于长度、受众和格式的要求。超过上下文窗口长度的文档会先拆分成多个片段,分别总结每个片段,再通过第二轮合并部分摘要,这种模式称为 map-reduce。摘要也不局限于文本:视频理解模型会描述片段中的事件,图像描述则会将图片浓缩成一句话。在Ultralytics Platform Agents中,LLM 模块可以将图像及其上游YOLO26检测结果浓缩成简短的文字摘要,连接的Slack模块则会通过其 {output} 占位符将摘要发布到频道。
数据集与评估#
大多数模型通过由文章和摘要配对组成的训练数据进行学习:CNN/Daily Mail 将新闻报道与项目符号形式的要点配对;XSum(2018 年)将 BBC 文章与单句摘要配对,这些摘要很少重复使用完整句子,因此更鼓励抽象式生成。Chin-Yew Lin 于 2004 年提出的 ROUGE,通过比较摘要与人工撰写的参考摘要中重叠的词语和词序列来评分;ROUGE-1 统计单词,ROUGE-2 统计词对,ROUGE-L 则统计最长公共子序列。重叠分数无法发现事实错误;Joshua Maynez 及其同事于 2020 年发现,他们研究的所有抽象式模型在 XSum 上生成的摘要中,都有相当多内容被人工标注人员判定为幻觉。他们还发现,文本蕴含度量能够检查原文是否支持摘要,其对忠实度的反映优于 ROUGE 和其他标准指标。
摘要与相关术语的比较#
- 文本生成:根据提示生成任意文本。摘要是受源文档内容约束的文本生成。
- 机器翻译:使用相同的编码器—解码器架构,将文本的完整内容转换成另一种语言。
- 情感分析:对文本表达的观点进行分类;观点摘要则将这两项任务结合起来,把大量评论浓缩为主要的赞扬和抱怨内容。
- 检索增强生成(RAG):检索与问题相关的段落,并据此生成答案,因此它也是一种针对问题、跨多份文档进行的摘要形式。










