# 基于 Python 和 jieba 的中文文本自动摘要工具

基于 Python 和 jieba 的中文文本自动摘要工具

在信息爆炸的时代,快速准确地提取文本核心内容变得至关重要。今天,我将介绍一个基于 Python 和 jieba 的中文文本自动摘要工具,帮助你高效地从长文本中提取关键信息。

一、背景与需求

在处理大量文本数据时,如新闻报道、学术论文、研究报告等,我们常常需要快速了解其核心内容。手动提取摘要不仅耗时费力,还容易遗漏重要信息。因此,开发一个自动摘要工具显得尤为重要。

二、工具介绍

这个工具的核心是基于 TF-IDF 算法,利用 Python 的 jieba 库实现中文文本的自动摘要。以下是工具的主要功能模块:

1. 文本读取

通过 read_text 函数,工具能够从指定路径读取文本文件。它支持 UTF-8 编码格式,确保能够正确处理中文字符。这使得工具能够轻松处理各种纯文本文件。

2. 分句处理

文本中的句子是信息的基本单元。工具使用正则表达式 re.split(r'[。!?;]', text) 按照中文标点符号(句号、感叹号、问号、分号)分割文本为句子。同时,去除空字符串,确保句子列表中的每个句子都是有效的。

3. 句子权重计算

句子的重要性是通过其关键词的 TF-IDF 值来衡量的。工具使用 jieba.analyse.tfidf 方法计算每个句子中关键词的 TF-IDF 值,并将这些值相加作为句子的权重。这种算法假设句子的重要性与句子中关键词的 TF-IDF 值之和成正比。

4. 摘要生成

根据句子权重,工具按权重降序排序并选择权重最高的若干句子作为摘要。默认情况下,工具会提取权重最高的 3 个句子,但你可以根据需要调整这个数字。此外,工具还会对摘要句子进行去重,确保摘要中没有重复的句子。

三、代码实现

以下是工具的完整代码实现:

import jieba
import jieba.analyse
from collections import defaultdict
import re# 读取文本文件
def read_text(file_path):with open(file_path, 'r', encoding='utf-8') as file:text = file.read()return text# 分句处理
def split_sentences(text):sentences = re.split(r'[。!?;]', text)sentences = [sentence.strip() for sentence in sentences if sentence.strip()]return sentences# 计算句子的TF-IDF权重
def calculate_sentence_weights(sentences):sentence_weights = defaultdict(float)for sentence in sentences:keywords = jieba.analyse.tfidf(sentence, withWeight=True)for word, weight in keywords:sentence_weights[sentence] += weightreturn sentence_weights# 生成摘要
def generate_summary(sentence_weights, top_n=3):sorted_sentences = sorted(sentence_weights.items(), key=lambda x: x[1], reverse=True)summary_sentences = [sentence for sentence, weight in sorted_sentences[:top_n]]unique_summary_sentences = list(dict.fromkeys(summary_sentences))return unique_summary_sentences# 主函数
def main():file_path = r'D:\Users\妄生\PycharmProjects\人工智能\作业(2023)\task5data.txt'text = read_text(file_path)sentences = split_sentences(text)sentence_weights = calculate_sentence_weights(sentences)summary_sentences = generate_summary(sentence_weights)print("摘要结果:")for sentence in summary_sentences:print(sentence)if __name__ == "__main__":main()

四、使用方法

  1. 安装依赖:确保你已经安装了 jieba 库。如果尚未安装,可以通过以下命令安装:
    pip install jieba
    
  2. 准备文本文件:将需要摘要的文本保存为一个 UTF-8 编码的纯文本文件。
  3. 运行代码:将上述代码保存为一个 Python 脚本文件(如 text_summary.py),然后运行该脚本。工具将自动读取文本文件,生成摘要并打印结果。

五、示例

假设我们有一个名为 task5data.txt 的文本文件,内容如下:

共赴青春盛会,激扬青春力量。在充满阳光与激情的盛夏,世界将目光聚焦成都。7月28日晚,第31届世界大学生夏季运动会将在成都拉开帷幕。来自170个国家和地区的大学生齐聚蓉城,他们将在赛场上勇敢挑战自我,拼搏成就梦想,展现青春风采。这场举世瞩目、万众期待的“青春之约”,让这个夏天的中国故事更加精彩纷呈。大运会是青春的盛会,无数青春在赛场绽放,闪耀出耀眼的光彩。本次大运会中国参赛运动员中,344人是首次代表国家参加世界综合性运动会。从层层选拔到刻苦备战,再到登上赛场冲击奖牌,这其间凝结着运动员们日复一日的拼搏坚持,用汗水孕育着梦想的果实直至开花结果。当他们在赛场上演绎着超越自我、突破极限、创造奇迹的青春故事,诠释出“不经历一番寒彻骨,怎得梅花扑鼻香”的真谛,这便是体育精神和奥林匹克精神带给我们的启示与感动。在他们身上,人们看到青春最美好的模样,看见奋斗是青春最靓丽的底色。 。

运行工具后,生成的摘要可能是:
在这里插入图片描述

六、总结

这个基于 Python 和 jieba 的中文文本自动摘要工具简单易用,能够快速从长文本中提取关键信息。它适用于多种文本处理场景,如新闻摘要、文献综述等。希望这个工具能够帮助你更高效地处理文本数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Seaborn数据可视化库

一、Seaborn介绍:基于Matplotlib的Python数据可视化库,专注绘制统计图形,简化可视化过程,提供高级接口和美观默认主题。 二、安装与导入 1.安装:可使用pip install seaborn或conda install seaborn,也可使…

机器视觉2D码垛和机器视觉3D码垛的区别

机器视觉3D码垛是一种结合3D视觉技术和工业机器人的自动化系统,主要用于在复杂环境中精准识别、定位并堆叠(码垛)各种形状、尺寸的物体。它通过3D传感器(如激光雷达、结构光相机、双目视觉等)获取物体的三维空间信息,并结合算法规划机器人的抓取路径和码放策略,实现高效…

Python魔法函数深度解析

一、魔法函数是什么? 魔法函数(Magic Methods)是Python中以双下划线(__xx__)包裹的特殊方法,它们为类提供了一种与Python内置语法深度集成的能力。这些方法由解释器自动调用,无需显式调用&…

C++负载均衡远程调用学习之自定义内存池管理

目录 1.内存管理_io_buf的结构分析 2.Lars_内存管理_io_buf内存块的实现 3.buf总结 4.buf_pool连接池的单例模式设计和基本属性 5.buf_pool的初始化构造内存池 6.buf_pool的申请内存和重置内存实现 7.课前回顾 1.内存管理_io_buf的结构分析 ## 3) Lars系统总体架构 ​ …

流水线问题(算法设计)C++

目录 一、需求分析 1.1 问题描述 1.2 数据需求 1.3 功能需求 1.4 开发环境 二、概要设计 2.1 抽象数据类型 ADT 的定义 2.2 系统的主要功能模块 2.3 功能模块联系图 三、详细设计 3.1 数据结构设计 3.2 主要算法 四、系统运行及结果分析 1. 用户界面 2. 程序运行…

从实列中学习linux shell4: shell 脚本中 $0 $1 $2 $3 >> 以及 awk 都是干啥的?

在 Linux Shell 脚本中,这些符号和工具的功能如下: 一、位置参数 $0 $1 $2 $3 符号功能说明示例$0脚本自身的文件名若执行 ./test.sh,则 $0 值为 ./test.sh$1第一个参数执行 ./test.sh apple 时,$1 值为 "apple"$2第二…

TM1668芯片学习心得三

一、键扫数据储存地址如下所示,先发读键命令后,开始读取按键数据BYTE1-BYTE5字节,读数据从低位开始输出,其中B6和B7位为无效位,此时芯片输出为0。芯片K和KS引脚对应的按键按下时,相对应的字节内的 BIT位为1…

MySQL 基本查询(一)

文章目录 Create(insert)指定列的单行插入和全列插入多行全列插入和指定列的多行插入如果主键存在,要插入替换存在的值replace 基本select全列查询指定列查询where子句where子句案例语文成绩在 [80, 90] 分的同学及语文成绩数学成绩是 58 或者 59 或者 98 或者 99 分…

LeetCode路径总和系列问题解析:I、II、III的解决方案与优化

文章目录 引言一、路径总和 I(LeetCode 112)问题描述方法思路Java代码实现复杂度分析 二、路径总和 II(LeetCode 113)问题描述方法思路Java代码实现复杂度分析 三、路径总和 III(LeetCode 437)问题描述方法…

NFC 碰一碰发视频贴牌技术,音频功能的开发实践与技术解析

在数字化营销与信息交互场景中,NFC 碰一碰技术凭借其便捷性和高效性,成为快速传递多媒体内容的新选择。通过 NFC 实现视频音频的快速传输,不仅能提升用户体验,还能为各类场景带来创新应用。本文将深入探讨该功能开发过程中的关键技…

跨境电商生死劫:IP筛查三法则破解封号魔咒

一、血泪数据:90%封号案源于IP污染 跨境电商平台风控系统持续升级,2023年亚马逊全球封号案例中,67%涉及账号关联(Marketplace Pulse数据),其中IP问题占比高达91%。更触目惊心的是: 新号存活率&…

MIPS架构详解:定义、应用与其他架构对比

一、MIPS架构的定义 MIPS(Microprocessor without Interlocked Pipeline Stages) 是一种经典的精简指令集(RISC)处理器架构,由斯坦福大学John Hennessy团队于1981年提出,强调高效流水线设计和硬件简化。 核…

第十六届蓝桥杯 2025 C/C++组 脉冲强度之和

目录 题目: 题目描述: 题目链接: 思路: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: P12338 [蓝桥杯 2025 省 B/Python B 第二场] 脉冲强度…

从Ping到iperf3:深度实战无线网络压测与优化指南

以下是测试无线网络稳定性的详细步骤与工具指南,涵盖信号质量、吞吐量、干扰排查等关键维度: 一、基础信号质量测试 1. 信号强度与覆盖测试 工具:手机APP(WiFi Analyzer、NetSpot)或笔记本(Acrylic WiFi&a…

MySQL 连接池 (Pool) 常用方法详解

MySQL 连接池 (Pool) 常用方法详解 1. 创建连接池 首先需要创建连接池实例: const mysql require(mysql2/promise); // 使用Promise版本const pool mysql.createPool({host: localhost,user: root,password: password,database: test,waitForConnections: true…

大型连锁酒店集团数据湖应用示例

目录 一、应用前面临的严峻背景 二、数据湖的精细化构建过程 (一)全域数据整合规划 (二)高效的数据摄取与存储架构搭建 (三)完善的元数据管理体系建设 (四)强大的数据分析平台…

GNU gettext 快速上手

文章目录 1.简介2.核心概念国际化 (i18n)本地化 (l10n)POT 文件PO 文件MO 文件文本域翻译函数 3.主要组件4.使用示例参考文献 1.简介 GNU gettext 是一套用于软件国际化(internationalization,i18n)和本地化(localization&#x…

分享:VTK版本的选择 - WPF空域问题

在早期版本中,ActiViz 对 Windows Presentation Foundation (WPF) 框架的支持是通过 WindowsFormHost 组件实现的,这种方式依赖于 WindowsForm 和 WPF 的互操作性。然而,这种方法存在一个众所周知的“空域问题”(airspace issue&a…

python数据分析(六):Pandas 多数据操作全面指南

Pandas 多数据操作全面指南:Merge, Join, Concatenate 与 Compare 1. 引言 在数据分析工作中,我们经常需要处理多个数据集并将它们以各种方式组合起来。Pandas 提供了多种强大的多数据操作方法,包括合并(merge)、连接(join)、连接(concaten…

spring 面试题

一、Spring 基础概念 什么是 Spring 框架? Spring 是一个开源的 Java 应用程序框架,它提供了一种轻量级的、非侵入式的方式来构建企业级应用。Spring 的核心功能包括依赖注入(Dependency Injection,DI)、面向切面编程…