当前位置: 首页 > news >正文

【AI】使用 Hugging Face Transformers 进行文本摘要实现

【AI】使用 Hugging Face Transformers 进行文本摘要实现

推荐超级课程:

  • 本地离线DeepSeek AI方案部署实战教程【完全版】
  • Docker快速入门到精通
  • Kubernetes入门到大师通关课
  • AWS云服务快速入门实战

目录

  • 【AI】使用 Hugging Face Transformers 进行文本摘要实现
    • Hugging Face Transformers 概述
    • 为什么选择 `google/pegasus-cnn_dailymail` 模型?
    • 先决条件
    • 数据摄取
    • 数据验证
    • 数据转换
    • 模型训练
    • 模型评估
    • 预测
    • 结论

我们将构建一个用于总结摘要的模型
在这里插入图片描述

文本摘要是 Hugging Face Transformers 提供的一个强大功能。它允许我们从大量文本中生成简洁的摘要。这在处理大量文本数据并需要以简短易读的格式提取核心思想时特别有用。

Hugging Face Transformers 概述

transformers 库是 TensorFlow 2.0 和 PyTorch 上的最先进的自然语言处理 (NLP) 库。它提供了数千个预训练模型来执行文本上的各种任务,如分类、信息提取、摘要、翻译、文本生成等。
利用预训练模型可以显著降低计算成本,节省宝贵的时间和资源,这些资源和时间原本会用于从头开始训练模型。这些模型支持跨不同模态的各种任务,包括自然语言处理 (NLP)、计算机视觉、音频和多模态任务。
在本教程中,我们将使用 google/pegasus-cnn_dailymail 模型。

为什么选择 google/pegasus-cnn_dailymail 模型?

Pegasus 模型是在 CNN/DailyMail 数据集上训练的,专为抽象文本摘要而设计。CNN/DailyMail 数据集是文本摘要任务的流行选择。
这个模型标识符可以使用 Hugging Face Transformers 库提供的 from_pretrained 方法来加载预训练模型。

model = "google/pegasus-cnn_dailymail"  
  
tokenizer = AutoTokenizer.from_pretrained(model)  
model_pegasus = AutoModelForSeq2SeqLM.from_pretrained(model).to(device)

先决条件

在开始之前,请确保已安装必要的库。在终端中运行以下命令:

pip install transformers[sentencepiece] datasets sacrebleu rouge_score py7zr -q  
pip install --upgrade accelerate  
pip uninstall -y transformers accelerate  
pip install transformers accelerate

accelerate 库是一个轻量级的解决方案,用于在多种类型的硬件上训练和部署机器学习模型。它提供了一个简单的 API,用于将模型训练卸载到 GPU,并且与 PyTorch 和 TensorFlow 兼容。
本教程需要以下 Python 库:

from transformers import pipeline, set_seed  
from datasets import load_dataset, load_from_disk, load_metric  
import matplotlib.pyplot as plt  
from datasets import load_dataset  
import pandas as pd  
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer  
import nltk  
from nltk.tokenize import sent_tokenize  
from tqdm import tqdm  
import torch  
nltk.download("punkt")  
  
from transformers import DataCollatorForSeq2Seq  
from transformers import TrainingArguments, Trainer

load_dataset:这是 datasets 库提供的一个函数,允许您加载一个数据集。您可以使用它从 Hugging Face Hub 或本地文件加载数据集。
load_from_disk:这是 datasets 库提供的一个函数,允许您加载已保存到磁盘的数据集。如果您的数据集太大,无法全部加载到内存中,这可能会很有用,因为 datasets 库使用内存映射,允许您在不将整个数据集加载到内存的情况下加载数据集。
AutoModelForSeq2SeqLM:这用于将一个序列转换为另一个长度相同的序列的任务(例如,翻译、摘要、文本生成)。
AutoTokenizer:这用于对文本进行标记化。
如果您有 GPU,您可以选择使用 CUDA 来执行训练和评估过程。如果没有 GPU,系统将默认使用 CPU。

device = "cuda" if torch.cuda.is_available() else "cpu"

数据摄取

首先,我们需要从 Hugging Face 下载 SamSum 数据集。您可以使用以下链接下载它:
samsum · Hugging Face 上的数据集
下载后,解压数据并使用 load_from_disk 库加载数据集。记得指定数据集的路径。

dataset_samsum = load_from_disk('samsum_dataset')  
dataset_samsum
 def download_file():  
        if not os.path.exists(local_data_file):  
            filename, headers = request.urlretrieve(  
                url = source_URL,  
                filename = local_data_file  
            )  
      
    def extract_zip_file():  
        unzip_path = unzip_dir  
        os.makedirs(unzip_path, exist_ok = True)  
        with zipfile.ZipFile(local_data_file, 'r') as zip_ref:  
            zip_ref

相关文章:

  • (2)VTK C++开发示例 --- 绘制多面锥体
  • 预防WIFI攻击,保证网络安全
  • 《植物大战僵尸融合版v2.4.1》,塔防与创新融合的完美碰撞
  • RHCE第五章:NFS服务器
  • 前端操作document的小方法,主要功能-获取当前页面全部的a标签页,并根据链接中必要的字段进行判断,然后把这些链接放入iframe去打开
  • 【Windows】系统安全移除移动存储设备指南:告别「设备被占用」弹窗
  • UE5蓝图实现打开和关闭界面、退出
  • 使用人工智能大模型腾讯元宝,如何快速些成果申报书?
  • C/C++基础
  • 基于 DB、EAST、SAST 的文本检测算法详解及应用综述
  • VSCode写java时常用的快捷键
  • 【KWDB 创作者计划】_产品技术解读_2
  • 如何分析 JVM OOM 内存溢出 Dump 快照日志
  • ​印太贸易新轴心成型:澳新领衔的“关税破壁行动“​
  • VUE项目中的package.json中的启动脚本
  • 深入浅出:Seata 分布式事务管理器的部署与安装实战指南
  • CAP应用
  • 大模型之Transformers , PyTorch和Keras
  • 【Python爬虫】简单案例介绍2
  • iOS 设备配置和描述文件管理
  • 长三角议事厅·周报|服务业扩大开放:长三角六城联动新探索
  • 徐之凯评《突如其来的勇气》|早熟的抵抗
  • “你是做什么的?”——人们能否对工作说不?
  • 跑马,一场对机器人的长测试
  • 95后男中音胡斯豪敲开芝加哥抒情歌剧院大门
  • 观察|智驾监管升级挤掉宣传水分,行业或加速驶入安全快车道