使用数据集工具

news2024/11/18 22:56:22

一.数据集工具介绍
HuggingFace通过API提供了统一的数据集处理工具,它提供的数据集如下所示:

该界面左侧可以根据不同的任务类型、类库、语言、License等来筛选数据集,右侧为具体的数据集列表,其中有经典的glue、super_glue数据集,问答数据集squad,情感分类数据集imdb,纯文本数据集wikitext等。进入sgugger/glue-mrpc数据集页面,可看到对该数据集的相关介绍,如下所示:

二.使用数据集工具
1.数据集加载和保存
以加载seamew/ChnSentiCorp数据集为例,在线加载如下所示:

#第3章/加载数据集
from datasets import load_dataset
dataset = load_dataset(path='seamew/ChnSentiCorp')
print(dataset)

load_dataset()函数的定义为:

def load_dataset(
    path: str,
    name: Optional[str] = None,
    data_dir: Optional[str] = None,
    data_files: Optional[Union[str, Sequence[str], Mapping[str, Union[str, Sequence[str]]]]] = None,
    split: Optional[Union[str, Split]] = None,
    cache_dir: Optional[str] = None,
    features: Optional[Features] = None,
    download_config: Optional[DownloadConfig] = None,
    download_mode: Optional[Union[DownloadMode, str]] = None,
    verification_mode: Optional[Union[VerificationMode, str]] = None,
    ignore_verifications="deprecated",
    keep_in_memory: Optional[bool] = None,
    save_infos: bool = False,
    revision: Optional[Union[str, Version]] = None,
    use_auth_token: Optional[Union[bool, str]] = None,
    task: Optional[Union[str, TaskTemplate]] = None,
    streaming: bool = False,
    num_proc: Optional[int] = None,
    storage_options: Optional[Dict] = None,
    **config_kwargs,
) -> Union[DatasetDict, Dataset, IterableDatasetDict, IterableDataset]:

重点介绍几个参数,比如使用path指定数据集,name指定数据子集,split指定要加载的数据部分:

#第3章/加载glue数据集
dataset = load_dataset(path='glue', name='sst2', split='train')
print(dataset)

2.将数据集保存到本地磁盘

#第3章/将数据集保存到磁盘
dataset.save_to_disk(dataset_dict_path='./data/ChnSentiCorp')

3.从本地磁盘加载数据集

#第3章/从磁盘加载数据集
from datasets import load_from_disk
dataset = load_from_disk('./data/ChnSentiCorp')

4.取出数据部分

#使用train数据子集做后续的实验
dataset = dataset['train']

5.查看数据内容

#第3章/查看数据样例
for i in [12, 17, 20, 26, 56]:
    print(dataset[i])

6.数据排序
使用sort()函数让数据按照某个字段排序:

#第3章/排序数据
#数据中的label是无序的
print(dataset['label'][:10])
#让数据按照label排序
sorted_dataset = dataset.sort('label')
print(sorted_dataset['label'][:10])
print(sorted_dataset['label'][-10:])

7.打乱数据
使用shuffle()函数打乱数据:

#第3章/打乱数据顺序
shuffled_dataset=sorted_dataset.shuffle(seed=42)
shuffled_dataset['label'][:10]

8.数据抽样
使用select()函数从数据集中选择某些数据,然后组装成一个数据子集:

#第3章/从数据集中选择某些数据
dataset.select([0, 10, 20, 30, 40, 50])

9.数据过滤
使用filter()函数可以按照自定义的规则过滤数据:

#第3章/过滤数据
def f(data):
    return data['text'].startswith('非常不错')
dataset.filter(f)

10.训练测试集拆分
可以使用train_test_split()函数将数据集切分为训练集和测试集:

#第3章/切分训练集和测试集
dataset.train_test_split(test_size=0.1)

11.数据分桶
使用shared()函数把数据均匀地分为n部分:

#第3章/数据分桶
dataset.shard(num_shards=4, index=0)

其中,num_shards表示要把数据均匀地分为几部分,index表示要取出第几份数据。
12.重命名字段
使用rename_column()函数可以重命名字段:

#第3章/字段重命名
dataset.rename_column('text', 'text_rename')

13.删除字段
使用remove_columns()函数可以删除字段:

#第3章/删除字段
dataset.remove_columns(['text'])

14.映射函数
使用map()函数遍历数据,并且对每条数据都进行修改:

#第3章/应用函数
def f(data):
    data['text'] = 'My sentence: ' + data['text']
    return data
maped_datatset = dataset.map(f)
print(dataset['text'][20])
print(maped_datatset['text'][20])

15.使用批处理加速

#第3章/使用批处理加速
def f(data):
    text=data['text']
    text=['My sentence: ' + i for i in text]
    data['text']=text
    return data
maped_datatset=dataset.map(function=f, batched=True, batch_size=1000, num_proc=4)
print(dataset['text'][20])
print(maped_datatset['text'][20])

16.设置数据格式
使用set_format()函数修改数据格式:

#第3章/设置数据格式
dataset.set_format(type='torch', columns=['label'], output_all_columns=True)
print(dataset[20])

其中,type表示要修改的数据类型(numpy|torch|tensorflow|pandas等),columns表示要修改格式的字段,output_all_columns表示是否要保留其它字段,设置为True表示保留。
17.将数据保存为CSV格式

#第3章/导出为CSV格式
dataset = load_dataset(path='seamew/ChnSentiCorp', split='train')
dataset.to_csv(path_or_buf='./data/ChnSentiCorp.csv')
#加载CSV格式数据
csv_dataset = load_dataset(path='csv', data_files='./data/ChnSentiCorp.csv', split='train')
print(csv_dataset[20])

18.保存数据为JSON格式

#第3章/导出为JSON格式
dataset=load_dataset(path='seamew/ChnSentiCorp', split='train')
dataset.to_json(path_or_buf='./data/ChnSentiCorp.json')
#加载JSON格式数据
json_dataset=load_dataset(path='json', data_files='./data/ChnSentiCorp.json', split='train')
print(json_dataset[20])

参考文献:
[1]《HuggingFace自然语言处理详解:基于BERT中文模型的任务实战》
[2]https://huggingface.co/datasets/seamew/ChnSentiCorp

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

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

相关文章

Unity | HDRP高清渲染管线学习笔记:材质系统Lit着色器

目录 一、Lit着色器 1. Surface Options 2. Surface Inputs(表面输入) 3. Transparency Inputs 二、HDRP渲染优先级 我们可以把现实世界中的物体分成不透明物体和透明物体(其中包括透明或者半透明)。在实时渲染时&#xff0c…

Debian二次开发网关支持Docker+RS485+网口

随着物联网技术的不断发展,瑞芯微边缘计算网关作为一种集成多种接口和功能的智能网关,逐渐成为了物联网领域中的热门产品。本文将详细介绍瑞芯微边缘计算网关的特点和优势,并探讨其在实际应用中的广泛应用。 瑞芯微Linux系统边缘计算网关是一…

【Java】 Java 私有接口方法的使用

本文仅供学习参考! 相关教程地址: https://www.baeldung.com/java-interface-private-methods https://www.geeksforgeeks.org/private-methods-java-9-interfaces/ https://www.runoob.com/java/java9-private-interface-methods.html 接口是定义一组方…

java之路—— SpringMVC的常用注解解析以及作用、应用

创作不易,真的希望能给个免费的小 文章目录 1、Controller2、RequestMapping3.GetMapping、PostMapping、PutMapping、DeleteMapping4. RequestParam5.PathVariable6.RequestHeader7.CookieValue8.RequestBody9.ResponseBody10.SessionAttribute11.ControllerAdvice…

二层、三层交换机是什么?有什么区别?

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解二层交换机和三层交换机是什么,以及他们的区别。 目录 一、二层交换机是什么? 二、二层交换机的主…

本地生活多城市合伙人系统开发

本地生活多城市合伙人项目是一种基于本地生活服务的创业项目,旨在为各个城市的居民提供方便、实惠、高品质的生活服务。该项目通过招募多个城市的合伙人,建立完整的本地生活服务平台和供应链体系,覆盖不同类型的本地生活服务,如餐…

Nginx的Rewrite(地址重定向)

目录 前言 一、Rewrite 跳转场景 二、Rewrite 跳转实现 三、Rewrite实际场景 3.1Nginx跳转需求的实现方式 3.2rewrite放在 server{},if{},location{}段中 3.3对域名或参数字符串 四、Rewrite正则表达式 五、Rewrite语法格式 5.1rewrite语法格式…

互联网常见架构接口压测性能分析及调优手段建议

目录 互联网常见架构接口压测性能分析及调优手段建议 1 接口名称: 获取列表 1.1 压测现象:单台tps700多,应用cpu高负载 1.1.1 问题分析: 1.1.2 改进措施: 1.1.3 改进效果: 1.2 压测现象:数据库资源利用率高 1.2.1 问题分析: 1.2.2 改进措施: 1.2.3 改…

SciencePub学术 | 计算机科学类重点SCIEEI征稿中

SciencePub学术 刊源推荐:计算机科学类重点SCIE&EI征稿中!信息如下,录满为止: 一、期刊概况: 计算机科学类重点SCIE&EI 【期刊简介】IF:3.0-3.5,JCR 2区,中科院4区; 【检…

使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图

大家好,我是带我去滑雪! 一幅精美的科研绘图会有诸多益处,精美的图像可以更好地传达研究结果和数据分析的重要信息。通过使用清晰、直观和易于理解的图像,可以更好地向读者展示研究的发现,有助于读者理解和解释数据。还…

JAVA开发(记一次504 gateway timeout错误排查过程)

一、问题与背景: 最近在发布一个web项目,在测试环境都是可以的,发布到生产环境通过IP访问也是可以的,但是通过域名访问就出现504 gateway timeout。通过postman去测试接口也是一样。ip和端口都可以通,域名却不行&…

如何在矩池云上运行 AI 图像编辑工具 DragGAN

5 月,DragGAN 横空出世,在开源代码尚未公布前,就在Github上斩获近 20000 Star,彼时,页面上只有效果图和一句“Code will be released in June”,然而这也足够带给人们无限期待。 在6月末,在若干…

SpringBoot最多可以处理多少个请求?

SpringBoot最多可以处理多少个请求? SpringBoot夺命连环14问,1天刷完别人半个月的springboot面试内容,比啃书效果好多了!_哔哩哔哩_bilibili 最小线程数:最少的厨师的量,饭店人不多的时候的量。 最大线程数…

微信可以自动跟圈的软件有吗?

对于许多人而言,每日发朋友圈已成为必要的任务之一,如同上学时老师检查作业般。但发圈何尝不像是写作业一样呢?有许多小号需发几十上百条朋友圈,令人感到枯燥、浪费时间。再加上我们还有其他事务要处理,例如服装店老板…

让你不再疑惑ai绘画生成器有哪些

有一天,设计师小李接到了一份任务,要在短时间内完成一幅复杂的插画。小李感到非常苦恼。于是,他开始寻找一种新的解决方案。通过搜索和咨询同事,小李发现通过使用ai绘画工具可以提高快速绘制图画的速度.那么,你知道最新…

paddlespeech 声纹识别embedding向量提取

参考: https://aistudio.baidu.com/aistudio/projectdetail/4353348 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/speaker_verification/README_cn.md 注意 1)安装paddlespeech,参考: https://blog.csdn.n…

儿童牙刷语音方案,低功耗语音芯片NV040C,支持UART指令

随着人们对生活品质的追求越来越高,家庭中的日常用品也开始注重便携性、功能性与智能化。牙刷作为家庭必备的清洁用品,同样也在走向智能化的方向。为此,市场上出现了一些支持语音指令的儿童牙刷语音方案,其中低功耗语音芯片NV040C…

TypeScript 中接口类型【Interfaces】的定义使用解读

导语: 什么是 类型接口? 在面向对象语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类(classes)去实现(implement&#x…

从“裸辞”到“终于找到理想工作”,面试了37家公司,经过5个月的时间终于如愿以偿。

软件测试行业裸辞5个月,面试了37家公司,终于找到理想工作了... 在软件测试行业里工作已经有7年的时间了。然而,在今年初,我因为一些原因选择了离开原来的公司,成为了一名“裸辞族”。我并不后悔这个决定,因…

QT Creator上位机学习(一)基本类别及主体框架解析

系列文章目录 文章目录 系列文章目录前言基础认识多种项目3种基类文件管理编译 项目程序项目管理文件UI文件信号与槽主程序窗体头文件窗体源文件 前言 之前也学习制作过串口上位机和利用Qchart完成数据的曲线显示等等,但大多只是对网上的程序进行拼接,这…