文件名和切分
要托管和共享数据集,请在 Hugging Face Hub 上创建数据集仓库并上传数据文件。
本指南将向你展示在上传数据集仓库时如何命名文件和目录,并启用所有 Datasets Hub 功能(如数据集查看器)。查看配套的示例数据集集合了解更多详情。
具有支持的结构和文件格式的数据集会在 Hub 上的页面自动拥有数据集查看器。
请注意,如果下面的结构都不适合你的情况,你可以使用手动配置更好地控制如何定义切分和子集。
基本用例
如果你的数据集没有分为训练/验证/测试切分,最简单的数据集结构是只有一个文 件:data.csv(这适用于任何支持的文件格式和任何文件名)。
你的仓库还将包含一个 README.md 文件,这是显示在数据集页面上的数据集卡片。
my_dataset_repository/
├── README.md
└── data.csv
切分
数据集仓库中的某些模式可用于将某些文件分配给训练/验证/测试切分。
文件名
你可以根据 train、test 和 validation 切分命名数据文件:
my_dataset_repository/
├── README.md
├── train.csv
├── test.csv
└── validation.csv
如果你没有任何非传统切分,则可以将切分名称放在数据文件中的任何位置。唯一的规则是切分名称必须由非单词字符分隔,例如 test-file.csv 而不是 testfile.csv。支持的分隔符包括下划线、破折号、空格、点和数字。
例如,以下文件名都是可接受的:
- train 切分:
train.csv、my_train_file.csv、train1.csv - validation 切分:
validation.csv、my_validation_file.csv、validation1.csv - test 切分:
test.csv、my_test_file.csv、test1.csv
目录名
你可以将数据文件放在名为 train、test 和 validation 的不同目录中,每个目录包含该切分的数据文件:
my_dataset_repository/
├── README.md
└── data/
├── train/
│ └── data.csv
├── test/
│ └── more_data.csv
└── validation/
└── even_more_data.csv
关键词
有多种方式可以指代训练/验证/测试切分。验证切分有时称为 "dev",测试切分可能称为 "eval"。 这些其他切分名称也受支持,以下关键词是等效的:
- train, training
- validation, valid, val, dev
- test, testing, eval, evaluation
因此,下面的结构是一个有效的仓库:
my_dataset_repository/
├── README.md
└── data/
├── training.csv
├── eval.csv
└── valid.csv
每个切分多个文件
切分可以跨越多个文件,例如:
my_dataset_repository/
├── README.md
├── train_0.csv
├── train_1.csv
├── train_2.csv
├── train_3.csv
├── test_0.csv
└── test_1.csv
确保你的 train 集的所有文件名称中都包含 train(test 和 validation 也是如此)。
你甚至可以在文件名中为 train 添加前缀或后缀(例如 my_train_file_00001.csv)。
为了方便,你也可以将数据文件放在不同的目录中。 在这种情况下,切分名称从目录名称推断。
my_dataset_repository/
├── README.md
└── data/
├── train/
│ ├── shard_0.csv
│ ├── shard_1.csv
│ ├── shard_2.csv
│ └── shard_3.csv
└── test/
├── shard_0.csv
└── shard_1.csv
自定义切分名称
如果你的数据集切分具有不是 train、test 或 validation 的自定义名称,则可以将数据文件命名为 data/<split_name>-xxxxx-of-xxxxx.csv。
以下是一个包含三个切分 train、test 和 random 的示例:
my_dataset_repository/
├── README.md
└── data/
├── train-00000-of-00003.csv
├── train-00001-of-00003.csv
├── train-00002-of-00003.csv
├── test-00000-of-00001.csv
├── random-00000-of-00003.csv
├── random-00001-of-00003.csv
└── random-00002-of-00003.csv