自然語言處理NLP入門 -- 第十一節NLP 實戰項目 3: 文本摘要

1. 為啥需要文本摘要?

還記得小時候我們要寫“讀后感”或“觀后感”嗎?看完一篇長長的文章、一本書,甚至一部電影后,老師總是要我們用幾句話概括主要內容。其實,這就跟文本摘要的核心思路一樣——把那些最有價值、最能代表原文核心思想的內容給“撈”出來,讓別人一下子就知道“這篇文章”或“這個故事”到底講了啥。

在現實生活里,你可能會遇到這樣的場景:

  • 新聞閱讀:想快速知道今天世界發生了什么事兒,但新聞一篇好幾千字,沒時間細看?一鍵自動生成摘要,讓你兩三句話就知道新聞說啥。
  • 工作匯報:老板發來長篇郵件,沒空細讀?讓自動摘要工具抽取重點,你再補充修飾就行。
  • 學術研究:你有一堆論文要看,每篇都是好幾頁甚至幾十頁?自動摘要能幫你快速判斷這篇論文值不值得深挖。

因此,有了文本摘要,我們的效率就能大大提升,也能節省大量寶貴時間。接下來,我們來看看如何輕松實現它。


2. 文本摘要怎么做?(兩大派系)

在NLP(自然語言處理)里,文本摘要主要有兩種方式,想象一下這是兩個“門派”:

  1. 抽取式摘要門派
    他們的招式是從原文中直接“摘取”關鍵詞句,重新組合成摘要,讀起來和原文內容很像。這就像你在商場買瓶礦泉水,直接拿起來就走,沒有對它進行任何改造。

    • 好處:信息失真少,幾乎不會“瞎編”。
    • 局限:可能讀起來有點“不連貫”,句子缺少潤色。
  2. 生成式摘要門派
    他們會“讀懂”文章,再“用自己的話”寫出一個精簡、流暢的新文本。這就像把礦泉水倒進自己的保溫杯,還可能加點檸檬片提升口感,最后讓你喝到完全不同體驗的飲品。

    • 好處:內容更通順,風格更自然。
    • 局限:有時會有“想象力過度”,可能對原文做出不準確的改寫。

現在,深度學習興起后,生成式摘要特別火。因此,咱們今天聚焦用 T5、GPT 等模型來做“生成式摘要”。


3. 用 T5 模型來“寫摘要”,就像找了個勤勞的小助理

3.1 T5 是啥?

T5(Text-To-Text Transfer Transformer)可以理解為一個“全能小助理”。它對絕大多數的文字處理任務都能上手,比如翻譯、寫摘要、問答等等,統統用“輸入文本 -> 輸出文本”這種形式來搞定。

  • 優點:能幫你做各種文字任務,不用自己手動來回換工具。
  • 如何使用:Hugging Face 庫提供了預訓練好的T5模型,我們拿來就能用,不用從零開始訓練。

3.2 代碼示例:給 T5 一個長文本,讓它幫你總結

在正式開始前,你需要安裝好 transformerstorch

pip install transformers torch

然后,在 Python 里寫幾行代碼,就能讓 T5 接手你的文本,輸出簡潔摘要。示例如下:

from transformers import T5Tokenizer, T5ForConditionalGenerationmodel_name = "t5-small"  # 可換成 t5-base 或 t5-large
tokenizer = T5Tokenizer.from_pretrained(model_name)
model = T5ForConditionalGeneration.from_pretrained(model_name)text = """
人工智能(AI)是計算機科學的一個分支,致力于讓機器擁有類似人類的智能,
涉及推理、規劃、學習、語言理解等多種技術領域。
它在機器人、醫療、金融、教育等行業都有廣泛應用。
"""
# 在句子前加上 "summarize: " 提醒 T5:老兄,這是摘要任務
input_text = "summarize: " + text# 分詞并編碼
encoding = tokenizer.encode_plus(input_text,max_length=512,truncation=True,return_tensors="pt"  # 返回 PyTorch 張量
)# 生成摘要
summary_ids = model.generate(encoding["input_ids"],num_beams=4,         # beam search寬度no_repeat_ngram_size=2, min_length=10, max_length=50,       # 生成的摘要長度early_stopping=True
)summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
print("T5生成的摘要:", summary)

示例輸出:

看不懂的地方說明
  • num_beams=4:這是一種尋找最佳句子的策略,讓模型有機會從多個候選里選出相對高質量的摘要。
  • max_length=50:輸出摘要的上限字數,別太長,否則就沒“摘要”意味了。
  • skip_special_tokens=True:去掉模型在生成時出現的特殊標記(比如 <pad>, <sep> 等)。

運行完,你就能得到一段簡短的摘要。雖然它可能沒有你自己寫的那么“貼心”,但作為一款自動化工具,已經很夠用了。


4. 用 OpenAI API 做摘要,像雇了個超級寫手

4.1 為什么用 OpenAI?

  • 你不想做模型部署?不想配環境?沒問題。只需要一個 API Key,就能讓 GPT 系列(GPT-3.5、GPT-4 等)幫你寫摘要。
  • GPT 對中文和很多語言都擅長,能寫得像模像樣。

4.2 給 OpenAI API 發消息,讓它生成摘要

第一步,先安裝 openai

pip install openai

然后寫一點點 Python 代碼,就能把文本交給 GPT,讓它幫你寫一段簡潔的摘要:

import openaiopenai.api_key = "你的OPENAI_API_KEY"def generate_summary(text):prompt = f"請用簡潔生動的語言概括以下文本:\n{text}\n摘要:"response = openai.chat.completions.create(model = "gpt-4",messages = [{"role": "user", "content": prompt}],max_tokens = 50,temperature = 0.7)return response.choices[0].message.contentlong_text = """
自然語言處理是一門讓計算機能理解和生成自然語言(如中文、英語)的方法,
包括分詞、文本分類、情感分析、機器翻譯等。在人工智能大潮下,NLP 正日漸火熱。
"""print(generate_summary(long_text))

示例輸出:

自然語言處理是一種使計算機理解和產生自然語言的技術,包括分詞、文本分類、情感分析和機器翻譯等
  • prompt:給 GPT 的“指令”。像跟人聊天一樣,對它說“請概括下面的文本”。
  • temperature=0.7:控制文字生成的“創造力”,數字越高,生成越有個性;數字低,生成越穩當。

只要聯網并且 Key 沒失效,運行后 GPT 會迅速給你一個簡潔的概括。是不是感覺像給你配了個“寫手助理”?


5. 常見困難:模型也會“卡殼”?

  1. 摘要不夠準確:生成式模型(尤其是 GPT)有時“腦補”過頭,可能添加原文沒有的內容。所以使用后要做一下人工核對。
  2. 文本太長:T5 或 GPT 都有輸入長度限制,字數太多時得分段處理,然后把分段的摘要再合并總結。

6. 小練習,動動手更牢固

  1. 調參試驗:試著改變 T5 的 num_beamsmax_length 等參數,看看最終摘要風格有什么不同。
  2. 多段合并:如果輸入段落很多,先給每段做摘要,再匯總這些摘要形成二次摘要。
  3. 事實校驗:選一篇有數字、時間等細節的新聞,讓 GPT 做摘要,對比是否和原文對得上。
  4. 多語言嘗試:如果手頭有英文或其他語言文章,看看 T5 或 GPT 會不會“翻車”?
  5. 比較抽取式和生成式:用一些抽取式工具(例如 gensim.summarization.summarize)跟 T5 或 GPT 做對比,體會兩者區別。

7. 總結

“文本摘要”就像是一個能快速為你篩選信息、抓住重點的小能手,不管你是在工作場景、閱讀新聞還是學術領域,都能讓你大大提升閱讀效率。本文介紹了兩條主要“捷徑”:

  1. T5:在 Hugging Face 上直接調包,是個通用又強大的文字處理模型。
  2. OpenAI API:付費獲取高級寫手“GPT”,幾行代碼搞定摘要。

對于零基礎的你,大可不必深陷復雜的數學公式,先把代碼跑起來,試驗一下效果,感受這些工具的神奇之處!等你對它們的能力和局限有了更深了解,再決定要不要繼續挖掘背后的深度學習原理。

祝你在文本摘要的世界里玩得愉快,也歡迎把這份經驗用到更多多語言場景,為低資源語言的自動化處理獻出一份力量!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72238.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法day4 dfs搜索2題

一 糖果 我們看這個藍橋A組真題 首先我們看這個題目說有M種的糖果&#xff0c;K顆一包&#xff0c;N包糖果 第一行就是輸入M&#xff0c;K&#xff0c;N的數量 后面就是輸入每個糖果在每包里面的種類 然后問我們最少要用幾包糖果才可以把所有種類的糖果都吃一遍 如果不可以吃完…

【MySQL】窗口函數詳解(概念+練習+實戰)

文章目錄 前言1. SQL窗口函數 1.1 窗口函數概念1.2 窗口函數語法1.3 常見窗口函數 1.3.1 聚合窗口函數1.3.2 專用窗口函數 1.4 窗口函數性能比較 2. LeetCode 例題 2.1 LeetCode SQL 178&#xff1a;分數排名2.2 LeetCode SQL 184&#xff1a;最高工資2.3 LeetCode SQL 185&am…

【Ai】--- DeepSeek-r1 如何選擇適合自己的版本(超詳細)

在編程的藝術世界里&#xff0c;代碼和靈感需要尋找到最佳的交融點&#xff0c;才能打造出令人為之驚嘆的作品。而在這座秋知葉i博客的殿堂里&#xff0c;我們將共同追尋這種完美結合&#xff0c;為未來的世界留下屬于我們的獨特印記。 【Ai】--- DeepSeek-r1 如何選擇適合自己…

植物大戰僵尸金鏟鏟版 v1.1.6(windows+安卓)

游戲簡介 《植物大戰僵尸金鏟鏟版》是由“古見xzz”、“對不起賤笑了”、“是怪哉吖”等聯合開發的民間魔改版本&#xff0c;融合了原版塔防玩法與《金鏟鏟之戰》的自走棋元素&#xff0c;屬于非官方同人作品。 游戲特點 合成升星機制&#xff1a;三個相同低星植物可合成更高…

網絡空間安全(6)web應用程序技術

前言 Web應用程序技術是指用于開發和構建基于Web的應用程序的技術和工具&#xff0c;涵蓋了前端開發、后端開發、數據庫管理、安全性等多個方面的技術。 一、前端開發技術 HTML/CSS/JavaScript&#xff1a;HTML用于構建網頁結構&#xff0c;CSS用于進行樣式設計&#xff0c;Jav…

零基礎學習OpenGL(一)創建一個窗口

基于 ubuntu 系統&#xff0c;設置基礎環境。 #!/usr/bin/env bashsudo apt-get update# 安裝基礎編譯軟件 sudo apt-get -y install gcc g cmake git# 安裝編譯 glfw 依賴的軟件 sudo apt-get -y install libwayland-dev libx11-dev libxcursor-dev libxi-dev libxinerama-de…

Windows 11 下正確安裝 Docker Desktop 到 D 盤的完整教程

文章目錄 Windows 11 在 D 盤正確安裝 Docker Desktop 的完整教程**前言****準備工作****1. 手動創建 Docker 相關目錄**&#xff08;?? **這一步非常重要**&#xff0c;否則會報錯&#xff09;**2. 下載 Docker Desktop 安裝程序****3. 使用管理員權限打開終端** **安裝 Doc…

版圖自動化連接算法開發 00001 ------ 直接連接兩個給定的坐標點

版圖自動化連接算法開發 00001 ------ 直接連接兩個給定的坐標點 引言正文定義坐標點的類繪圖顯示代碼直接連接兩個坐標點引言 由于人工智能的加速普及,每次手動繪制版圖都會覺得特別繁瑣,作者本人在想可否搞一個自動化連接器件端口的算法,后期可以根據一些設定的限制進行避…

AIP-156 單例資源

編號156原文鏈接AIP-156: Singleton resources狀態批準創建日期2019-05-12更新日期2024-04-15 API有時需要表示在任意上級資源中&#xff0c;始終只存在一個實例的資源。常見的例子是配置對象。 指南 API 可以 定義 單例資源 。單例資源 必須 始終隨上級資源而存在&#xff…

程序詩篇里的靈動筆觸:指針繪就數據的夢幻藍圖(水文,勿三)

大家好啊&#xff0c;我是小象?(?ω?)? 我的博客&#xff1a;Xiao Xiangζ????? 很高興見到大家&#xff0c;希望能夠和大家一起交流學習&#xff0c;共同進步。 這一節我們來學習指針的相關知識&#xff0c;學習內存和地址&#xff0c;指針變量和地址&#xff0c;包…

【實用技巧】RAGFlow+DeepSeek搭建私人Ai助理

前言 滿血版DeepSeek雖然很好用&#xff0c;但仍然有三個主要缺陷&#xff1a; 聯網的DeepSeek無法解決數據安全問題&#xff0c;如果使用&#xff0c;數據將傳輸到其服務器&#xff0c;數據隱私性無法保證。上傳的文件存在限制&#xff0c;無法解決有多個文件的問題。回答的…

Storm實時流式計算系統(全解)——中

storm編程的基本概念-topo-spout-bolt 例如下&#xff1a; storm 編程接口-spout的結構及組件實現 storm編程案例-spout組件-實現 這是我的第一個組件&#xff08;spout組件繼承BaseRichSput&#xff09;所有重寫內部的三個方法&#xff0c;用于接收數據&#xff08;這里數據是…

【tplink】校園網接路由器如何單獨登錄自己的賬號,wan-lan和lan-lan區別

老式路由器TPLINK&#xff0c;接入校園網后一人登錄&#xff0c;所有人都能通過連接此路由器上網&#xff0c;無法解決遂上網搜索&#xff0c;無果&#xff0c;幸而偶然看到一個帖子說要把信號源網線接入路由器lan口&#xff0c;開啟新世界。 一、wan-lan&#xff0c;lan-lan區…

Qt常用控件之旋鈕QDial

旋鈕QDial QDial 表示一個旋鈕控件。 1. QDial屬性 屬性說明value當前數值。minimum最小值。maximum最大值。singleStep按下方向鍵時改變的步長。pageStep按下 pageUp/pageDown 的時候改變的步長。sliderPosition界面上旋鈕顯示的初始位置。tracking外觀是否會跟蹤數值變化&…

微服務筆記 2025/2/15

微服務是一種軟件架構風格&#xff0c;它是以專注于單一職責的很多小型項目為基礎&#xff0c;組合出復雜的大型應用。 微服務是一種架構。 微服務是一種架構。 微服務是一種架構。 以前自己做項目最常用的架構是單體架構。單體項目不適合開發大型項目。 學習微服務技術來解…

7-1JVMCG垃圾回收

一、GC的作用與原理 ?核心功能? 自動識別并回收堆內存中不再被引用的對象&#xff0c;釋放內存空間。 避免手動管理內存的復雜性&#xff08;如C/C中的delete/free操作&#xff09;&#xff0c;降低內存泄漏風險。 ?判斷對象可回收的方法? ?可達性分析算法&#xff1a;…

yunedit-post ,api測試比postman更好

postman應該是大家最熟悉的api測試軟件了&#xff0c;但是由于它是外國軟件&#xff0c;使用它的高端功能注冊和繳費都比較麻煩。生成在線文檔分享也經常無法訪問被攔截掉。 這里可以推薦一下yunedit-post&#xff0c;該有的功能都有。 https://www.yunedit.com/postdetail …

010 rocketmq批量消息

文章目錄 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量發送可以提?發送性能&#xff0c;但有?定的限制&#xff1a; topic 相同 waitStoreMsgOK 相同 &#xff08;?先我們建設消息的iswaitstoremsgoktrue(默認為true), 如果沒有異常,我們將始終收到"O…

6.6.6 嵌入式SQL

文章目錄 2個核心問題識別SQL語句主語言和SQL通信完整導圖 2個核心問題 SQL語句嵌入高級語言需要解決的2個核心問題是&#xff1a;如何識別嵌入語句&#xff1f;如何讓主語言&#xff08;比如C,C語言&#xff09;和SQL通信&#xff1f; 識別SQL語句 為了識別主語言中嵌入的SQL…

Windows安裝sql server2017

看了下官網的文檔&#xff0c;似乎只有ubuntu18.04可以安裝&#xff0c;其他debian系的都不行&#xff0c;還有通過docker的方式安裝的。 雙擊進入下載的ISO&#xff0c;點擊執行可執行文件&#xff0c;并選擇“是” 不要勾選 警告而已&#xff0c;不必理會 至少勾選這兩…