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

Kaggle-Bag of Words Meets Bags of Popcorn-(二分类+NLP+Bert模型)

Bag of Words Meets Bags of Popcorn

题意:

有很多条电影评论记录,问你每一条记录是积极性的评论还是消极性的评论。

数据处理:

1.首先这是文件是zip形式,要先解压,注意sep = ‘\t’。
2.加载预训练的 BERT 分词器 bert-base-uncased,用于将文本转换为模型可接受的输入格式。
3.将 pandas DataFrame 转换为 Hugging Face 的 Dataset 对象,便于与 Transformers 库集成。
4.定义 data_tokenize 函数,使用 BERT 分词器对文本进行分词、填充和截断,最大长度为 512。
5.对训练集、验证集和测试集应用分词函数。
6.将数据集格式设置为 PyTorch 张量,并指定需要使用的列。
7.加载预训练的 BERT 模型 bert-base-uncased,并修改最后一层以适配二分类任务(num_labels=2)。

建立模型:

1.训练参数配置:定义训练参数,包括评估策略、保存策略、学习率、批次大小、训练轮数、权重衰减、日志记录步长、最佳模型加载和保存限制。
2.训练器初始化:定义 Trainer 对象,指定模型、训练参数、训练集、验证集、评估指标和分词器。
3.调用 trainer.train() 开始训练模型。评估模型在验证集上的性能,并打印验证准确率。

代码:
!pip install transformers datasets scikit-learn pandas torch
import os
os.environ["WANDB_DISABLED"] = "true"	
//注意这里要关掉实验跟踪功能,因为本题用了Hugging Face Transformers框架,该框架默认与WANDB集成。import sys
import pandas as pd
import numpy as np
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from datasets import Dataset
from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments
import zipfiledef data_tokenize(data):return tokenizer(data['review'],padding='max_length',truncation=True,max_length=512)def compute_metrics(pred):labels = pred.label_idspreds = pred.predictions.argmax(-1)return {"accuracy": accuracy_score(labels, preds)}if __name__ == '__main__':input_dir = "/kaggle/input/word2vec-nlp-tutorial/"with zipfile.ZipFile(f"{input_dir}labeledTrainData.tsv.zip", "r") as zip_ref:zip_ref.extractall(".")with zipfile.ZipFile(f"{input_dir}testData.tsv.zip", "r") as zip_ref:zip_ref.extractall(".")data_train_pre = pd.read_csv('labeledTrainData.tsv',sep='\t')data_test_pre = pd.read_csv('testData.tsv',sep='\t')X = data_train_pre['review']Y = data_train_pre['sentiment']X = X[:30000]Y = Y[:30000]X_train,X_val,Y_train,Y_val = train_test_split(X,Y,test_size=0.2,random_state=42)tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')data_train = Dataset.from_dict({'review':X_train.tolist(),'label':Y_train.tolist()})data_val = Dataset.from_dict({'review':X_val.tolist(),'label':Y_val.tolist()})data_test = Dataset.from_dict({'review': data_test_pre['review'].tolist()})data_train = data_train.map(data_tokenize,batched=True)data_val = data_val.map(data_tokenize,batched=True)data_test = data_test.map(data_tokenize,batched=True)data_train.set_format(type='torch',columns=['input_ids','attention_mask','label'])data_val.set_format(type='torch',columns=['input_ids','attention_mask','label'])data_test.set_format(type='torch',columns=['input_ids','attention_mask'])bert_model = BertForSequenceClassification.from_pretrained('bert-base-uncased',num_labels=2)training_args = TrainingArguments(eval_strategy="epoch",save_strategy="epoch",learning_rate=3e-5,per_device_train_batch_size=32,per_device_eval_batch_size=32,num_train_epochs=5,weight_decay=0.01,logging_steps=10,load_best_model_at_end=True,metric_for_best_model="accuracy",save_total_limit=2,fp16=True,)trainer = Trainer(model=bert_model,args=training_args,train_dataset=data_train,eval_dataset=data_val,compute_metrics=compute_metrics,tokenizer=tokenizer,)trainer.train()print("val accuracy: ",trainer.evaluate()['eval_accuracy'])Submission = pd.DataFrame({'id': data_test_pre['id'],'sentiment': trainer.predict(data_test).predictions.argmax(-1)})Submission.to_csv("/kaggle/working/submission.csv", index=False)

相关文章:

  • Redis ③-Linux下载Redis
  • 【医学影像 AI】早产儿视网膜病变国际分类(第三版)
  • python中,处理多分类时,模型之间的参数设置
  • 《计算机视觉度量:从特征描述到深度学习》—工业检测大模型RAG白皮书
  • 星露谷物语 7000+ 大型MOD整合包
  • 18-算法打卡-哈希表-两数之和-leetcode(1)-第十八天
  • 从零开始学A2A一:A2A 协议的高级应用与优化
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(7):(1)ながら 一边。。一边 (2)。。。し。。。し。。 又……又……
  • SuperMap iClient3D for WebGL 如何加载WMTS服务
  • 天梯赛DFS合集
  • 网上图书销售系统 UML 状态图解析:触发器事件、动作与监视条件
  • Linux、Kylin OS挂载磁盘,开机自动加载
  • 香港服务器CPU对比:Intel E3与E5系列核心区别与使用场景
  • 珈和科技遥感赋能农业保险创新 入选省级卫星应用示范标杆
  • 前端单元测试实战:如何开始?
  • 为什么代理IP授权后仍连接失败?
  • L1-7 矩阵列平移
  • huggingface模型下载,ollama+fastapi接口
  • QML 自定义组件外观和行为
  • Cables为链上社区树立标杆:专注于实用性、用户主权与全球流动性
  • 黄仁勋结束年内第二次中国行:关键时刻,重申对中国市场承诺
  • 绝境逆转晋级世界杯四强,王楚钦再爆金句:能抽死我就给你了
  • 习近平圆满结束对柬埔寨国事访问
  • 法治课|男子同时与两名女子办婚礼闹剧,是否应受处罚?
  • 上海不重视民企?专家:此次26项措施消除了误会,信心比黄金重要
  • 上海专家绘制迄今为止分辨率最高的“野生稻-栽培稻泛基因组图谱”