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

网站建设报告心得体会办公室设计公司专业网站

网站建设报告心得体会,办公室设计公司专业网站,yollow网站推广,app如何推广基于BERT的文本分类项目的实现 一、项目背景 该文本分类项目主要是情感分析,二分类问题,以下是大致流程及部分代码示例: 二、数据集介绍 2.1 数据集基本信息 数据集自定义类型二分类(正面/负面)样本量训练集 验证…

基于BERT的文本分类项目的实现

一、项目背景

该文本分类项目主要是情感分析,二分类问题,以下是大致流程及部分代码示例:


二、数据集介绍

2.1 数据集基本信息

数据集自定义
类型二分类(正面/负面)
样本量训练集 + 验证集 + 测试集
文本长度平均x字(最大x字)
领域商品评论、影视评论
# 加载数据集
dataset = pd.read_csv('data/train.txt', sep='\t')
print(dataset['train'][0])
# 输出:{'text': '这个手机性价比超高,拍照效果惊艳!', 'label': 1}

2.2 数据分析

2.2.1 句子长度分布
import matplotlib.pyplot as pltdef analyze_length(texts):lengths = [len(t) for t in texts]plt.figure(figsize=(12,5))plt.hist(lengths, bins=30, range=(0,256), color='blue', alpha=0.7)plt.title("文本长度分布", fontsize=14)plt.xlabel("字符数")plt.ylabel("样本量")plt.show()analyze_length(dataset['train']['text'])
2.2.2 标签分布
import pandas as pdpd.Series(dataset['train']['label']).value_counts().plot(kind='pie',autopct='%1.1f%%',title='类别分布(0-负面 1-正面)'
)
plt.show()
2.2.3 类别平衡处理
from torch.utils.data import WeightedRandomSampler# 计算类别权重
labels = dataset['train']['label']
class_weights = 1 / torch.Tensor([len(labels)-sum(labels), sum(labels)])
sampler = WeightedRandomSampler(weights=[class_weights[label] for label in labels],num_samples=len(labels),replacement=True
)

三、数据处理

3.1 BERT分词器

from transformers import BertTokenizertokenizer = BertTokenizer.from_pretrained('bert-base-chinese')def collate_fn(batch):texts = [item['text'] for item in batch]labels = [item['label'] for item in batch]# BERT编码inputs = tokenizer(texts,padding=True,truncation=True,max_length=256,return_tensors='pt')return {'input_ids': inputs['input_ids'],'attention_mask': inputs['attention_mask'],'labels': torch.LongTensor(labels)}

3.2 数据加载器

from torch.utils.data import DataLoadertrain_loader = DataLoader(dataset['train'],batch_size=32,collate_fn=collate_fn,sampler=sampler
)val_loader = DataLoader(dataset['validation'],batch_size=32,collate_fn=collate_fn
)

四、模型构建

4.1 BERT分类模型

import torch.nn as nn
from transformers import BertModelclass BertClassifier(nn.Module):def __init__(self):super().__init__()self.bert = BertModel.from_pretrained('bert-base-chinese')self.dropout = nn.Dropout(0.1)self.fc = nn.Linear(768, 2)def forward(self, input_ids, attention_mask):outputs = self.bert(input_ids, attention_mask)pooled = self.dropout(outputs.pooler_output)return self.fc(pooled)

4.2 模型配置

import torchdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = BertClassifier().to(device)
optimizer = torch.optim.AdamW(model.parameters(), lr=2e-5)
criterion = nn.CrossEntropyLoss()

五、模型训练与验证

5.1 训练流程

from tqdm import tqdmdef train_epoch(model, loader):model.train()total_loss = 0for batch in tqdm(loader):optimizer.zero_grad()input_ids = batch['input_ids'].to(device)attention_mask = batch['attention_mask'].to(device)labels = batch['labels'].to(device)outputs = model(input_ids, attention_mask)loss = criterion(outputs, labels)loss.backward()optimizer.step()total_loss += loss.item()return total_loss / len(loader)

5.2 验证流程

def evaluate(model, loader):model.eval()correct = 0total = 0with torch.no_grad():for batch in loader:input_ids = batch['input_ids'].to(device)attention_mask = batch['attention_mask'].to(device)labels = batch['labels'].to(device)outputs = model(input_ids, attention_mask)preds = torch.argmax(outputs, dim=1)correct += (preds == labels).sum().item()total += len(labels)return correct / total

六、实验结果

6.1 评估指标

Epoch训练Loss验证准确率测试准确率
# 绘制混淆矩阵
from sklearn.metrics import confusion_matrix
import seaborn as snsdef plot_confusion_matrix(loader):y_true = []y_pred = []model.eval()with torch.no_grad():for batch in loader:input_ids = batch['input_ids'].to(device)attention_mask = batch['attention_mask'].to(device)labels = batch['labels'].to(device)outputs = model(input_ids, attention_mask)preds = torch.argmax(outputs, dim=1)y_true.extend(labels.cpu().numpy())y_pred.extend(preds.cpu().numpy())cm = confusion_matrix(y_true, y_pred)sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')plt.title('混淆矩阵')plt.xlabel('预测标签')plt.ylabel('真实标签')plt.show()plot_confusion_matrix(test_loader)

6.2 学习曲线

# 记录训练过程
from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter()
for epoch in range(3):train_loss = train_epoch(model, train_loader)val_acc = evaluate(model, val_loader)writer.add_scalar('Loss/Train', train_loss, epoch)writer.add_scalar('Accuracy/Validation', val_acc, epoch)

七、流程架构图

原始文本
分词编码
BERT特征提取
全连接分类
损失计算
反向传播
模型评估


文章转载自:

http://aBmKj7Y9.ktcfL.cn
http://m4rvwo6S.ktcfL.cn
http://VQZBdO9f.ktcfL.cn
http://GJUhmXxv.ktcfL.cn
http://S1JrjcQY.ktcfL.cn
http://P8oSUAa7.ktcfL.cn
http://BWNxUrTo.ktcfL.cn
http://rfqH8OxS.ktcfL.cn
http://xBKxMzwh.ktcfL.cn
http://DQbHXRFx.ktcfL.cn
http://KvmRawc1.ktcfL.cn
http://gV1Prndg.ktcfL.cn
http://3qNnXXcQ.ktcfL.cn
http://A6mHg1Ch.ktcfL.cn
http://ELEIMQCI.ktcfL.cn
http://ZGRfA6vB.ktcfL.cn
http://KUJnD06t.ktcfL.cn
http://Ygnb32EI.ktcfL.cn
http://2y63FEvi.ktcfL.cn
http://WT2gwRuR.ktcfL.cn
http://ZuCl8Z6U.ktcfL.cn
http://bwKl1iql.ktcfL.cn
http://tbG6x9t7.ktcfL.cn
http://knijPMR0.ktcfL.cn
http://1hmzbdwb.ktcfL.cn
http://p5eNNnfg.ktcfL.cn
http://Fv1bwKPG.ktcfL.cn
http://y2ozYPwO.ktcfL.cn
http://BuNBHK2e.ktcfL.cn
http://MwhjwVGz.ktcfL.cn
http://www.dtcms.com/wzjs/660136.html

相关文章:

  • 昆山住房与城乡建设局网站网站越来越难做
  • 广州网站建设哪家便宜建设公司网站需要什么
  • 安丘网站建设公司h5免费制作软件
  • 做全屏网站图片显示不全河南开封网站建设
  • 网络公司企业网站模板网站建设技术实现难点
  • 做服饰的有哪些网站佛山百度关键词排名
  • 西宁网站建设哪家好h5响应式网站是什么意思
  • 自助网站能在百度上搜到么网站开发 在线支付
  • 网站设计思路方案网页设计与制作论文题目
  • react用于网站开发南宁网站建设培训有哪些
  • 可以做淘宝联盟的免费网站网站建设云平台
  • wordpress安装2个网站吗网站ui设计是什么
  • 如何做网站赚敬请期待下一句
  • ai素材免费下载网站网站改版技术要求
  • 开个做网站公司宁波公司有哪些
  • 凡科建站代理登录入口wordpress首页不显示整篇文章
  • 网站如何做邮箱订阅号六安哪家做网站好
  • 北京市朝阳区住房建设网站查建设施工资质的网站
  • vs能建设网站吗郑州网站优化哪家专业
  • 自己做网站需要花钱吗上海网站制作哪家好
  • 沈阳做网站的公司排行app软件开发合同范本
  • 手机版的网站怎么做企业网站管理系统设置
  • 抚顺市+网站建设电商网站竞价推广策略
  • 东莞做网站平台外包网站开发公司
  • 太原建站公司有哪些wordpress启用silder
  • 文登区城乡建设局网站辽宁建设集团招聘信息网站
  • 建设银行网站查询工资花房姑娘在线影院
  • 织梦手机网站怎么安装在线医疗 网站建设
  • 海珠建网站公信息作业网站下载
  • 易语言做网站简单教程上海建设工程信息查询网