AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


如何微调BERT模型来做文本分类任务?
发布日期:2024-05-22 21:16:01 浏览次数: 2426 来源:PyTorch研习社



情感分析是指利用自然语言处理(NLP)技术判断文本表达的情感。是广泛应用于客户反馈评估,社交媒体情感跟踪和市场研究背后的重要技术。企业和其他组织可以利用文本所表达的情感评估公众舆论,提供改进的客户服务并增加其产品或服务。


BERT 是  Bidirectional Encoder Representations from Transformers 的缩写,它是一种基于 Transformers 架构的开源语言模型。BERT 旨在通过使用周围文本来建立上下文来帮助计算机在文本中理解歧义语言的含义。BERT 的双向性(Bidirectional,阅读给定单词的左和右上下文)在诸如情感分析之类的用例中被证明特别有价值。BERT 使用维基百科的文本进行与训练,并且可以通过问答数据集进行微调。


我们将本文学习如何使用 HuggingFace Transformers 库微调 BERT 来实现自己的情感分析项目。无论您是新手还是现有的 NLP 从业人员,我们都将在本教程中涵盖许多实用的策略和考虑因素,以确保您能够很好地微调 BERT。


 



安装必要的依赖包 




在微调我们的模型之前需要安装一些必要的库。具体来说,我们需要:

  • PyTorch

  • Hugging Face 的 datasets 库

  • Hugging Face 的 transformers 库


我们可以按如下方式进行操作:

pip install transformers torch datasets

okay!



数据预处理




我们需要选择一些用于训练文本分类器的数据。在这里,我们将使用 IMDb 电影评论数据集,这是用于演示情感分析的经典数据集。


我们可以使用 datasets 库加载数据集:

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


我们需要对数据进行标记化(tokenize),为自然语言处理算法做好准备。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']


DataLoaders 有助于在训练过程中有效管理批量数据。以下是我们为训练和验证数据集创建 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)


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

predictions = trainer.predict(valid_dataset)print(predictions)



总结




我们在本文学习了使用 Hugging Face Transformer 微调 BERT 进行情感分析,包括设置环境、数据集准备和标记化、DataLoader 创建、模型加载和训练,以及模型评估和实时模型预测这些步骤。


微调 BERT 进行情感分析在许多现实情况下都很有价值,例如分析客户反馈、跟踪社交媒体语气等等。通过使用不同的数据集和模型,您可以针对自己的自然语言处理项目进行扩展。






53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询