一篇新闻太长懒得看?我用 Python + 深度学习,3分钟教你做一个“自动摘要神器”

举报
Echo_Wish 发表于 2026/03/27 20:07:14 2026/03/27
【摘要】 一篇新闻太长懒得看?我用 Python + 深度学习,3分钟教你做一个“自动摘要神器”

🧠 一篇新闻太长懒得看?我用 Python + 深度学习,3分钟教你做一个“自动摘要神器”

有多少人和我一样:

  • 打开一篇新闻,2000 字起步
  • 划重点划到怀疑人生
  • 最后直接滑到评论区看“网友总结版”

说白了,我们不是不爱看内容,是信息密度太低 + 时间太少

那能不能自己做一个工具:

👉 输入一篇新闻 → 自动生成“人话版摘要”?

答案是:完全可以,而且比你想象的简单。

今天我就带你从 0 到 1,撸一个完整的:

🔥 Python + 深度学习新闻摘要系统(可直接跑)

不讲空话,全是能落地的东西。


一、先看效果(我们到底要做什么)

先看目标效果👇

输入(原新闻):

“某科技公司发布最新AI模型,该模型在多项基准测试中超越现有方案,并在自然语言处理、图像识别等多个领域取得突破……”

输出(自动摘要):

“该公司发布新AI模型,性能全面提升,在多个领域取得突破。”

👉 一句话讲清核心信息

这背后其实就是一个任务:

📌 文本摘要(Text Summarization)


二、技术选型(别一上来就搞复杂)

做摘要有两条路:

1️⃣ 抽取式(Extractive)

  • 从原文“挑句子”
  • 简单,但不够自然

2️⃣ 生成式(Abstractive)✅

  • 模型“理解后重写”
  • 更像人写的

👉 今天我们选第二种:生成式摘要


三、核心模型:直接用现成的(别重复造轮子)

我们用 HuggingFace 的模型,比如:

  • facebook/bart-large-cnn
  • t5-small

👉 这些模型已经在新闻摘要上训练好了


四、上代码:10行实现一个摘要系统

先安装依赖:

pip install transformers torch

🚀 核心代码(最简单版本)

from transformers import pipeline

# 加载摘要模型
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

text = """
A major tech company has released a new AI model that outperforms existing solutions 
in multiple benchmarks. The model demonstrates strong capabilities in natural language 
processing and image recognition.
"""

# 生成摘要
summary = summarizer(text, max_length=50, min_length=20, do_sample=False)

print(summary[0]['summary_text'])

👉 就这么简单,你已经有一个“AI摘要引擎”了。


五、加点“工程味”:支持真实新闻数据

我们不可能手动输入文本,真实场景是:

👉 从新闻网站抓数据


示例:用 requests 抓新闻

import requests
from bs4 import BeautifulSoup

url = "https://example.com/news"

response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 假设文章在 <p> 标签
paragraphs = soup.find_all("p")
text = " ".join([p.get_text() for p in paragraphs])

print(text[:500])

👉 现在你有“真实新闻文本”了


六、长文本处理(很多人会踩的坑)

模型是有输入长度限制的(比如 1024 tokens)

👉 新闻太长怎么办?


✂️ 分段摘要(推荐)

def split_text(text, max_len=500):
    sentences = text.split(". ")
    chunks = []
    current = ""

    for sentence in sentences:
        if len(current) + len(sentence) < max_len:
            current += sentence + ". "
        else:
            chunks.append(current)
            current = sentence + ". "
    
    if current:
        chunks.append(current)
    
    return chunks

🧠 多段摘要再融合

chunks = split_text(text)

summaries = []
for chunk in chunks:
    result = summarizer(chunk, max_length=50, min_length=20)
    summaries.append(result[0]['summary_text'])

final_summary = " ".join(summaries)

print(final_summary)

👉 这就是一个“工业级思路”的雏形了。


七、让结果更“像人话”(优化点)

很多人跑完会吐槽:

“怎么有点像机器人写的?”

确实,这里有几个优化方向👇


1️⃣ 控制摘要长度

summarizer(text, max_length=60, min_length=30)

2️⃣ 使用中文模型(如果是中文新闻)

比如:

  • uer/t5-base-chinese-cluecorpussmall
summarizer = pipeline("summarization", model="uer/t5-base-chinese-cluecorpussmall")

3️⃣ 加一点“后处理”

def clean_text(text):
    return text.replace("\n", "").strip()

final_summary = clean_text(final_summary)

八、效果展示(更直观一点)

👉 上面这类流程其实就是:

原文 → 分段 → 模型理解 → 重写 → 合并摘要


九、再往上走一步:做成API服务

如果你想真正“用起来”,可以这样👇

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/summarize", methods=["POST"])
def summarize_api():
    text = request.json["text"]
    result = summarizer(text)
    return jsonify(result[0]['summary_text'])

app.run(port=5000)

👉 现在你有:

  • 一个摘要模型
  • 一个接口服务
  • 可以接前端 / 小程序 / 内部系统

十、说点我的真实感受

我自己在做内容系统的时候,有一个很深的感受:

AI不是用来“替代人”,而是用来“压缩信息成本”。

新闻摘要这个东西,本质上解决的是:

  • 信息过载
  • 阅读时间不足
  • 注意力稀缺

而你如果能把这个能力用在:

  • 内容推荐
  • 数据分析报告
  • 内部知识库

那价值就完全不一样了。


十一、总结一句话(建议收藏)

如果你今天只记住一件事,那就是:

文本摘要 ≠ 技术炫技,而是信息效率革命。


🔥 最后给你一个升级方向

如果你想把这个项目再往上打磨,我建议你试试:

  • ✅ 加入关键词提取(KeyBERT)
  • ✅ 做“多新闻聚合摘要”
  • ✅ 用大模型(GPT / Claude)做对比增强
  • ✅ 加缓存 + 并发优化
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。