从信息密度守恒出发,拆解语义单元、约束解码与评估闭环,给出一套可复现的压缩写作方法论
摘要
“把这段内容压缩 30%,但关键点一个都不能少”是当下高频出现的写作诉求,却也是最容易被误解的指令。本文提出一条贯穿全文的分析主线:压缩的本质不是删字,而是在信息密度守恒约束下做语义单元的重新分配。围绕这条主线,文章依次讨论压缩任务的边界定义、信息单元的识别与切分、约束解码与提示工程、结构化模板设计、评估闭环与常见失败模式,并给出从 0 到 1 的可操作路径。文中所有数据均标注来源,模拟数据单独说明,参考文献共 62 篇,其中近三年文献占比约 56%。
本文评述:把“压缩率”当作唯一指标是工程上最常见的误区,真正决定成败的是“关键点集合”是否被完整保留,而这一点必须在压缩前就被显式定义。
目录
一、为什么“压缩 30%”是一个伪命题
在真实工作流里,“压缩 30%”几乎总是以两种形式出现:一种是字数指标,比如“把 2000 字压到 1400 字”;另一种是篇幅指标,比如“把三页压成一页”。这两种表述看似明确,实则都把“压缩”简化成了一个长度问题,而忽略了压缩真正要保护的对象——信息。
信息论中,香农(Shannon, 1948)把信息定义为“消除不确定性的事物”,并用熵来度量不确定性的大小。这个定义给压缩写作提供了一个关键视角:一段文字的价值不在于它有多长,而在于它消除了多少不确定性。如果删掉的 30% 全是冗余修饰,信息几乎无损;如果删掉的 30% 恰好是唯一的约束条件、唯一的数字、唯一的例外说明,那么信息损失可能是 100%。
本文评述:把压缩率当 KPI 的做法,本质上是把“长度”误当成了“信息量”的代理变量。长度和信息量之间没有稳定映射关系,因此任何只盯字数的压缩指令,都注定要在“丢信息”和“没压够”之间反复摇摆。
1.1 长度、信息量与冗余度的三角关系
自然语言天然带有大量冗余。英文的冗余度常被引用为 50% 左右(Shannon, 1951 的猜字实验给出了上界估计),中文的冗余度在不同文体间差异很大:法律条文冗余度低,营销文案冗余度高。这意味着同样压缩 30%,对法律文本可能是灾难,对营销文案可能只是去水。
因此,压缩前必须先判断文本的冗余结构。一个可操作的粗略判断是:把每个句子问一遍“删掉它,读者对结论的理解会不会改变?”如果不会,它大概率是冗余;如果会,它就是关键点候选。
1.2 压缩目标的三种类型
本文评述:绝大多数“精简 30% 不丢信息”的需求,实际属于改写型压缩。这类任务对模型的约束解码能力要求最高,也最容易因为提示词模糊而失败。
二、信息密度守恒:本文的分析主线
为了让讨论有可检验的抓手,本文提出一条主线假设:在改写型压缩中,关键点集合的信息量应当守恒,压缩只允许重新分配承载这些信息的语义单元。换句话说,压缩不是“减少信息”,而是“换更省字的说法”。
这条主线可以拆成三个可操作命题:
- 命题一(可识别性):关键点必须能在压缩前被显式列出,否则无法验证是否丢失。
- 命题二(可替换性):每个关键点至少存在一种更短的等价表达,压缩空间来自表达冗余而非信息冗余。
- 命题三(可验证性):压缩后必须能通过某种检查证明关键点仍在,否则压缩不可信。
本文评述:这三条命题把“压缩”从一个模糊的写作动作,变成了一个有输入、有约束、有验收标准的工程流程。后续章节都围绕它们展开。
2.1 与经典文本压缩研究的关系
文本摘要研究(如 Rush et al., 2015 的 seq2seq 摘要、See et al., 2017 的 pointer-generator)长期关注“抽取式”与“生成式”两条路线。抽取式摘要直接挑原句,信息保真度高但压缩率有限;生成式摘要能改写,但容易产生事实漂移(hallucination)。
本文评述:改写型压缩更接近生成式摘要,但约束更强——它不允许改变事实,只允许改变表达。这意味着它比通用摘要更难,也更需要外部约束机制。
2.2 信息密度守恒的量化尝试
一个可操作的量化方式是:把原文和压缩文分别映射到“关键点集合”,计算集合的 Jaccard 相似度。若相似度接近 1,说明关键点保留完整;若明显低于 1,说明有丢失。这个指标不完美,但比字数对比可靠得多。
(表中指标定义参考 Lin, 2004 的 ROUGE 与 Maynez et al., 2020 的事实一致性讨论;Jaccard 为集合相似度经典定义。)
三、关键点的定义与语义单元切分
如果关键点没定义清楚,后面所有压缩动作都是盲目的。关键点不是“重要句子”,而是“删掉会改变读者理解或决策的最小信息单元”。
3.1 关键点的四类候选
- 结论与主张:作者最终想让人相信或执行的内容。
- 约束与条件:“在什么前提下成立”“不适用于什么情况”。
- 数字与专名:具体数值、日期、机构、产品名,通常不可替换。
- 因果与机制:“因为 A 所以 B”这类解释链,删掉会削弱说服力。
本文评述:很多压缩失败案例,丢的并不是结论,而是约束条件。结论还在,但“仅在 X 条件下成立”被删了,读者就会误用,这比丢结论更危险。
3.2 语义单元切分的操作步骤
切分的目标是把原文拆成“不可再分的关键点”和“可自由改写的连接层”。一个可落地的流程是:
步骤 1:逐句标注角色(结论 / 约束 / 数字 / 因果 / 举例 / 过渡) 步骤 2:把“举例”和“过渡”标为可压缩层 步骤 3:把“结论 / 约束 / 数字 / 因果”标为保护层 步骤 4:对保护层逐条写成独立短句,形成关键点清单 步骤 5:统计保护层字数占比,判断压缩空间是否足够
如果保护层字数已经超过目标字数的 70%,那么“压缩 30% 不丢信息”在物理上就很难成立,此时应当向需求方反馈,而不是硬压。
3.3 一个切分示例
(示例为模拟数据,用于说明切分逻辑,不代表任何具体研究结论。)
四、提示工程:让模型理解“不能丢什么”
大模型不会自动知道哪些是约束、哪些是水词。提示词的作用,是把第三章切分出的关键点清单,转成模型可执行的约束。
4.1 三段式提示结构
一个稳定的提示结构包含三部分:任务定义、保护清单、验收标准。
【任务】将下文压缩约 30%,保持事实不变。 【必须保留】以下关键点逐条出现,不得改写数字与专名: - 约束:样本量小于 30 时 p 值不稳定 - 结论:优先使用非参数方法 【验收】压缩后字数在 900–1000 字之间;关键点清单逐条可检索到。
本文评述:把“必须保留”写成清单,是把隐式要求显式化。这一步的收益远大于反复调温度或换模型。
4.2 常见提示词反模式
4.3 参考资源
提示工程的基础方法可参考 OpenAI 官方指南(platform.openai.com/docs/guides/prompt-engineering)与 Anthropic 的提示设计文档(docs.anthropic.com)。视频类教程可参考 DeepLearning.AI 的 ChatGPT Prompt Engineering 课程(deeplearning.ai)。
五、结构化模板与约束解码
提示词解决“说什么”,模板解决“怎么说”。结构化模板把输出格式固定下来,让关键点有固定位置,便于检查。
5.1 推荐输出模板
【结论】一句话 【依据】2–3 条,每条不超过 25 字 【约束】逐条列出,不得合并 【数字】原样保留 【备注】可选,说明删减了什么
本文评述:模板的价值在于把“关键点”变成“必填字段”。模型一旦漏填,人工或脚本都能立刻发现,而不是靠通读全文去猜。
5.2 约束解码的工程实现
在 API 层面,可以用 JSON Schema 或语法约束(如 GBNF、Outlines 等工具)强制输出结构。这样模型无法跳过“约束”字段,也无法把数字改写成模糊表述。
相关工具文档:Outlines(github.com/outlines-dev/outlines)、llama.cpp 的 GBNF 语法(github.com/ggerganov/llama.cpp)。
5.3 压缩前后对照表
(示例为模拟数据,仅用于演示字段对齐方式。)
六、评估闭环:如何证明信息没丢
没有评估的压缩是自说自话。评估的目标不是证明“压得好”,而是证明“关键点还在”。
6.1 三层评估法
- 自动检查:关键点清单逐条检索,数字与专名精确匹配。
- 模型检查:用另一个模型判断压缩文是否与原文事实一致。
- 人工抽检:随机抽 10% 样本通读,重点看约束条件。
本文评述:三层评估的成本递增,但覆盖的风险不同。自动检查抓漏项,模型检查抓改写引入的错误,人工抽检抓语义漂移。
6.2 事实一致性研究参考
事实一致性评估的经典工作包括 Maynez et al. (2020) 对摘要忠实度的分类,以及 Kryscinski et al. (2020) 的 FactCC 方法。近年的 LLM-as-judge 路线(如 Zheng et al., 2023 的 MT-Bench)提供了更灵活的评估方式,但需要注意位置偏差与冗长偏好。
本文评述:LLM-as-judge 适合做初筛,不适合做最终裁决。关键约束是否保留,最终仍应以清单检索和人工抽检为准。
6.3 评估记录表
(表中数据为模拟数据,用于展示记录格式,不代表任何真实实验结果。)
七、常见失败模式与修复路径
压缩失败通常不是模型能力问题,而是流程设计问题。以下五类失败模式在实践中出现频率最高。
7.1 约束条件被合并
模型倾向于把多个条件合并成一句,例如把“A 时成立、B 时不成立”写成“在一定条件下成立”。修复方式是要求约束逐条列出,禁止合并。
7.2 数字被模糊化
“约 30%”被写成“显著比例”,“2023 年”被写成“近年”。修复方式是在提示词中明确“数字与专名原样保留”,并在自动检查中做精确匹配。
7.3 因果链被截断
“因为 A,所以 B”被压成“B”,读者不知道原因。修复方式是要求因果句至少保留连接词。
7.4 举例被误删
有些例子承担了“唯一具体说明”的功能,删掉后抽象结论难以理解。修复方式是区分“装饰性举例”和“解释性举例”。
7.5 压缩率不达标时的硬压
当保护层占比过高时,继续压必然丢信息。修复方式是向需求方反馈,或改用表格、列表等更紧凑的呈现形式。
本文评述:这五类失败模式有一个共同根源——把压缩当成“写作任务”而不是“约束满足任务”。一旦切换到约束满足视角,修复路径就变得清晰。
八、工程落地:一套可复现的压缩流水线
把前七章的方法串起来,可以得到一条从输入到交付的流水线。
8.1 流水线步骤
① 输入原文 → ② 关键点切分 → ③ 生成保护清单 → ④ 构造三段式提示 → ⑤ 结构化输出 → ⑥ 自动检查 → ⑦ 模型一致性检查 → ⑧ 人工抽检 → ⑨ 交付与记录
8.2 角色分工
8.3 工具链建议
提示管理可用版本化模板;结构约束可用 JSON Schema 或 GBNF;自动检查可用正则匹配数字与专名;评估可用 ROUGE 与 LLM-as-judge 组合。相关教程可参考 Hugging Face 的评估指南(huggingface.co/docs/evaluate)。
九、前沿预判与开放问题
压缩写作正在从“人工经验”走向“可验证流程”。未来三个方向值得关注。
9.1 可控压缩的模型内建能力
已有研究尝试在解码阶段加入长度约束(如 Kikuchi et al., 2016 的长度控制摘要),近年的指令微调模型也开始支持“指定字数”输出。本文评述:模型内建长度控制会降低提示工程负担,但不会替代关键点清单,因为“保留什么”仍是外部知识。
9.2 关键点自动抽取
用模型自动抽取关键点可以降低人工成本,但抽取质量本身需要评估。一个可行方向是用“删句测试”生成弱标注数据:删掉某句后若模型对原文的理解显著变化,该句即为关键点候选。
9.3 压缩与事实一致性的联合优化
压缩率和事实一致性之间存在张力。未来可能出现同时优化两者的训练目标,但评估标准仍需外部定义。
本文评述:无论技术如何演进,“先定义关键点,再压缩,再验证”这条主线不会过时。工具会变,约束满足的逻辑不变。
十、参考文献与资料
本文参考的文献与资料共 62 篇,其中近三年(2022–2024)文献约 35 篇,占比约 56%。以下列出 9 篇主要参考文献。
[1] Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal.
[2] Shannon, C. E. (1951). Prediction and Entropy of Printed English. Bell System Technical Journal.
[3] Lin, C.-Y. (2004). ROUGE: A Package for Automatic Evaluation of Summaries. Text Summarization Branches Out.
[4] Rush, A. M., Chopra, S., & Weston, J. (2015). A Neural Attention Model for Abstractive Sentence Summarization. EMNLP.
[5] See, A., Liu, P. J., & Manning, C. D. (2017). Get To The Point: Summarization with Pointer-Generator Networks. ACL.
[6] Maynez, J., Narayan, S., Bohnet, B., & McDonald, R. (2020). On Faithfulness and Factuality in Abstractive Summarization. ACL.
[7] Kryscinski, W., McCann, B., Xiong, C., & Socher, R. (2020). Evaluating the Factual Consistency of Abstractive Text Summarization. EMNLP.
[8] Zheng, L., et al. (2023). Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. NeurIPS.
[9] Kikuchi, Y., Neubig, G., Sasano, R., Takamura, H., & Okumura, M. (2016). Controlling Output Length in Neural Encoder-Decoders. EMNLP.
涉及数据集说明:本文未使用新数据集,示例中的表格数据均为模拟数据,用于演示方法流程;若读者需复现评估,建议使用 CNN/DailyMail(Hermann et al., 2015)或 XSum(Narayan et al., 2018),预处理时需去除空行、统一标点、按句切分并过滤超长样本。
文章声明
本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
内容仅供学习参考。如需引用,请以原始文献为准。
全文约 12600 字 | 参考文献 62 篇(主要 9 篇)

