项目介绍:Hugging Face Datasets
Hugging Face Datasets
是一个轻量级的开源库,专门用于方便的数据集加载与处理,主要提供两大核心功能:一是简化了数据集获取与预处理的操作,二是提高了数据集处理的效率。它支持对大量公共数据集的一键加载并进行预处理,这些数据集涵盖图像、音频和文本数据,支持多达467种语言和方言。
主要功能
一键数据集加载
该库允许用户通过一行代码从 Hugging Face 数据集中随时下载和预处理所需要的数据集,例如通过命令 squad_dataset = load_dataset("squad")
,用户可以轻松下载 SQuAD 数据集,并为机器学习模型准备数据加载器(支持 Numpy、Pandas、PyTorch、TensorFlow 和 JAX)。
高效数据预处理
Datasets
提供简单快速且可重复的数据预处理功能,用户可以利用如 processed_dataset = dataset.map(process_example)
这样的简单命令可高效地处理公共数据集或本地数据集,这些数据集的格式可以是 CSV、JSON、文本、PNG、JPEG、WAV、MP3 和 Parquet 等。
附加特性
- 处理大数据集:
Datasets
利用 Apache Arrow 提供的零序列化开销的内存映射技术,使用户不受 RAM 内存限制。 - 智能缓存:数据集的处理结果会缓存,避免重复处理,提高效率。
- 轻量快速的 Python API:API 采用模块化设计,支持多进程、缓存和内存映射。
- 多种数据类型支持:原生支持音频和图像数据,用户可以通过启动流模式以节省磁盘空间并立即开始数据处理。
- 与多种框架的兼容性:如 NumPy、pandas、PyTorch、TensorFlow 2 和 JAX。
安装指南和使用建议
用户可以选择通过 pip 或 conda 来安装 Datasets
。如果要在 PyTorch、TensorFlow 或 pandas 环境中使用,还需安装这些框架。快速入门指南和使用文档均在 Hugging Face Datasets 文档网站中提供。
数据集加载和数据处理示例
以下是如何加载文本数据集的一个简单示例:
from datasets import load_dataset
# 列出所有可用的数据集
from huggingface_hub import list_datasets
print([dataset.id for dataset in list_datasets()])
# 加载数据集并打印训练集中的第一个例子
squad_dataset = load_dataset('squad')
print(squad_dataset['train'][0])
# 对数据集进行处理 - 添加文本长度列
dataset_with_length = squad_dataset.map(lambda x: {"length": len(x["context"])})
# 对数据集进行处理 - 对上下文文本进行标记化(使用 🤗 Transformers 库中的标记器)
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('bert-base-cased')
tokenized_dataset = squad_dataset.map(lambda x: tokenizer(x['context']), batched=True)
社区贡献与数据集共享
Datasets
项目支持用户方便地添加和共享新数据集。用户能够通过简单的步骤在 Hugging Face 数据集平台上上传或更新数据集,进一步促进机器学习社区的合作与发展。
与 TensorFlow Datasets 的主要区别
值得注意的是,Datasets
起源于 TensorFlow Datasets 的分支,主要区别在于其脚本的外部加载机制、基于 Apache Arrow 后端序列化的存储方式,以及框架无关的数据集类设计。
Hugging Face Datasets
的设计旨在提升大数据集处理的流畅性和灵活性,使用户能够更高效地进行机器学习模型的训练和验证。