如何使用Hugging Face Transformers为情绪分析微调BERT?

news2024/12/24 3:14:36

情绪分析指用于判断文本中表达的情绪的自然语言处理(NLP)技术,它是客户反馈评估、社交媒体情绪跟踪和市场研究等现代应用背后的一项重要技术。情绪可以帮助企业及其他组织评估公众意见、提供改进的客户服务,并丰富产品或服务。

BERT的全称是来自Transformers的双向编码器表示,这是一种语言处理模型,最初发布时通过了解上下文中的单词,提高NLP的先进水平,大大超越了之前的模型。事实证明,BERT的双向性(同时读取特定单词的左右上下文)在情绪分析等用例中特别有价值。

在这篇讲解全面的文章中,您将学会如何使用Hugging Face Transformers库为您自己的情绪分析项目微调BERT。无论您是新手还是现有的NLP从业者,我们都将在这个循序渐进的教程中介绍许多实用的策略和注意事项,以确保您完全能够根据自己的目的适当地微调BERT。

搭建环境

在对模型进行微调之前,需要满足一些必要的先决条件。具体来说,除了至少需要PyTorch和Hugging Face的数据集库外,还需要至少Hugging Face Transformers。您可以这么做。

pip install transformers torch datasets

预处理数据

您将需要选择一些数据来训练文本分类器。在这里,我们将使用IMDb影评数据集,这是用于演示情绪分析的例子之一。不妨接着使用datasets库加载数据集。

from datasets import load_dataset
dataset = load_dataset("imdb")
print(dataset)

我们需要对数据进行标记,以便为自然语言处理算法做好准备。BERT有一个特殊的标记化步骤,确保当一个句子片段被转换时,它会为人类尽可能保持连贯性。不妨看看我们如何使用来自Transformers的BertTokenizer对数据进行标记。

from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
def tokenize_function(examples):
return tokenizer(examples['text'], padding="max_length", truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)

准备数据集

不妨将数据集分成训练集和验证集,以评估模型的性能。以下是我们这么做的方法。

from datasets import train_test_split
train_testvalid = 
tokenized_datasets['train'].train_test_split(test_size=0.2)
train_dataset = train_testvalid['train']
valid_dataset = train_testvalid['test']

数据加载器(DataLoader)有助于在训练过程中有效地管理批量数据。下面我们将为训练数据集和验证数据集创建数据加载器。

from torch.utils.data import DataLoader
train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=8)
valid_dataloader = DataLoader(valid_dataset, batch_size=8)

建立用于微调的BERT模型

我们将使用BertForSequenceClassification类来加载我们的模型,该模型已经为序列分类任务进行了预训练。以下是我们这么做的方法。

from transformers import BertForSequenceClassification, AdamW
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', 
num_labels=2)

训练模型

训练我们的模型包括定义训练循环、指定损失函数、优化器和额外的训练参数。下面是我们设置和运行训练循环的方法。

from transformers import Trainer, TrainingArguments
training_args = TrainingArguments(
output_dir='./results',
evaluation_strategy="epoch",
learning_rate=2e-5,
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=3,
weight_decay=0.01,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=valid_dataset,
)
trainer.train()

评估模型

评估模型包括使用准确性、精度、召回和F1分数等度量指标检查其性能。下面是我们评估模型的方法。

metrics = trainer.evaluate()
print(metrics)

进行预测

经过微调后,我们现在可以使用该模型拿新数据进行预测。下面是我们使用验证集对我们的模型执行推理的方法。

metrics = trainer.evaluate()
print(metrics)

结语

本教程介绍了使用Hugging Face Transformers为情绪分析微调BERT,包括搭建环境、数据集准备和标记化、数据加载器创建、模型加载和训练,以及模型评估和实时模型预测。

为情绪分析微调BERT在许多实际场景下都具有其价值,比如分析客户反馈、跟踪社交媒体情绪等。通过使用不同的数据集和模型,您可以稍加扩展,用于自己的自然语言处理项目。

有关这些主题的更多信息,请查看以下资源:

  • Hugging Face Transformers文档:https://huggingface.co/transformers/
  • PyTorch文档:https://pytorch.org/docs/stable/index.html
  • Hugging Face数据集文档:https://huggingface.co/docs/datasets/

为了更深入地研究这些问题,提高您的自然语言处理和情绪分析能力,这些资源值得研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1870524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【UE5.3】笔记5-蓝图类

什么是蓝图类:其实就是C类,只不过是UE封装好的且可以直接拖出来可视化使用。 如何创建蓝图类?蓝图类有哪些? 蓝图类分为基于关卡的,基于Actor的,基于组件Component的。 基于关卡的蓝图类 一个关卡只能有…

Jupyter Notebook 说明 和 安装教程【WIN MAC】

一、Jupyter Notebook 简介(来源百度百科) Jupyter Notebook(此前被称为 Python notebook)是一个交互式笔记本,支持运行40多种编程语言。 Jupyter Notebook 的本质是一个Web应用程序,便于创建和共享程序文…

综合管廊挂轨巡检机器人:安全高效管理的新力量

综合管廊、电力管廊等作为承载着各类电缆和管线的重要通道,管廊的安全和可靠性对城市的运行至关重要。传统人工巡检效率低、劳动强度大,且可能存在巡检不及时、不准确等问题。难以满足日益复杂和庞大的管廊系统的监控需求。为了解决这些问题,…

物理服务器会不会被DDOS攻击?

物理服务器同样可能遭受分布式拒绝服务(DDoS)攻击。DDoS攻击的目的是通过大量的请求淹没目标服务器或网络,使其无法处理合法用户的请求,从而导致服务不可用。这种攻击并不区分服务器是物理的还是虚拟的,只要服务器连接…

将idea项目代码部署到Linux系统中

目录 1. 将idea与虚拟机建立连接 2. 设置上传到虚拟机的目录 3.上传项目代码 1. 将idea与虚拟机建立连接 打开idea要上传的项目,找到Tools -> Development -> Configuration 设置一个连接的名称,我这里设置为centos 将Type设置为SFTP,点击SSH configuration 开始配…

ComfyUI中运行Stable Audio Open,实现背景音乐、音效自由

🧨背景 stability在一个月之前默默的发布了Stable Audio Open 1.0的音频音效生成模型,不过好像影响力一般,也没有太多文章分享测试,而今天看comfyui作者的一篇介绍文档,他已经让comfyui默认支持了这个模型。 原开源地…

马面裙的故事:汉服如何通过直播电商实现产业跃迁

【潮汐商业评论/原创】 波澜壮阔的千里江山在马面裙的百褶上展开,织金花纹在女性的步伐之间若隐若现,从明清到现代,如今马面裙又流行了回来,成为女性的流行单品,2024年春节期间,马面裙更是成为华夏女孩们的…

RTDETR更换优化器——Lion

RTDETR更换Lion优化器 论文:https://arxiv.org/abs/2302.06675 代码:https://github.com/google/automl/blob/master/lion/lion_pytorch.py 简介: Lion优化器是一种基于梯度的优化算法,旨在提高梯度下降法在深度学习中的优化效果…

ACC:Automatic ECN Tuning for High-Speed Datacenter Networks 相关知识点介绍(一)

目录 ACC(Adaptive Congestion Control) 总结 结合 ACC 和 ECN ECN ECN(Explicit Congestion Notification) 静态 ECN 动态 ECN 对比 总结 FCT——flow completion time 具体解释 小鼠流和大象流 小鼠流(…

【JavaEE进阶】Spring AOP使用篇

目录 1.AOP概述 2.SpringAOP快速入门 2.1 引入AOP依赖 2.2 编写AOP程序 3. Spring AOP详解 3.1 Spring AOP 核心概念 3.1.1切点(Pointcut) 3.1.2 连接点 (Join Point) 3.1.3 通知(Advice) 3.1.4 切面(Aspect) 3.2 通知类型 3.3PointCut 3.4 切面优先级 3.5 切点表…

【Unity设计模式】使用对象池

前言 最近在学习Unity游戏设计模式,看到两本比较适合入门的书,一本是unity官方的 《Level up your programming with game programming patterns》 ,另一本是 《游戏编程模式》 这两本书介绍了大部分会使用到的设计模式,因此很值得学习 本…

NSIS 打包发布 exe 安装包之 配置文件参数说明

一、打包exe教程 详见上期博客:visual studio打包QT工程发布exe安装包 二、参数说明 1、程序图标显示无效问题 在nsi配置文件中找到以下行,分别在尾部追加 “” “$INSTDIR\logo-ico.ico” , logo-ico.ico为程序图标名称,Setup…

Flutter学习目录

学习Dart语言 官网:https://dart.cn/ 快速入门:Dart 语言开发文档(dart.cn/guides) 学习Flutter Flutter生命周期 点击跳转Flutter更换主题 点击跳转StatelessWidget和StatefulWidget的区别 点击跳转学习Flutter中新的Navigato…

基于Java的汽车租赁系统【附源码】

论文题目 设计(论文)综述(1000字) 当今社会,汽车租赁已成为一种受欢迎的出行方式。本文旨在探讨汽车租赁行业的发展趋势、市场规模及其对环境的影响。目前,汽车租赁行业正在经历着快速的发展。随着经济的发…

昇思25天学习打卡营第9天|使用静态图加速

一、简介: AI编译框架分为两种运行模式,分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行,但也支持手工切换为静态图模式。两种运行模式的详细介绍如下: (1)动态图: …

维基百科:12种维基百科推广技术让你成为行业专家

维基百科(Wikipedia)作为全球最大的免费网络百科全书,已经成为人们获取知识的重要源泉之一。对于想要在特定领域成为行业专家的人来说,利用维基百科进行推广是一种非常有效的方式。本文将介绍12种维基百科推广技术,帮助…

奔驰汽车的通信如此固若金汤的原因

随着摄像系统、距离控制、航线保持等功能以及制动辅助系统、制动力分配系统、车身侧倾干预与缓解系统等功能的飞速发展,汽车的系统功能之间已经不再独立,而是呈现互相合作的关系,各功能之间的无缝集成更是各大整车厂追求的目标。俗话说,外练筋骨皮,内练一口气,有了各式安…

alibaba easyexcel 导出excel使用

需求 传统导出&#xff0c;一般都是通过Workbook > Sheet > Row > Cell 获取详细Cell 设置值&#xff0c;比较麻烦&#xff0c;偶然遇到alibaba easyexcel 直接通过注解设置哪些需要导出 哪些忽略&#xff0c;发现特别好用。 pom依赖 <dependency><groupId…

yolov10打包为exe

一、前言 本节实验将官方yolov10推理程序打包为exe运行 二、代码 首先下载官方代码至本机&#xff0c;并使用conda创建虚拟环境&#xff0c;并安装好yolov10所需库 conda create --prefix E:/pyenv/myYolo10 python3.8 pip install -r requirements.txt 下载官方模型权重 …

HarmonyOS Next开发学习手册——内存管理(GC)

GC&#xff08;全称 Garbage Collection&#xff09;&#xff0c;即垃圾回收。在计算机领域&#xff0c;GC就是找到内存中的垃圾&#xff0c;释放和回收内存空间。当前主流编程语言实现的GC算法主要分为两大类&#xff1a;引用计数和对象追踪&#xff08;即Tracing GC&#xff…