基于 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()
四、使用方法
- 安裝依賴:確保你已經安裝了
jieba
庫。如果尚未安裝,可以通過以下命令安裝:pip install jieba
- 準備文本文件:將需要摘要的文本保存為一個 UTF-8 編碼的純文本文件。
- 運行代碼:將上述代碼保存為一個 Python 腳本文件(如
text_summary.py
),然后運行該腳本。工具將自動讀取文本文件,生成摘要并打印結果。
五、示例
假設我們有一個名為 task5data.txt
的文本文件,內容如下:
共赴青春盛會,激揚青春力量。在充滿陽光與激情的盛夏,世界將目光聚焦成都。7月28日晚,第31屆世界大學生夏季運動會將在成都拉開帷幕。來自170個國家和地區的大學生齊聚蓉城,他們將在賽場上勇敢挑戰自我,拼搏成就夢想,展現青春風采。這場舉世矚目、萬眾期待的“青春之約”,讓這個夏天的中國故事更加精彩紛呈。大運會是青春的盛會,無數青春在賽場綻放,閃耀出耀眼的光彩。本次大運會中國參賽運動員中,344人是首次代表國家參加世界綜合性運動會。從層層選拔到刻苦備戰,再到登上賽場沖擊獎牌,這其間凝結著運動員們日復一日的拼搏堅持,用汗水孕育著夢想的果實直至開花結果。當他們在賽場上演繹著超越自我、突破極限、創造奇跡的青春故事,詮釋出“不經歷一番寒徹骨,怎得梅花撲鼻香”的真諦,這便是體育精神和奧林匹克精神帶給我們的啟示與感動。在他們身上,人們看到青春最美好的模樣,看見奮斗是青春最靚麗的底色。 。
運行工具后,生成的摘要可能是:
六、總結
這個基于 Python 和 jieba 的中文文本自動摘要工具簡單易用,能夠快速從長文本中提取關鍵信息。它適用于多種文本處理場景,如新聞摘要、文獻綜述等。希望這個工具能夠幫助你更高效地處理文本數據。