最省事方式是用hugging face pipeline加载预训练模型,中文优先选randeng-pegasus或uer/roberta-base;超长文本需分段并语义合并,避免截断失真;sumy适合轻量无监督场景但须配textrank+jieba;控制长度应按token而非字数,建议摘要长度为原文token数的15%–25%。

用 transformers 加载预训练摘要模型最省事
直接调用 Hugging Face 提供的 pipeline 是当前最稳定、开箱即用的方式,尤其适合中英文混合或纯中文长文本。别自己从头训模型,facebook/bart-large-cnn 或 pszemraj/long-t5-tglobal-base-16384-booksum 这类模型已在大量文本上微调过,效果远超规则方法。
实操建议:
- 中文任务优先选
IDEA-CCNL/Randeng-Pegasus-238M-Summary-Chinese或uer/roberta-base-finetuned-chinese-extractive-summarization,原生支持中文分词和标点处理 - 输入文本超过 1024 字符时,
pipeline默认会截断——必须显式传入max_length和min_length,否则摘要可能严重失真 - 若原文含大量代码块或特殊符号(如
```python),先用正则粗略清洗,否则模型容易在 tokenization 阶段报IndexError: index out of range in self
sumy 做无监督抽取式摘要适合轻量需求
当你的服务器资源紧张、或只需要关键词+句子位置匹配这种可解释性强的结果时,sumy 比 transformer 模型快一个数量级,且不依赖 GPU。
常见错误现象:
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
- 默认使用
LsaSummarizer,但对中文支持极差——必须换TextRankSummarizer并配JiebaTokenizer - 没设置
sentence_count参数时,它会返回空列表,而不是抛异常,容易误判为“无摘要” - 输入含 HTML 标签(比如爬虫抓来的正文)会导致
sumy.parsers.html.HtmlParser解析失败,得先用BeautifulSoup提纯文本
自定义长度控制:别只信 max_length
几乎所有摘要接口都提供 max_length,但它控制的是 token 数而非字数,中文下 1 个汉字 ≈ 2–4 个 token(取决于 tokenizer),所以设成 100 可能只出 30 字。
更可靠的控制方式:
- 用
transformers.AutoTokenizer.from_pretrained(...)实例化后,调用tokenizer.encode(text, return_length=True)先看原文 token 长度 - 摘要目标长度建议设为原文 token 长度的 15%–25%,低于 10% 容易丢失主干信息
- 如果最终输出仍偏长,加
truncation=True+clean_up_tokenization_spaces=True,否则末尾常带多余空格或▁符号
长于 4096 字符的文本必须分段处理
目前主流模型(包括 LongT5)虽号称支持长上下文,但实际推理时 batch size=1 下超过 8192 token 就容易 OOM;而真实业务中万字文档很常见。
分段不是简单按字数切,关键在语义连贯性:
- 优先按自然段切分,再合并相邻短段(每段 ≥ 300 字),避免单句成段
- 每段单独摘要后,用
rouge-score库比对段间摘要的ROUGE-L相似度,高于 0.6 的合并为一组,再做二次摘要 - 千万别用
textwrap.wrap()按固定宽度切——它会在单词中间断开,中文虽无空格但会在标点处乱劈,导致模型输入错位
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










