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

基础组件——Datasets

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

datasets基本使用

在这里插入图片描述

导入包

from datasets import *

加载数据

datasets = load_dataset("madao33/new-title-chinese")
datasets

DatasetDict({
    train: Dataset({
        features: ['title', 'content'],
        num_rows: 5850
    })
    validation: Dataset({
        features: ['title', 'content'],
        num_rows: 1679
    })
})

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

boolq_dataset = load_dataset("super_glue", "boolq")
boolq_dataset

DatasetDict({
    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")
dataset

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

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

Dataset({
    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")
datasets

DatasetDict({
    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_datasets

DatasetDict({
    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_datasets

DatasetDict({
    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_datasets

DatasetDict({
    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")
dataset

Dataset({
    features: ['label', 'review'],
    num_rows: 7766
})
dataset = Dataset.from_csv("./ChnSentiCorp_htl_all.csv")
dataset

Dataset({
    features: ['label', 'review'],
    num_rows: 7766
})

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

# 使用data_dir加载全部文件夹内文件
dataset = load_dataset("csv", data_dir="./all_data/", split='train')
dataset

Dataset({
    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')
dataset

Dataset({
    features: ['label', 'review'],
    num_rows: 15532
})

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

import pandas as pd

data = pd.read_csv("./ChnSentiCorp_htl_all.csv")
data.head()

在这里插入图片描述

dataset = Dataset.from_pandas(data)
dataset

Dataset({
    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]}}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Web】NSSCTF Round#16 Basic个人wp(全)

出题友好,适合手生复健。 目录 ①RCE但是没有完全RCE ②了解过PHP特性吗 ①RCE但是没有完全RCE 上来就是一段md5八股 (string)就是不让用数组了,然后强比较需要md5碰撞 ?md5_1%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc…

KVM Vcpu概述

KVM Vcpu概述 Intel VTSMP系统CPU过载使用CPU模型CPU绑定和亲和性CPU优化 Intel VT Intel的硬件虚拟化技术大致分为3类: 1、VT-x技术:是指Intel处理器中的一些虚拟化技术支持,包括CPU中最基础的VMX技术,也包括内存虚拟化的硬件支…

【LangChain学习之旅】—(7) 调用模型:使用OpenAI API还是微调开源Llama2/ChatGLM?

【LangChain学习之旅】—(7) 调用模型:使用OpenAI API还是微调开源Llama2/ChatGLM? 大语言模型发展史预训练 微调的模式用 HuggingFace 跑开源模型申请使用 Meta 的 Llama2 模型通过 HuggingFace 调用 LlamaLangChain 和 Hugging…

PHP代码审计基础知识

前言 本文章主要是PHP代码审计的一些基础知识,包括函数的用法,漏洞点,偏向基础部分,个人能力有限,部分可能会出现错误或者遗漏,读者可自行补充。 代码执行 代码执行是代码审计当中较为严重的漏洞&…

关于LwRB环形缓冲区开源库的纯C++版本支持原子操作

1、LwRB环形缓冲区开源库: GitHub - MaJerle/lwrb: Lightweight generic ring buffer manager libraryLightweight generic ring buffer manager library. Contribute to MaJerle/lwrb development by creating an account on GitHub.https://github.com/MaJerle/l…

【Linux】Linux基础之权限

目录 一、Linux中的用户1.1 用户之间的身份切换1.2 指令提权 二、权限管理2.1 文件权限2.2 权限操作2.3 chown和chgrp 三、文件类型四、目录文件的权限操作五、权限掩码六、粘滞位 一、Linux中的用户 Linux中主要有两种用户: root,超级用户非root&…

AI智能创作软件,颠覆你的写作体验

你是否想过,有一天,文字创作不再受限于人的思维和表达能力?AI智能文章创作就是这样一个神奇的存在。它运用先进的自然语言处理技术,通过对大量数据的深度学习,根据需要自动生成文章。你只需输入关键词或主题&#xff0…

Vue3-完成任意组件之间的传值

一、props(只限于父子之间,不嫌麻烦可以不断传) 父给子传值,子接收defineProps 父给子传事件,子接收defineProps,并触发事件的时候传值,然后父通过事件的回调函数拿到子传的值 二、mitt&#…

R语言将list转变为dataframe(常用)

在R语言使用中常常遇到list文件需要转变为dataframe格式文件处理。这是需要写循环来进行转换。IOBR查看其收录的相关基因集(自备)_iobr_deg-CSDN博客 示例文件 list文件&#xff1a; 循环转换为dataframe data <- signature_tme dat <- as.data.frame(t(sapply(data, …

【AI的未来 - AI Agent系列】【MetaGPT】0. 你的第一个MetaGPT程序

《MetaGPT智能体开发入门》开课&#xff0c;跟着课程&#xff0c;学习MetaGPT智能体开发。 0. 安装MetaGPT 请确保你的系统已安装Python 3.9。你可以通过以下命令进行检查&#xff1a; python3 --version下面是具体的安装命令&#xff1a; 安装命令 pip install metagpt如…

完美解决报错Please verify that the package.json has a valid “main“ entry处理方法

出现下图中的错误 &#xff0c;说明缺少main入口 解决方法&#xff1a; 1.删除 node_modules 和 package-lock.json这两个文件 2.命令行输入npm i 会重新下载包 3.重新执行检查没有报错

Centos安装RocketMQ之双主双从模式(同步双写方式)

目录 前言 一、总体架构 二、环境准备 1、文件准备 2、服务器换环境 3、防火墙配置 4、创建消息存储路径 三、配置文件修改 1、master1配置修改 2、slave2配置修改 3、master2配置修改 4、slave1配置修改 四、启动脚本修改 五、启动服务 1、启动NameServe集群 ​编…

阿里云高性能云服务器_云主机_云服务器详解

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

【simple-admin】FMS模块如何快速接入阿里云oss 腾讯云cos 服务 实现快速上传文件功能落地

让我们一起支持群主维护simple-admin 社群吧!!! 不能加入星球的朋友记得来点个Star!! https://github.com/suyuan32/simple-admin-core 一、前提准备 1、goctls版本 goctls官方git:https://github.com/suyuan32/goctls 确保 goctls是最新版本 v1.6.19 goctls -v goct…

(十一)IIC总线-AT24C02-EEPROM

文章目录 IIC总线篇AT24C02-EEPROM篇主要特性引脚说明AT24Cxx用几位数据地址随机寻址的(存储器组织)AT24C02设备操作AT24CXX设备寻址EEPROM写操作的种类EEPROM读操作的种类实现单字节写实现任意读读写应用 IIC总线篇 前面介绍过了&#xff0c;请参考 (十)IIC总线-PCF8591-ADC/…

手把手教你用 Stable Diffusion 写好提示词

Stable Diffusion 技术把 AI 图像生成提高到了一个全新高度&#xff0c;文生图 Text to image 生成质量很大程度上取决于你的提示词 Prompt 好不好。 前面文章写了一篇文章&#xff1a;一份保姆级的 Stable Diffusion 部署教程&#xff0c;开启你的炼丹之路 本文从“如何写好…

前端基础知识

一、脚本script 定义&#xff1a;脚本简单地说就是一条条的文字命令&#xff0c;这些文字命令是可以看到的&#xff0c;脚本程序在执行时&#xff0c;是由系统的一个解释器&#xff0c;将其一条条的翻译成机器可识别的指令&#xff0c;并按程序顺序执行 作用&#xff1a;可以…

element:日历 / 使用记录

一、预期效果 Element - The worlds most popular Vue UI framework element默认样式 目标样式 二、Calendar 属性 参数说明类型可选值默认值value / v-model绑定值Date/string/number——range时间范围&#xff0c;包括开始时间与结束时间。开始时间必须是周一&#xff0c;…

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

基础组件学习——Evaluate Evaluate使用指南 查看支持的评估函数 # include_community&#xff1a;是否添加社区实现的部分 # with_details&#xff1a;是否展示更多细节 evaluate.list_evaluation_modules(include_communityFalse, with_detailsTrue)加载评估函数 accuracy…

Linux终端常见用法总结

熟悉Linux终端的基础用法和常见技巧可以极大提高运维及开发人员的工作效率&#xff0c;笔者结合自身学习实践&#xff0c;总结以下终端用法供同行交流学习。 常 见 用 法 &#x1f3af; 1&#xff1a;快捷键 1.1 Alt . 在光标位置插入上一次执行命令的最后一个参数。 1.2 Ct…