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

2024-01-14 09:44

本文主要是介绍【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]}}

这篇关于【HuggingFace Transformer库学习笔记】基础组件学习:Datasets的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/604737

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识