【HuggingFace Transformer库学习笔记】基础组件学习:Datasets

基础组件——Datasets

在这里插入图片描述
在这里插入图片描述

datasets基本使用

在这里插入图片描述

导入包

from datasets import *

加载数据

datasets = load_dataset("madao33/new-title-chinese")
datasetsDatasetDict({train: Dataset({features: ['title', 'content'],num_rows: 5850})validation: Dataset({features: ['title', 'content'],num_rows: 1679})
})

加载数据集合集中的某一项子集

boolq_dataset = load_dataset("super_glue", "boolq")
boolq_datasetDatasetDict({train: Dataset({features: ['question', 'passage', 'idx', 'label'],num_rows: 9427})validation: Dataset({features: ['question', 'passage', 'idx', 'label'],num_rows: 3270})test: Dataset({features: ['question', 'passage', 'idx', 'label'],num_rows: 3245})
})

按照数据集划分进行加载

dataset = load_dataset("madao33/new-title-chinese", split="train")
datasetDataset({features: ['title', 'content'],num_rows: 5850
})
dataset = load_dataset("madao33/new-title-chinese", split="train[10:100]")
datasetDataset({features: ['title', 'content'],num_rows: 90
})
dataset = load_dataset("madao33/new-title-chinese", split="train[:50%]")
datasetDataset({features: ['title', 'content'],num_rows: 2925
})
dataset = load_dataset("madao33/new-title-chinese", split=["train[:50%]", "train[50%:]"])
dataset[Dataset({features: ['title', 'content'],num_rows: 2925}),Dataset({features: ['title', 'content'],num_rows: 2925})]

查看数据集

datasets = load_dataset("madao33/new-title-chinese")
datasetsDatasetDict({train: Dataset({features: ['title', 'content'],num_rows: 5850})validation: Dataset({features: ['title', 'content'],num_rows: 1679})
})

查看某一个数据

datasets["train"][0]{'title': '望海楼是危险的赌博','content': '近期妥善处理)'}

查看某一些数据

datasets["train"][:2]{'title': ['望海楼是危险的赌博'],'content': ['撒打发是','在推进“双一流”高校建设进程中']}

查看列名

datasets["train"].column_names['title', 'content']

查看列属性

{'title': Value(dtype='string', id=None),'content': Value(dtype='string', id=None)}

数据集划分
可使用train_test_split这个函数

dataset = datasets["train"]
dataset.train_test_split(test_size=0.1)		# 按测试集比例为10%划分DatasetDict({train: Dataset({features: ['title', 'content'],num_rows: 5265})test: Dataset({features: ['title', 'content'],num_rows: 585})
})

对于分类任务,指定标签字段,然后让这个数据集均衡划分标签字段

dataset = boolq_dataset["train"]
dataset.train_test_split(test_size=0.1, stratify_by_column="label")     # 分类数据集可以按照比例划分DatasetDict({train: Dataset({features: ['question', 'passage', 'idx', 'label'],num_rows: 8484})test: Dataset({features: ['question', 'passage', 'idx', 'label'],num_rows: 943})
})

数据选取与过滤

# 选取
datasets["train"].select([0, 1])Dataset({features: ['title', 'content'],num_rows: 2
})
# 过滤
## 传入一个lambda函数,让其只取含有中国的数据
filter_dataset = datasets["train"].filter(lambda example: "中国" in example["title"])
filter_dataset["title"][:5]['世界探寻中国成功秘诀','信心来自哪里','世界减贫跑出加速度','和音瞩目历史交汇点','风采感染世界']

数据映射

def add_prefix(example):example["title"] = 'Prefix: ' + example["title"]return example
prefix_dataset = datasets.map(add_prefix)	# 每个title数据前面添加了前缀
prefix_dataset["train"][:10]["title"]['Prefix: 危险的','Prefix: 大力推进高校治理能力建设','Prefix: 坚持事业为上选贤任能','Prefix: “大朋友”的话儿记心头','Prefix: 用好可持续发展这把“金钥匙”','Prefix: 跨越雄关,我们走在大路上','Prefix: 脱贫奇迹彰显政治优势','Prefix: 拱卫亿万人共同的绿色梦想','Prefix: 育人育才','Prefix: 净化网络语言']
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
def preprocess_function(example, tokenizer=tokenizer):model_inputs = tokenizer(example["content"], max_length=512, truncation=True)labels = tokenizer(example["title"], max_length=32, truncation=True)# label就是title编码的结果model_inputs["labels"] = labels["input_ids"]return model_inputs
processed_datasets = datasets.map(preprocess_function)	# 添加了分类标签
processed_datasetsDatasetDict({train: Dataset({features: ['title', 'content', 'input_ids', 'token_type_ids', 'attention_mask', 'labels'],num_rows: 5850})validation: Dataset({features: ['title', 'content', 'input_ids', 'token_type_ids', 'attention_mask', 'labels'],num_rows: 1679})
})
processed_datasets = datasets.map(preprocess_function, batched=True)	# 使用批处理
processed_datasetsDatasetDict({train: Dataset({features: ['title', 'content', 'input_ids', 'token_type_ids', 'attention_mask', 'labels'],num_rows: 5850})validation: Dataset({features: ['title', 'content', 'input_ids', 'token_type_ids', 'attention_mask', 'labels'],num_rows: 1679})
})

去除某一字段

processed_datasets = datasets.map(preprocess_function, batched=True, remove_columns=datasets["train"].column_names)
processed_datasetsDatasetDict({train: Dataset({features: ['input_ids', 'token_type_ids', 'attention_mask', 'labels'],num_rows: 5850})validation: Dataset({features: ['input_ids', 'token_type_ids', 'attention_mask', 'labels'],num_rows: 1679})
})

保存与加载

# 保存
processed_datasets.save_to_disk("./processed_data")
# 加载
processed_datasets = load_from_disk("./processed_data")

加载本地数据集

# 加载本地csv文件
dataset = load_dataset("csv", data_files="./ChnSentiCorp_htl_all.csv", split="train")
datasetDataset({features: ['label', 'review'],num_rows: 7766
})
dataset = Dataset.from_csv("./ChnSentiCorp_htl_all.csv")
datasetDataset({features: ['label', 'review'],num_rows: 7766
})

加载文件夹内全部文件作为数据集

# 使用data_dir加载全部文件夹内文件
dataset = load_dataset("csv", data_dir="./all_data/", split='train')
datasetDataset({features: ['label', 'review'],num_rows: 23298
})
# 使用data_files加载文件夹内指定文件
dataset = load_dataset("csv", data_files=["./all_data/ChnSentiCorp_htl_all.csv", "./all_data/ChnSentiCorp_htl_all copy.csv"], split='train')
datasetDataset({features: ['label', 'review'],num_rows: 15532
})

通过其他方式读取数据,再将其转换成datasets

import pandas as pddata = pd.read_csv("./ChnSentiCorp_htl_all.csv")
data.head()

在这里插入图片描述

dataset = Dataset.from_pandas(data)
datasetDataset({features: ['label', 'review'],num_rows: 7766
})
# List格式的数据需要内嵌{},明确数据字段
data = [{"text": "abc"}, {"text": "def"}]
# data = ["abc", "def"]
Dataset.from_list(data)Dataset({features: ['text'],num_rows: 2
})

通过自定义加载脚本加载数据集

 load_dataset("json", data_files="./cmrc2018_trial.json", field="data")DatasetDict({train: Dataset({features: ['title', 'paragraphs', 'id'],num_rows: 256})
})
dataset = load_dataset("./load_script.py", split="train")
dataset
dataset[0]{'id': 'TRIAL_800_QUERY_0','context': '基于《跑跑卡丁车》与《泡泡堂》上所开发的游戏,由韩国Nexon开发与发行。中国大陆由盛大游戏运营,这是Nexon时隔6年再次授予盛大网络其游戏运营权。台湾由游戏橘子运营。玩家以水枪、小枪、锤子或是水炸弹泡封敌人(玩家或NPC),即为一泡封,将水泡击破为一踢爆。若水泡未在时间内踢爆,则会从水泡中释放或被队友救援(即为一救援)。每次泡封会减少生命数,生命数耗完即算为踢爆。重生者在一定时间内为无敌状态,以踢爆数计分较多者获胜,规则因模式而有差异。以2V2、4V4随机配对的方式,玩家可依胜场数爬牌位(依序为原石、铜牌、银牌、金牌、白金、钻石、大师) ,可选择经典、热血、狙击等模式进行游戏。若游戏中离,则4分钟内不得进行配对(每次中离+4分钟)。开放时间为暑假或寒假期间内不定期开放,8人经典模式随机配对,采计分方式,活动时间内分数越多,终了时可依该名次获得奖励。','question': '生命数耗完即算为什么?','answers': {'text': ['踢爆'], 'answer_start': [127]}}

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

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

相关文章

【图形学】探秘图形学奥秘:DDA与Bresenham算法的解密与实战

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《图形学 | 图像解码》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 ​ 目录 🌌1. 初识模式识别…

AUTOSAR从入门到精通-Autosar 中断机制(六)

目录 知识储备 安全机制的程序流监控 看门狗在autosar 架构中位置 看门狗在autosar中简单流程

VMware workstation安装debian-12.1.0虚拟机并配置网络

VMware workstation安装debian-12.1.0虚拟机并配置网络 Debian 是一个完全自由的操作系统!Debian 有一个由普罗大众组成的社区!该文档适用于在VMware workstation平台安装debian-12.1.0虚拟机。 1.安装准备 1.1安装平台 Windows 11 1.2软件信息 软…

Nodejs软件安装​

Nodejs软件安装​ 一、简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 官网:http://nodejs.cn/api/ 我们关注于 node.js 的 npm 功能,NPM 是随同 NodeJS 一起安装的包管理工具,JavaScript-NPM,Java-Maven&…

Redis命令 - Strings命令组常用命令

1、Set命令 SET key value [EX seconds] [PX milliseconds] [NX|XX]1.1 参数说明: EX seconds: 设置key的过期时间,单位时秒PX milliseconds: 设置key的过期时间,单位时毫秒NX: 只有key不存在的时候,才会设置key的值XX: 只有key…

花了三天的时间做了一个多功能 AI 助手

嗨!我是团子,大家新年快乐呀~ 前几天看到一些好朋友在朋友圈晒自己的年度总结,立新年 Flag,看到大家一年满满的收获,再看看自己,不由得想再看看人家,然后再看看自己,然后再看看人家…

Vue学习计划-Vue3--核心语法(九)slot插槽

【slot】 插槽&#xff1a;简单说就是父组件内部使用了子组件&#xff0c;但是子组件内部某些结构需要使用者自行定义&#xff0c;此时就需要用到插槽实现 默认插槽 默认插槽的name是default 父组件 <template><div><Child><h3>默认插槽</h3>&…

MAVROS的进一步理解

一、Mavros简介 顾名思义&#xff0c; mavros就是mavlinkros。mavros是PX4官方提供的一个运行于ros下收发mavlink消息的工具&#xff0c;利用mavros可以发送mavlink消息给飞控(可以控制飞机)&#xff0c;并且可以从飞控中接受数据(例如&#xff1a;飞控的位置速度 IMU数据等等…

阿里云服务器ECS介绍_高性能云服务器_为了无法计算的价值

阿里云高性能云服务器60%单实例最大性能提升&#xff0c;35Gbps内网带宽&#xff0c;网络增强&通用型云服务器、本地SSD型云服务器、大数据型云服务器、GPU异构型云服务器&#xff0c;阿里云百科aliyunbaike.com分享阿里云高性能云服务器&#xff1a; 阿里云高性能云服务器…

大模型实战营Day4 作业

基础作业&#xff1a; 构建数据集&#xff0c;使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手&#xff0c;效果如下图所示&#xff0c;本作业训练出来的模型的输出需要将不要葱姜蒜大佬替换成自己名字或昵称&#xff01; 微调前&#xff08;回答比较…

LMDeploy 的量化和部署

LMDeploy 的量化和部署 文档&#xff1a;https://github.com/InternLM/tutorial/blob/vansin-patch-4/lmdeploy/lmdeploy.md 视频&#xff1a;https://www.bilibili.com/video/BV1iW4y1A77P 一、模型量化 大模型参数量很大&#xff0c;运行起来非常消耗显存和内存&#xff0c;…

Python 基于Open3D的点云均匀下采样算法

目录 一、算法概述二、代码示例三、测试示例一、算法概述 点云均匀下采样算法:是在保持点云关键特征的前提下,减少点云数据的数量。 算法流程: 首先使用o3d.io.read_point_cloud函数读取点云数据。然后,使用uniform_down_sample函数进行均匀下采样,将点云数据按照指定的采…

MySQL修炼手册8:约束与完整性:保证数据的一致性

目录 写在开头1 主键与唯一键约束1.1 PRIMARY KEY约束的作用1.2 主键的复合使用1.3 主键的修改与删除1.4 UNIQUE约束的应用场景1.5 主键与唯一键约束的性能影响1.6 主键的自动增长1.7 主键的最佳实践1.8 独特性与业务需求1.9 避免过度使用唯一约束1.10 主键与唯一键的关系 2 外…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第三天-UDP编程练习题(物联技术666)

网盘链接:https://pan.baidu.com/s/1TKdHdeuDI8XPaakepvSLZQ?pwd=1688 提取码:1688 利用UDP实现双人不同机器聊天(服务器可以被多人连接,显示多人聊天记录) //-------------------------服务器 #include <string.h> #include <sys/types.h> #include <…

VCG 网格布尔运算

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 Mesh布尔操作是一种在三维计算机图形学中用于组合两个或多个网格(mesh)对象的方法。它可以将两个网格对象组合成一个新的对象,同时保留原始对象的拓扑结构和几何信息。Mesh布尔操作主要有以下三种类型: Union(…

爱这个世界,从爱自己开始

亲爱的月月&#xff1a; 早上十点叫你起床&#xff0c;你仍睡意朦胧&#xff0c;今天的网课看样又得加班加点到凌晨。昨晚你大半夜跑完步后&#xff0c;涮火锅、麻辣肚、吃冷饮后闹肚子不停&#xff0c;你妈心疼地照顾你时&#xff0c;你勇敢地微笑着对我们说“肉体不就是拿来…

android gradle编译问题记录

1、gradle下载太慢 有时候即便配置了国内镜像下载gradle也是慢的一批&#xff0c;可以手动下载gradle文件配置到项目中,比如我下载了一个新项目&#xff0c;它的gradle版本是gradle-4.1-all&#xff0c;进入项目时它会开始下载gradle&#xff0c;此时gradle目录中会创建gradle…

[NSSCTF Round#16 Basic] CPR

打着玩玩&#xff0c;比赛很简单。 Crypto pr 一个RSA题&#xff0c;n1p*q,n2q*r给了两个c和p,r而且flag经过pad用单因子无法解出。分别用p,r解完再取crt from Crypto.Util.number import * import randomflagplaintext NSSCTF{****************} charset abcdefghijklmn…

【DP】931. 下降路径最小和

题目 法1&#xff1a;标准DP class Solution {public int minFallingPathSum(int[][] matrix) {if (matrix.length 0 || matrix[0].length 0) {return 0;}int m matrix.length, n matrix[0].length;int[][] dp new int[m][n]; // 到达i,j的最小路径和int min Integer.M…