# 基于 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.pswp.cn/news/903599.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903599.shtml
英文地址,請注明出處:http://en.pswp.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)、面向切面編程…