使用BART模型和T5模型實現文本改寫

BART模型

BART(Bidirectional and Auto-Regressive Transformers)是由 Facebook AI Research(FAIR)在 2019 年提出的序列到序列(seq2seq)預訓練模型,論文發表于《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》。

它結合了 BERT 的雙向編碼器 和 GPT 的自回歸解碼器,專為文本生成任務(如摘要、翻譯、對話)設計,同時在理解任務(如分類、問答)上也表現優異。

BART 通過靈活的預訓練任務和統一的編解碼架構,成為生成與理解任務的通用基礎模型,尤其適合需要同時處理輸入理解和輸出生成的場景。

核心特點

架構:標準 Transformer 編解碼器

  • 編碼器:雙向 Transformer(類似 BERT),理解上下文。

  • 解碼器:自回歸 Transformer(類似 GPT),從左到右生成文本。

  • 參數規模:從 BART-Base(140M)到 BART-Large(400M)。

預訓練任務:文本破壞與還原(Denoising Autoencoder) 通過多種噪聲破壞輸入文本,再讓模型還原原始文本,提升生成與理解能力:

  • Token Masking(類似 BERT):隨機遮蓋詞(如 [MASK])。

  • Token Deletion:隨機刪除詞,需還原位置和內容。

  • Text Infilling:用單個 [MASK] 替換連續片段(如 SpanBERT),需生成缺失片段。

  • Sentence Permutation:打亂句子順序,需重排。

  • Document Rotation:隨機選擇詞作為開頭,需還原原文起始點。

微調靈活性:可直接用于下游任務:

  • 生成任務:摘要(CNN/DailyMail)、對話、翻譯(需多語言預訓練)。

  • 理解任務:文本分類、問答(將輸入編碼,解碼為答案)。

推理示例代碼:

from transformers import BertTokenizer, BartForConditionalGeneration, Text2TextGenerationPipelineclass ChineseBart:def __init__(self):model_path = "/path/to/bart-base-chinese"self.load_model(model_path)def load_model(self, model_path):# 加載一個中文BART模型(假設已經有微調好的改寫模型權重)self.tokenizer = BertTokenizer.from_pretrained(model_path)self.model = BartForConditionalGeneration.from_pretrained(model_path)self.text2text_generator = Text2TextGenerationPipeline(self.model, self.tokenizer, device=0)  def rewrite_text(self, text):# text = "機器學習模型在圖像識別領域取得了突破性的進展。"# 構造輸入(BART可以直接輸入文本)ret = self.text2text_generator(text, max_length=512, do_sample=False)if len(ret) > 0:rewritten_texts = []for obj in ret:ret_text = obj.get('generated_text').replace(" ", "")rewritten_texts.append(ret_text)rewritten_text = "\n\n".join(rewritten_texts)print("改寫結果:", rewritten_text)return rewritten_textreturn text

T5模型

T5(Text-to-Text Transfer Transformer)是 Google Research 在 2019 年提出的統一文本到文本框架,論文發表于《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》。它將所有 NLP 任務(翻譯、摘要、問答、分類等)統一為“文本輸入 → 文本輸出”的范式,通過大規模預訓練 + 微調實現通用能力。

核心特點

統一框架:所有任務都是 Text-to-Text

  • 輸入和輸出均為純文本,無需任務特定架構。
  • 任務前綴:通過在輸入前加提示詞區分任務,例如:

translate English to German: ...

summarize: ...

cola sentence: ...(分類任務輸出acceptableunacceptable)。

架構:標準 Encoder-Decoder Transformer

  • 完全基于原始 Transformer(Vaswani et al., 2017),未做架構創新。
  • 規模:從 T5-Small(60M)到 T5-11B(110億參數,最大版本)。

預訓練任務:Span Corruption(改進的 MLM)

  • 類似 BERT 的掩碼語言模型(MLM),但連續片段(span)被掩碼(平均長度3),需解碼器還原。
  • 預訓練數據:C4(Colossal Clean Crawled Corpus),750GB cleaned English text。

微調靈活性

  • 單任務微調:針對特定任務(如翻譯)微調。
  • 多任務微調:混合多個任務前綴聯合訓練(如翻譯+摘要+QA)。
  • 零樣本/少樣本:通過任務前綴泛化到新任務(如未微調的數學題)。

推理示例代碼:

from transformers import T5Tokenizer, T5ForConditionalGenerationclass ChineseT5:def __init__(self):print("ChineseT5")model_path = "/path/to/flan-t5-base"self.load_model(model_path)def load_model(self, model_name):# 加載一個中文T5模型(假設已經有微調好的改寫模型權重)self.tokenizer = T5Tokenizer.from_pretrained(model_name, legacy=False)self.model = T5ForConditionalGeneration.from_pretrained(model_name)def rewrite_text(self, input_text):# 構造輸入(添加適當的前綴)input_text = "rewrite: " + input_textinput_ids = self.tokenizer(input_text, return_tensors="pt").input_idsoutputs = self.model.generate(input_ids)if len(outputs) > 0:rewritten_text = self.tokenizer.decode(outputs[0])print("改寫結果:", rewritten_text)return rewritten_textreturn input_text

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

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

相關文章

電商前端Nginx訪問日志收集分析實戰

使用FileBeatLogstashES實現分布式日志收集 在大型項目中 ,往往服務都是分布在非常多不同的機器上 ,每個機器都會打印自己的log日志 但是 ,這樣分散的日志 ,本來就無法進行整體分析。再加上微服務的負載均衡體系 ,甚至…

TwinCAT3示例項目1

目錄一、需求分析二、程序編寫1.實現1盞燈的自控(IF、TOF)2. 添加模式控制(Case、枚舉)3. 添加多盞燈(FOR、數組)4. 添加多組燈(二維數組)END項目結合了,FB,I…

如何在 VMware Workstation 虛擬機中利用 Nvidia 顯卡的硬件加速功能

這篇文章詳細介紹了如何在 VMware Workstation 虛擬機中利用 Nvidia 顯卡的硬件加速功能,通過 PCI 設備直通(Pass-Through)技術將顯卡分配給虛擬機使用: 在 VMware Workstation 虛擬機中利用 Nvidia 顯卡的硬件加速功能 1. 檢查…

設計模式(二十二)行為型:策略模式詳解

設計模式(二十二)行為型:策略模式詳解策略模式(Strategy Pattern)是 GoF 23 種設計模式中最具實用性和廣泛影響力的行為型模式之一,其核心價值在于定義一系列算法或行為,并將每個算法封裝到獨立…

AI+向量化

要理解 Java 如何結合 AI 與向量化,我們需要從向量化的核心概念、AI 中向量化的作用、Java 生態中的實現工具以及具體實踐案例四個維度展開。以下是詳細解析:一、核心概念:向量化與 AI 的關系向量化(Vectorization)是將…

Bootstap Vue 之b-form-radio-group 不顯示選中狀態問題

代碼類似&#xff1a;<b-form-radio-groupclass"mt-2"required:disabled"dfrmDisabled"v-model"childDikeForm.SafetyAppraisalRank":options"[一, 二, 三, 四]"name"rankradioopt"></b-form-radio-group>經過測…

Shell 腳本實戰:基于 for 循環的批量操作三例(賬戶創建、網絡檢測與密碼管理)

一、編寫腳本for1.sh,使用for循環創建20賬戶&#xff0c;賬戶名前綴由用戶從鍵盤輸入&#xff0c;賬戶初始密碼由用戶輸入&#xff0c;例如:test1、test2、test3、......、test10實現思路通過read命令獲取用戶輸入的賬戶前綴和初始密碼&#xff1b;加入非空校驗&#xff1a;若前…

PBR技術

一 、PBR的概述1.定義策略路由&#xff1a; PBR 是一種覆蓋路由器默認路由決策機制的技術。它允許管理員根據策略&#xff08;而不僅僅是目標地址&#xff09;來設置數據包的下一跳 IP 地址、出站接口、IP 優先級/DSCP 值等。路由策略&#xff1a;是指在路由器或三層設備上&…

STM32-ESP8266Wi-Fi模塊使用USART實現通信/創建AP和STA模式配置教程(寄存器版)

本章思維導圖&#xff1a;ESP8266WIFI模塊簡介ESP8266 是一款由樂鑫科技推出的低成本、高性能 Wi-Fi 模塊&#xff0c;廣泛應用于物聯網和嵌入式開發領域。WIFI的頻段5G和2.4G2.4G Wi-Fi與5G Wi-Fi最本質的區別即工作頻段&#xff08;無線電波的頻率&#xff09;不一樣&#xf…

算法26. 刪除有序數組中的重復項

給你一個 非嚴格遞增排列 的數組 nums &#xff0c;請你 原地 刪除重復出現的元素&#xff0c;使每個元素 只出現一次 &#xff0c;返回刪除后數組的新長度。元素的 相對順序 應該保持 一致 。然后返回 nums 中唯一元素的個數。 考慮 nums 的唯一元素的數量為 k &#xff0c;你…

ROS2中傳輸樣條曲線

在ROS2中傳輸樣條曲線需要解決兩個核心問題&#xff1a;**如何結構化表示曲線數據**和**如何高效傳輸**。以下是一套完整方案&#xff0c;結合自定義消息設計、序列化優化和QoS配置實現可靠傳輸&#xff1a;---### &#x1f4d0; 一、定義樣條曲線的自定義消息 樣條曲線通常由控…

Win11怎樣安裝DirectX 9

通過微軟官方下載安裝&#xff1a;確認系統兼容性并準備&#xff1a;確保顯卡驅動為最新版本&#xff0c;因為 DirectX 與顯卡驅動程序緊密相關。同時&#xff0c;可暫時關閉防病毒軟件和防火墻&#xff0c;防止其干擾安裝過程。下載安裝程序&#xff1a;訪問微軟官方網站下載 …

RAGFLOW~Enable RAPTOR

Enable RAPTOR 一種遞歸抽象方法&#xff0c;用于長上下文知識檢索和摘要&#xff0c;在廣泛語義理解和細微細節之間取得平衡。 RAPTOR&#xff08;遞歸抽象處理用于樹狀組織檢索&#xff09;是一種在2024年論文中引入的增強文檔預處理技術。它旨在解決多跳問答問題&#xff0c…

【機器人+相機通訊】宇樹科技相機通信

https://github.com/unitreerobotics/xr_teleoperate/blob/main/README_zh-CN.md 相機驅動與服務端 https://github.com/unitreerobotics/xr_teleoperate/blob/main/teleop/image_server/image_server.py 其中相機如果是realsense, 安裝好驅動后&#xff0c;可以使用命令查看…

機械學習中的一些優化算法(以邏輯回歸實現案例來講解)

一、混淆矩陣混淆矩陣是機器學習中評估分類模型性能的重要工具&#xff0c;尤其適用于二分類或多分類任務。它通過展示模型預測結果與實際標簽的匹配情況&#xff0c;幫助理解模型的錯誤類型&#xff08;如假陽性、假陰性等&#xff09;。以下通過二分類場景為例&#xff0c;結…

龍蜥受邀參加2025開放計算技術大會,解碼基礎模型驅動下的系統創新與生態共建

開放計算技術大會由全球最大的開放計算社區 OCP 發起&#xff0c;是開放計算領域生態覆蓋最廣且最具影響力的亞洲年度技術盛會。本屆大會由 OCP 與 OCTC&#xff08;中國電子工業標準化技術協會開放計算標準工作委員會&#xff09;兩大開放組織聯合主辦&#xff0c;將于 8 月 7…

第三階段—8天Python從入門到精通【itheima】-140節(pysqark實戰——基礎準備)

目錄 140節——pysqark實戰——基礎準備 1.學習目標 2.pysqark庫的安裝 3.pyspark的路徑安裝問題 一、為什么不需要指定路徑&#xff1f; 二、如何找到 pyspark 的具體安裝路徑&#xff1f; 三、驗證一下&#xff1a;直接定位 pyspark 的安裝路徑 四、總結&#xff1a;記…

數據庫中使用SQL作分組處理01(簡單分組)

1.簡單分組GroupBy什么就Select什么SELECT Name,Score From StudentScore GROUP BY Name,Score2.聚合函數(MAX SUM AVG COUNT)&#xff08;1&#xff09;計算1.表的全部字段都可以用聚合函數&#xff0c;但是篩選聚合函數的結果要用Having關鍵字2.聚合函數默認排除Null值IDName…

Linux基本服務——web服務解析

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 目錄 Web服務解析 虛擬Web主機 Web目錄訪問控制 Web服務解析 用途&#xff1a;基于 B/S 架構提供網頁的服務端程序 應用層協議&#xff1a;HTTP&#xff08;TCP 80…

深入理解緩存淘汰策略:LRU vs LFU 完全解析

深入理解緩存淘汰策略&#xff1a;LRU vs LFU 完全解析 文章目錄深入理解緩存淘汰策略&#xff1a;LRU vs LFU 完全解析前言一、基礎概念解析1.1 LRU&#xff08;Least Recently Used&#xff09;- 最近最少使用1.2 LFU&#xff08;Least Frequently Used&#xff09;- 最少使用…