从 Hub 加载数据集
找到高质量、可重复使用且可访问的数据集可能很困难。🤗 数据集的主要目标之一是提供一种简单的方法来加载任何格式或类型的 dataset。最简单的入门方法是在 Hugging Face Hub 上发现现有的 dataset - 一个社区驱动的 dataset 集合,用于 NLP、计算机视觉和音频任务 - 并使用 🤗 数据集下载和生成 dataset。
本教程使用 rotten_tomatoes 和 MInDS-14 dataset,但您可以随意加载任何您想要的 dataset 并按照步骤进行。现在前往 Hub 并找到适合您任务的 dataset!
加载数据集
在您花时间下载数据集之前,快速获取有关数据集的一般信息通常很有帮助。数据集的信息存储在 DatasetInfo 中,并且可以包括数据集描述、特征和数据集大小等信息。
使用 load_dataset_builder() 函数加载数据集构建器,并在不进行下载的情况下检查数据集的属性
>>> from datasets import load_dataset_builder
>>> ds_builder = load_dataset_builder("rotten_tomatoes")
# Inspect dataset description
>>> ds_builder.info.description
Movie Review Dataset. This is a dataset of containing 5,331 positive and 5,331 negative processed sentences from Rotten Tomatoes movie reviews. This data was first used in Bo Pang and Lillian Lee, ``Seeing stars: Exploiting class relationships for sentiment categorization with respect to rating scales.'', Proceedings of the ACL, 2005.
# Inspect dataset features
>>> ds_builder.info.features
{'label': ClassLabel(num_classes=2, names=['neg', 'pos'], id=None),
'text': Value(dtype='string', id=None)}
如果您对数据集满意,请使用 load_dataset() 加载它
>>> from datasets import load_dataset
>>> dataset = load_dataset("rotten_tomatoes", split="train")
切分
切分是数据集的特定子集,例如train
和test
。使用 get_dataset_split_names() 函数列出数据集的切分名称
>>> from datasets import get_dataset_split_names
>>> get_dataset_split_names("rotten_tomatoes")
['train', 'validation', 'test']
然后,您可以使用split
参数加载特定切分。加载数据集split
会返回一个 Dataset 对象
>>> from datasets import load_dataset
>>> dataset = load_dataset("rotten_tomatoes", split="train")
>>> dataset
Dataset({
features: ['text', 'label'],
num_rows: 8530
})
如果您没有指定split
,🤗 Datasets 会返回一个 DatasetDict 对象
>>> from datasets import load_dataset
>>> dataset = load_dataset("rotten_tomatoes")
DatasetDict({
train: Dataset({
features: ['text', 'label'],
num_rows: 8530
})
validation: Dataset({
features: ['text', 'label'],
num_rows: 1066
})
test: Dataset({
features: ['text', 'label'],
num_rows: 1066
})
})
配置
某些数据集包含多个子数据集。例如,MInDS-14 数据集有几个子数据集,每个子数据集都包含不同语言的音频数据。这些子数据集被称为配置或子集,您必须在加载数据集时明确选择一个。如果您没有提供配置名称,🤗 Datasets 会引发ValueError
,并提醒您选择配置。
使用 get_dataset_config_names() 函数检索数据集的所有可用配置的列表
>>> from datasets import get_dataset_config_names
>>> configs = get_dataset_config_names("PolyAI/minds14")
>>> print(configs)
['cs-CZ', 'de-DE', 'en-AU', 'en-GB', 'en-US', 'es-ES', 'fr-FR', 'it-IT', 'ko-KR', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'zh-CN', 'all']
然后加载您想要的配置
>>> from datasets import load_dataset
>>> mindsFR = load_dataset("PolyAI/minds14", "fr-FR", split="train")
远程代码
某些数据集存储库包含一个加载脚本,其中包含用于生成数据集的 Python 代码。所有上传到 Hub 的文件和代码都会被扫描以查找恶意软件(有关更多信息,请参阅 Hub 安全文档),但您仍然应该检查数据集加载脚本和作者,以避免在您的机器上执行恶意代码。您应该设置trust_remote_code=True
来使用具有加载脚本的数据集,否则您会收到错误消息
>>> from datasets import get_dataset_config_names, get_dataset_split_names, load_dataset
>>> c4 = load_dataset("c4", "en", split="train", trust_remote_code=True)
>>> get_dataset_config_names("c4", trust_remote_code=True)
['en', 'realnewslike', 'en.noblocklist', 'en.noclean']
>>> get_dataset_split_names("c4", "en", trust_remote_code=True)
['train', 'validation']
出于安全原因,🤗 Datasets 默认不允许运行数据集加载脚本,您必须传递trust_remote_code=True
才能加载需要运行数据集脚本的数据集。