如何使用uer做多分类任务

如何使用uer做多分类任务

语料集下载
在这里插入图片描述
找到这里点击即可
里面是这有json文件的
在这里插入图片描述
因此我们对此要做一些处理,将其转为tsv格式

# -*- coding: utf-8 -*-
import json
import csv
import chardet# 检测文件编码
def detect_encoding(file_path):with open(file_path, 'rb') as f:raw_data = f.read()return chardet.detect(raw_data)['encoding']# 输入文件名
input_file = './datasets/iflytek/train.json'
# 输出文件名
output_file = './datasets/iflytek/train.tsv'# 检测输入文件的编码格式
file_encoding = detect_encoding(input_file)# 打开输入的 JSON 文件和输出的 TSV 文件
with open(input_file, 'r', encoding=file_encoding) as json_file, open(output_file, 'w', newline='', encoding='utf-8') as tsv_file:# 准备 TSV 写入器tsv_writer = csv.writer(tsv_file, delimiter='\t')# 写入表头(列表['label', 'label_des', 'sentence']中要注意根据json文件中的键值做更换)tsv_writer.writerow(['label', 'label_des', 'sentence'])# 逐行读取 JSON 文件for line in json_file:try:# 解析每一行的 JSON 数据json_data = json.loads(line.strip())# 写入到 TSV 文件中,(列表['label', 'label_des', 'sentence']中要注意根据json文件中的键值做更换)tsv_writer.writerow([json_data['label'], json_data['label_des'], json_data['sentence']])except json.JSONDecodeError as e:print(f"无法解析的行: {line.strip()}")print(f"错误信息: {e}")print(f"JSON 文件已成功转换为 TSV 文件,输入文件编码: {file_encoding}")

接着呢要把所有tsv文件的sentence表头名改成text_a,不然运行uer框架会报错,原因请看源代码逻辑

def read_dataset(args, path):dataset, columns = [], {}with open(path, mode="r", encoding="utf-8") as f:for line_id, line in enumerate(f):if line_id == 0:for i, column_name in enumerate(line.rstrip("\r\n").split("\t")):columns[column_name] = icontinueline = line.rstrip("\r\n").split("\t")tgt = int(line[columns["label"]])if args.soft_targets and "logits" in columns.keys():soft_tgt = [float(value) for value in line[columns["logits"]].split(" ")]if "text_b" not in columns:  # Sentence classification.text_a = line[columns["text_a"]]src = args.tokenizer.convert_tokens_to_ids([CLS_TOKEN] + args.tokenizer.tokenize(text_a) + [SEP_TOKEN])seg = [1] * len(src)else:  # Sentence-pair classification.text_a, text_b = line[columns["text_a"]], line[columns["text_b"]]src_a = args.tokenizer.convert_tokens_to_ids([CLS_TOKEN] + args.tokenizer.tokenize(text_a) + [SEP_TOKEN])src_b = args.tokenizer.convert_tokens_to_ids(args.tokenizer.tokenize(text_b) + [SEP_TOKEN])src = src_a + src_bseg = [1] * len(src_a) + [2] * len(src_b)if len(src) > args.seq_length:src = src[: args.seq_length]seg = seg[: args.seq_length]if len(src) < args.seq_length:PAD_ID = args.tokenizer.convert_tokens_to_ids([PAD_TOKEN])[0]src += [PAD_ID] * (args.seq_length - len(src))seg += [0] * (args.seq_length - len(seg))if args.soft_targets and "logits" in columns.keys():dataset.append((src, tgt, seg, soft_tgt))else:dataset.append((src, tgt, seg))return dataset

这里规定好了表头名只有label,text_a,text_b
搞完之后进入训练代码,我的显存只有16G,因此

python finetune/run_classifier.py --pretrained_model_path models/cluecorpussmall_roberta_wwm_large_seq512_model.bin --vocab_path models/google_zh_vocab.txt --config_path models/bert/large_config.json --train_path datasets/iflytek/train.tsv --dev_path datasets/iflytek/dev.tsv --output_model_path models/iflytek_classifier_model.bin --epochs_num 3 --batch_size 16 --seq_length 128

在这里插入图片描述
在这里插入图片描述
这里可以看到只有61.49的正确率,其实是因为显存还不够,训练不了那么大的,标准的参数应该设置为batch_size=32 seq_length=256
有能力的可以更改参数进行训练
接着来预测

python inference/run_classifier_infer.py --load_model_path models/iflytek_classifier_model.bin --vocab_path models/google_zh_vocab.txt --config_path models/bert/large_config.json --test_path datasets/iflytek/test.tsv --prediction_path datasets/iflytek/prediction.tsv --seq_length 256 --labels_num 119

在这里插入图片描述
最后自行查看预测效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/41813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vatee万腾平台:智能生活的新选择

在科技飞速发展的今天&#xff0c;智能生活已经不再是遥不可及的梦想&#xff0c;而是逐渐渗透到我们日常生活的方方面面。Vatee万腾平台&#xff0c;作为智能科技领域的佼佼者&#xff0c;正以其创新的技术、丰富的应用场景和卓越的用户体验&#xff0c;成为智能生活的新选择&…

dc/dc_shell的keep和donot touch区别

donot touch和keep的区别 在半导体设计和综合工具中&#xff0c;donottouch 和 keep 属性通常用于指定综合和布局阶段的特定要求。sizeonly 是 keep 属性的一个可能值。以下是 donottouch 和 keep 属性以及 sizeonly 的区别和用途&#xff1a; donottouch&#xff1a; donotto…

rsync使用教程

1、rsync是什么 rsync是一个在Unix/Linux环境下常用的工具,Windows上可以通过一些替代工具或者使用Cygwin环境来实现类似的功能。Cygwin在安装过程中,选择需要安装的组件时确保选择了rsync和openssh(如果需要通过SSH连接到其他服务器进行备份)。rsync的简单使用如下: rs…

如何引流到私域最有效?

引流到私域最有效的方法通常包括以下几个策略&#xff1a; 1、内容营销&#xff1a; 优质内容创作&#xff1a;制作有价值、有吸引力的内容&#xff0c;如文章、视频、图文等&#xff0c;吸引用户关注。 SEO优化&#xff1a;通过搜索引擎优化&#xff0c;提高内容在搜索引擎…

带流水线的持续连接详解

流水线&#xff08;Pipeline&#xff09;的持续连接在网络编程中通常指的是一种能够保持连接持续开放&#xff0c;并允许多个请求在同一个连接上连续发送和接收的技术。这种技术在HTTP/1.1和其他一些网络协议中有应用&#xff0c;目的是提高网络通信效率和性能。HTTP的默认模式…

C++| STL之string

前言&#xff1a;最近在做LeetCode算法题&#xff0c;C字符串通常都是string作为输入&#xff0c;所以补充一下STL里面string。在介绍的具体使用的时候&#xff0c;会补充char字符串相关的进行对比。 string 创建大小和容量遍历字符串比较插入字符拼接字符串分配内存查找截取分…

Java 注入的几种方式

构造函数注入&#xff1a;构造函数注入是最常见的一种依赖注入方式。通过在组件的构造函数中接受依赖参数&#xff0c;并将其保存在私有字段中&#xff0c;可以实现依赖注入。这种方式简单直接&#xff0c;适用于必须的依赖和不变的依赖场景。 public class UserserviceImpl im…

vue学习笔记(购物车小案例)

用一个简单的购物车demo来回顾一下其中需要注意的细节。 先看一下最终效果 功能&#xff1a; &#xff08;1&#xff09;全选按钮和下面的商品项的选中状态同步&#xff0c;当下面的商品全部选中时&#xff0c;全选勾选&#xff0c;反之&#xff0c;则不勾选。 &#xff08…

51单片机嵌入式开发:2、STC89C52操作GPIO口LED灯

STC89C52操作GPIO口LED灯 1 芯片介绍1.1 芯片类型1.2 芯片系列说明 2 GPIO引脚寄存器说明3 GPIO操作3.1 GPIO输入3.2 GPIO输出3.3 GPIO流水灯3.4 Protues仿真 4 总结 1 芯片介绍 1.1 芯片类型 芯片采用宏晶科技品牌下的STC89C52RC单片机 选择STC89C52RC系列STC89C58RD系列单片…

Pycharm远程连接GPU(内容:下载安装Pycharm、GPU租借、配置SSH、将代码同步到镜像、命令行操控远程镜像、配置远程GPU解释器)

目录 windows下载安装pycharmGPU租借网站AutoDlfeaturize好易智算 GPU租借GPU选择选择镜像充值 然后创建镜像创建成功 复制SSH登录信息 远程进入镜像 在Pycharm中进行ssh连接新建SFTP配置SSH复制ssh根据复制的信息填写ssh配置测试连接 将代码同步到远程镜像上设置mappings将本地…

大语言模型与知识图谱结合发展方向

引言 在人工智能的发展历程中&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现标志着一个重要的转折点。随着深度学习技术的突破和计算能力的提升&#xff0c;LLM以其前所未有的规模和复杂性&#xff0c;开启了迈向人工通用智能&#xff08;AGI&#xff09;的新浪潮。…

STM32利用FreeRTOS实现4个led灯同时以不同的频率闪烁

在没有接触到FreeRTOS时&#xff0c;也没有想过同时叫两个或两个以上的led灯闪烁的想法&#xff0c;接触后&#xff0c;发现如果想叫两个灯同时以不同的频率闪烁&#xff0c;不能说是不可能&#xff0c;就算是做到了也要非常的麻烦。但是学习了FreeRTOS后&#xff0c;发现要想同…

使用WinSCP工具连接Windows电脑与Ubuntu虚拟机实现文件共享传输

一。环境配置 1.首先你的Windows电脑上安装了VMware虚拟机&#xff0c;虚拟机装有Ubuntu系统&#xff1b; 2.在你的windows电脑安装了WinSCP工具&#xff1b; 3.打开WinSCP工具默认是这样 二。设置WinSCP连接 打开WinSCP&#xff0c;点击新标签页&#xff0c;进入到如下图的…

(杂文)参加WAIC 2024 所思所感

受华为广办的邀请&#xff0c;在领导要求下&#xff0c; 我还是在这个炎热的暑假通过一个接近凌晨两点落地的飞机连夜从北京来到了上海&#xff0c;去“睁眼看世界”。 区别于纯学术会议和CCF类的会议&#xff0c;WAIC 更加的平易近人&#xff0c;有更多的工业界同行&#xff…

【学术会议征稿】2024年工业自动化与机器人国际学术会议(IAR 2024)

2024年工业自动化与机器人国际学术会议&#xff08;IAR 2024&#xff09; 2024 International Conference on Industrial Automation and Robotics 2024年工业自动化与机器人国际学术会议&#xff08;IAR 2024&#xff09;将于2024年10月18-20日在新加坡隆重召开。会议将围绕…

三丰云评测:免费虚拟主机与免费云服务器的全面对比

三丰云是一家知名的互联网服务提供商&#xff0c;专注于虚拟主机和云服务器的服务。在互联网技术日新月异的今天&#xff0c;选择一个优质的云服务提供商至关重要。本次评测将重点对比三丰云的免费虚拟主机和免费云服务器&#xff0c;帮助用户更好地选择适合自己需求的服务。首…

0 TMS320F28379D 开坑

开坑原因 最近开始做实验&#xff0c;实验室的主控采用的是F2812FPGA&#xff0c;属于够用但不好用的状态。FPGA用于生成调制信号&#xff0c;DSP完成采样和控制。师兄师姐研究拓扑及调制策略&#xff0c;对驱动数量以及驱动逻辑有比较高的要求&#xff0c;因此不好脱离FPGA&a…

CVE-2023-30212(xss漏洞)

简介 OURPHP版本<7.2.0存在XSS漏洞&#xff0c;攻击路径为/client/manage/ourphp_out.php。 过程 打开靶场 访问攻击路径/client/manage/ourphp_out.php 得到flag{354c7c41-cc23-4de5-be73-79cbbf384aba}

Multisim仿真-交流数字电压表

下图为整体的原理框图&#xff0c;交流电源经过整流滤波电路转换后&#xff0c;送入模数转换电路&#xff0c;经译码给到显示电路&#xff0c;由其显示交流电源的有效值。 信号发生器XFG1输出正弦波信号(峰峰值)&#xff0c;XMM1测量有效值&#xff0c;U6数码管显示有效值。仿真…

Linux下python抓取动态网页内容

一、背景 现在大部分网站的数据都是异步加载的&#xff0c;直接抓取是没办法获取到你想要的数据。必须要借助浏览器(无头浏览器,下面会搭建这个环境)来加载其javascript渲染数据后&#xff0c;你所需要的数据这时才呈现。 二、环境搭建 1、Centos7 默认有 python2.7版本 查…