nullskymc / blogcomments

MIT License
0 stars 0 forks source link

使用微调BERT进行情感分类任务 #16

Open nullskymc opened 5 months ago

nullskymc commented 5 months ago

https://nullskymc.cloud/Bert1/

PPT网址

https://bert-r9hswwn.gamma.site/

情感分析模型微调与评估

本文档展示了如何使用BERT模型进行中文情感分析的微调与评估。包括数据准备、模型微调、模型评估等步骤。

  1. 导入所需库

首先,我们需要导入相关的Python库和模块。

import torch from transformers import AutoTokenizer, AutoModel, AdamW from torch.utils.data import DataLoader, Dataset, random_split import pandas as pd from tqdm import tqdm import random from transformers import BertForSequenceClassification

  1. 下载预训练的BERT模型

使用 modelscope 下载预训练的中文BERT模型。

from modelscope import snapshot_download model_dir = snapshot_download('tiansz/bert-base-chinese')

  1. 加载预训练模型和分词器

加载预训练的BERT模型和分词器。

tokenizer = AutoTokenizer.from_pretrained(model_dir) model = BertForSequenceClassification.from_pretrained(model_dir)

注意:加载模型时,会有一些警告提示某些权重未初始化,这是正常的,因为我们需要对模型进行微调。

  1. 定义数据集类

定义一个 SentimentDataset 类来处理情感分析的数据集。

class SentimentDataset(Dataset): def init(self, dataframe, tokenizer, max_length=128): self.dataframe = dataframe self.tokenizer = tokenizer self.max_length = max_length

def __len__(self):
    return len(self.dataframe)

def __getitem__(self, idx):
    text = self.dataframe.iloc[idx]['review']  # 使用标签索引
    label = 1 if self.dataframe.iloc[idx]['label'] == 1 else 0  # 使用标签索引
    encoding = self.tokenizer(text, padding='max_length', truncation=True, max_length=self.max_length, return_tensors='pt')
    return {
        'input_ids': encoding['input_ids'].flatten(),
        'attention_mask': encoding['attention_mask'].flatten(),
        'labels': torch.tensor(label, dtype=torch.long)
    }
  1. 读取和处理数据

读取训练数据文件,并将其处理为数据集对象。

with open(

nullskymc commented 5 months ago

init