训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: 训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类

基础介绍:

Bert模型是一个通用backbone,可以简单理解为一个句子的特征提取工具

更直观来看:我们的自然语言是用各种文字表示的,经过编码器,以及特征提取就可以变为计算机能理解的语言了

下游任务:

提取特征后,我们便可以自定义其他自然语言处理任务了,以下是一个简单的示例(效果可能不好,但算是一个基本流程)

数据格式:

模型训练:

我们来训练处理句子情感分类的模型,代码如下

import torch
from tqdm import tqdm  # 进度条库
from transformers import AdamW  # 优化器
import pandas as pd  # 文件读取
from transformers import BertTokenizer, BertModel  # 导入分词器和模型
# 导入数据
data = pd.read_csv("data/data.csv")
# 定义编码器
token = BertTokenizer.from_pretrained("bert-base-chinese")
# 加载预训练模型
pretrained = BertModel.from_pretrained("bert-base-chinese")
# 创建编码集
encode = []
# 编码句子
for i in tqdm(data["sentence"]):
    out = token.batch_encode_plus(
        batch_text_or_text_pairs=[i],
        truncation=True,
        padding='max_length',
        max_length=17,
        return_tensors='pt',
        return_length=True
    )
    encode.append(out)
# 定义模型
class MODEL(torch.nn.Module):
    def __init__(self):
        super().__init__()  # 确保调用父类构造函数
        self.linear1 = torch.nn.Linear(768, 2)
    def forward(self, input_ids, attention_mask, token_type_ids):
        result = pretrained(input_ids=input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids)
        result = self.linear1(result.last_hidden_state[:, 0])
        result = result.softmax(dim=1)
        return result
# 创建模型对象
model = MODEL()
# 定义优化器
optimizer = AdamW(model.parameters(), lr=5e-4)
# 定义损失函数
criterion = torch.nn.CrossEntropyLoss()
# 模型训练
for i in range(len(encode)):
    out = model(encode[i]["input_ids"], encode[i]["attention_mask"], encode[i]["token_type_ids"])
    loss = criterion(out, torch.LongTensor([data["label"][i]]))
    loss.backward()
    optimizer.step()
    optimizer.zero_grad()
# 模型权重保存
torch.save(model.state_dict(), 'model1_weights.pth')

运行后得到了训练后的模型权重文件

模型使用:

可用以下代码进行判断句子情感

import torch
from transformers import BertTokenizer, BertModel
token = BertTokenizer.from_pretrained('bert-base-chinese')
pretrained = BertModel.from_pretrained('bert-base-chinese')
# 定义模型
class Model(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = torch.nn.Linear(768, 2)
    def forward(self, input_ids, attention_mask, token_type_ids):
        out = pretrained(
            input_ids=input_ids,
            attention_mask=attention_mask,
            token_type_ids=token_type_ids
        )
        out = self.fc(out.last_hidden_state[:, 0])
        out = out.softmax(dim=1)
        return out
model = Model()
# 加载训练好的模型权重
model.load_state_dict(torch.load('model1_weights.pth'))
sentence = ["衣服一点也不好,差评"]
# 编码
o = token.batch_encode_plus(
        batch_text_or_text_pairs=sentence,
        truncation=True,
        padding='max_length',
        max_length=17,
        return_tensors='pt'
    )
out = model(o['input_ids'], o['attention_mask'], o['token_type_ids'])
if out[0][0] > out[0][1]:
    print("好评")
else:
    print("差评")


相关文章
Promptriever:信息检索模型,支持自然语言提示响应用户搜索需求
Promptriever 是一种新型信息检索模型,由约翰斯·霍普金斯大学和 Samaya AI 联合推出。该模型能够接受自然语言提示,并以直观的方式响应用户的搜索需求。通过在 MS MARCO 数据集上的训练,Promptriever 在标准检索任务上表现出色,能够更有效地遵循详细指令,提高查询的鲁棒性和检索性能。
78 6
Promptriever:信息检索模型,支持自然语言提示响应用户搜索需求
昇腾AI行业案例(四):基于 Bert 模型实现文本分类
欢迎学习《昇腾行业应用案例》的“基于 Bert 模型实现文本分类”实验。在本实验中,您将学习如何使用利用 NLP (natural language processing) 领域的AI模型来构建一个端到端的文本系统,并使用开源数据集进行效果验证。为此,我们将使用昇腾的AI硬件以及CANN等软件产品。
48 0
基于深度学习的地面垃圾识别分类技术
AI垃圾分类系统结合深度学习和计算机视觉技术,实现高效、精准的垃圾识别与自动分类。系统集成高精度图像识别、多模态数据分析和实时处理技术,适用于市政环卫、垃圾处理厂和智能回收设备,显著提升管理效率,降低人工成本。
基于深度学习的地面垃圾识别分类技术
探索深度学习中的Transformer模型及其在自然语言处理中的应用
探索深度学习中的Transformer模型及其在自然语言处理中的应用
119 5
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
236 1
探索深度学习在自然语言处理中的应用与挑战
本文深入分析了深度学习技术在自然语言处理(NLP)领域的应用,并探讨了当前面临的主要挑战。通过案例研究,展示了如何利用神经网络模型解决文本分类、情感分析、机器翻译等任务。同时,文章也指出了数据稀疏性、模型泛化能力以及计算资源消耗等问题,并对未来的发展趋势进行了展望。
从零开始构建nlp情感分析模型!
本教程介绍了如何使用PyTorch和Hugging Face的Transformers库构建一个情感分析模型。主要内容包括导入所需库、读取训练数据集、加载预训练的BERT模型和分词器、定义情感数据集类、划分训练集和验证集、创建数据加载器、设置训练参数、训练模型、评估模型性能以及定义和测试预测函数。通过这些步骤,可以实现一个简单而有效的情感分析模型。
447 2

热门文章

最新文章