前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >datasets: 便捷的数据集管理和处理工具

datasets: 便捷的数据集管理和处理工具

原创
作者头像
luckpunk
修改2025-02-05 09:04:25
修改2025-02-05 09:04:25
16300
代码可运行
举报
文章被收录于专栏:Python每日一库Python每日一库
运行总次数:0
代码可运行

一、datasets库简介

datasets库是由Hugging Face开发的一个轻量级、易于使用的开源库,旨在为研究人员和开发者提供便捷的数据集管理和处理工具。它支持多种格式的数据集,并且与Hugging Face的Transformers库无缝集成,极大地方便了NLP任务的处理。

主要特点:
  1. 丰富的数据集datasets库内置了超过900个公开数据集,涵盖文本分类、翻译、问答等各种任务。
  2. 高效的数据处理:支持分布式处理和内存映射,能够处理大规模数据集。
  3. 多样的数据格式:支持CSV、JSON、文本文件等多种数据格式。
  4. 与Transformers无缝集成:方便加载和处理适用于Transformers模型的数据集。

二、安装datasets

要使用datasets库,首先需要进行安装。可以通过pip进行安装:

代码语言:javascript
代码运行次数:0
运行
复制
pip install datasets

三、使用datasets

下面我们通过具体的代码示例来展示如何使用datasets库加载、处理和保存数据集。

1. 加载数据集

datasets库提供了简单的接口来加载内置数据集。以下示例展示了如何加载常用的IMDB电影评论数据集:

代码语言:javascript
代码运行次数:0
运行
复制
from datasets import load_dataset

# 加载IMDB数据集
dataset = load_dataset("imdb")

# 查看训练集和测试集的基本信息
print(dataset)
2. 数据集的访问

加载后,可以通过索引访问数据集中的具体样本:

代码语言:javascript
代码运行次数:0
运行
复制
# 访问训练集中的第一个样本
print(dataset['train'][0])

# 访问测试集中的前10个样本
for i in range(10):
    print(dataset['test'][i])
3. 数据集的处理

datasets库还提供了便捷的数据处理方法,例如映射、过滤和批量处理。以下示例展示了如何对数据集进行简单的预处理:

  • 映射:使用 map 方法对数据集中的每个元素应用一个函数:
代码语言:javascript
代码运行次数:0
运行
复制
def preprocess_function(example):
    return {'text': example['text'].lower()}

# 对训练集进行文本小写化处理
train_dataset = dataset['train'].map(preprocess_function, batched=True)

# 查看处理后的数据
print(train_dataset[0])
  • 过滤:使用 filter 方法根据条件筛选数据:
代码语言:javascript
代码运行次数:0
运行
复制
filtered_dataset = train_dataset.filter(lambda example: len(example["text"]) > 100)
  • 随机采样:使用 shuffle 和 select 方法进行随机采样:
代码语言:javascript
代码运行次数:0
运行
复制
shuffled_dataset = train_dataset.shuffle(seed=42)
sampled_dataset = shuffled_dataset.select(range(10))
4. 数据集的保存与加载

处理完成后,可以将数据集保存到本地文件,方便后续使用:

代码语言:javascript
代码运行次数:0
运行
复制
# 将处理后的数据集保存为CSV文件
train_dataset.to_csv("processed_train.csv")

# 从CSV文件加载数据集
from datasets import load_from_disk
dataset = load_from_disk("processed_train.csv")
5. 使用自己的数据集

如果你有自己的数据集,也可以使用 datasets 库来加载和处理。你可以创建一个自定义的 Dataset 对象:

代码语言:javascript
代码运行次数:0
运行
复制
from datasets import Dataset

data = [
    {"text": "Example text 1", "label": 0},
    {"text": "Example text 2", "label": 1},
]

dataset = Dataset.from_dict({"text": data, "label": data})

这只是一个简单的介绍,datasets 库的功能非常丰富,包括数据集的缓存、版本控制等高级特性。你可以查看 官方文档 来获取更多的信息和高级用法。

6. 获取数据集名称

在使用 datasets 库时,你可以从以下几个途径获取数据集的名称,这些名称将作为 load_dataset 函数的参数值:

  1. Hugging Face Datasets Hub: Hugging Face 提供了一个公共的数据集集线器,你可以在这里找到许多预加载的数据集。访问 Hugging Face Datasets Hub 来浏览可用的数据集。
  2. datasets 库的文档: 官方文档中通常会列出可用的数据集名称和相应的信息。
  3. list_datasets 函数: datasets 库提供了一个 list_datasets 函数,它可以列出所有可用的数据集名称。使用这个函数可以动态地获取数据集列表:
代码语言:javascript
代码运行次数:0
运行
复制
from datasets import list_datasets

dataset_names = list_datasets()
for name in dataset_names:
    print(name)
  1. 社区贡献: 除了官方提供的数据集,社区成员也可能贡献自己的数据集。你可以在 Hugging Face Datasets Hub 上搜索这些数据集,或者通过社区论坛和讨论组来了解。
  2. 自定义数据集: 如果你有自己的数据集,你可以通过创建一个 Dataset 对象来加载它,如之前所述。在这种情况下,数据集的名称可以是你自己定义的任何标识符。
  3. 配置文件: 如果你正在使用配置文件来管理数据集,配置文件中可能会包含数据集的名称。
  4. 环境变量或配置文件: 在某些情况下,数据集的名称可能通过环境变量或配置文件来指定。
  5. APIs 或其他数据源: 如果你正在使用特定的API或数据源来获取数据集,那么数据集的名称可能是由API或数据源提供的标识符。

记住,当你使用 load_dataset 函数时,参数可以是数据集的名称,也可以是指向数据集配置文件的路径。例如:

代码语言:javascript
代码运行次数:0
运行
复制
# 使用数据集名称
dataset = load_dataset("imdb_reviews")

# 使用配置文件路径
dataset = load_dataset("path/to/your/config.json")

确保在使用 load_dataset 之前,你已经知道了正确的数据集名称或配置文件路径。

7. 数据集下载目录

使用 datasets 包加载数据集时,默认情况下,数据集文件会被下载并缓存到本地的磁盘上。具体的缓存位置取决于操作系统和配置:

  1. Unix-like 系统(包括 macOS 和 Linux): 数据集通常被下载到~/.cache/huggingface/datasets文件夹中。这里的~表示当前用户的主目录。
  2. Windows 系统: 数据集通常被下载到C:\Users\<Your Username>\.cache\huggingface\datasets路径中。

datasets 包使用 Hugging Face 的缓存机制,这意味着它会自动管理下载的数据集文件,包括缓存的版本控制和过期策略。如果你需要修改缓存位置,可以在环境变量中设置 HF_HOME 来指定一个不同的目录:

代码语言:javascript
代码运行次数:0
运行
复制
export HF_HOME="/path/to/your/huggingface_cache"

在 Python 脚本中,你可以使用 datasets.config.set_filesystem_cache_dir 方法来设置缓存目录:

代码语言:javascript
代码运行次数:0
运行
复制
from datasets import config

config.set_filesystem_cache_dir("path/to/your/huggingface_cache")

请注意,更改缓存目录可能会影响其他使用 Hugging Face 缓存机制的库,如 transformers

此外,datasets 库还支持使用配置文件来管理数据集的下载和缓存行为,这可以通过创建一个 .json.yaml 配置文件来实现,并在加载数据集时指定该配置文件的路径。

Reference

https://huggingface.co/docs/datasets/

https://github.com/huggingface/datasets

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、datasets库简介
    • 主要特点:
  • 二、安装datasets库
  • 三、使用datasets库
    • 1. 加载数据集
    • 2. 数据集的访问
    • 3. 数据集的处理
    • 4. 数据集的保存与加载
    • 5. 使用自己的数据集
    • 6. 获取数据集名称
    • 7. 数据集下载目录
  • Reference
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档