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

有什么网站可以免费做图seo网站关键词排名优化

有什么网站可以免费做图,seo网站关键词排名优化,蚌埠网站制作公司排名,手机网站需要备案吗基于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://www.dtcms.com/wzjs/43952.html

相关文章:

  • 中国设计最好的网站宁波seo外包服务平台
  • wordpress运行环境seo专业培训中心
  • 网站的惩罚期要怎么做自己建网站怎样建
  • 凡科网站可以做seo优化百度数据研究中心
  • 网站怎么挖掘关键词成人就业技术培训机构
  • 怎样低成本做网站推广上海网站推广服务公司
  • 如何做购物网站推广seo外包公司一般费用是多少
  • 普陀网站建设数字经济发展情况报告
  • 鲅鱼圈做网站网工资页多少钱一个月免费推广方法有哪些
  • 网站平台开发报价表怎么做建站之星官网
  • 网站建设费税率多少腾讯云服务器
  • 医院 网站后台管理河南网站建设制作
  • 石家庄好用的招聘网站seo教程技术
  • 网站制作培训多少钱注册百度账号免费
  • 极简wordpress博客辽阳网站seo
  • 网站建设样式大数据营销策略有哪些
  • 网站建设分析图十大洗脑广告
  • 泰安集团网站建设现在做网络推广都有什么方式
  • 批量扫dedecms做的网站网站建设问一问公司
  • 网站建设公司国内技术最强泰安seo公司
  • 成功案例 品牌网站合肥网站快速排名提升
  • 网页版qq登录入口电脑版seo推广知识
  • 响应式网站的好处天津百度
  • 网络推广网站大全十大经典事件营销案例分析
  • 徐州 商城网站建设本地推广最好用的平台
  • Wordpress+仿站+工具温州网站建设优化
  • 做解析会员电影的网站seo优化靠谱吗
  • asp动态网站开发答案中国软文网官网
  • 青岛网站建设公司怎么样谷歌推广怎么做
  • 西安做网站设计公司hao123网址大全浏览器设为主页