Datasets documentation
リポジトリの構造を整える
リポジトリの構造を整える
データセットをホストして共有するには、Hugging Face Hub上でデータセットのリポジトリを作成し、データファイルをアップロードします。
このガイドでは、アップロード時にデータセットリポジトリをどのように構成するかを示します。
サポートされている構造とファイル形式(.txt、.csv、.parquet、.jsonl、.mp3、.jpg、.zip など)のデータセットは、load_dataset()によって自動的に読み込まれ、Hub上のデータセットページにデータセットビューアが表示されます。
主なユースケース
最もシンプルなデータセット構造は、train.csvとtest.csvという2つのファイルから構成されています(サポートされている任意のファイル形式で動作します)。
リポジトリには、README.mdファイルも含まれます。これは、データセットページに表示されるデータセットカードです。
my_dataset_repository/
├── README.md
├── train.csv
└── test.csvこのシンプルなケースでは、2つのスプリットを持つデータセットが得られます: train(train.csvからの例を含む)とtest(test.csvからの例を含む)。
YAMLでスプリットとサブセットを定義する
分割
複数のファイルがあり、どのファイルをどの分割に含めるかを定義したい場合は、README.md の先頭にある YAML の configs フィールドを使用できます。
例えば、次のようなリポジトリが与えられたとします。
my_dataset_repository/
├── README.md
├── data.csv
└── holdout.csvREADME.md の先頭の YAML ブロックにconfigsフィールドを追加することで、スプリットを定義できます。
---
configs:
- config_name: default
data_files:
- split: train
path: "data.csv"
- split: test
path: "holdout.csv"
---パスのリストを使用して、1つのスプリットに対して複数のファイルを選択できます。
my_dataset_repository/
├── README.md
├── data/
│ ├── abc.csv
│ └── def.csv
└── holdout/
└── ghi.csv---
configs:
- config_name: default
data_files:
- split: train
path:
- "data/abc.csv"
- "data/def.csv"
- split: test
path: "holdout/ghi.csv"
---または、globパターンを使用して、必要なすべてのファイルを自動的に一覧表示できます:
---
configs:
- config_name: default
data_files:
- split: train
path: "data/*.csv"
- split: test
path: "holdout/*.csv"
---単一の構成しかない場合でも、
config_nameフィールドは必須であることに注意してください。
設定
データセットには、個別に読み込みたい複数のデータサブセットが含まれている場合があります。その場合は、YAMLのconfigsフィールド内で設定のリストを定義できます。
my_dataset_repository/
├── README.md
├── main_data.csv
└── additional_data.csv---
configs:
- config_name: main_data
data_files: "main_data.csv"
- config_name: additional_data
data_files: "additional_data.csv"
---各設定は Hugging Face Hub で個別に表示され、その名前を第2引数として渡すことで読み込むことができます:
from datasets import load_dataset
main_data = load_dataset("my_dataset_repository", "main_data")
additional_data = load_dataset("my_dataset_repository", "additional_data")ビルダーパラメータ
data_files だけでなく、ビルダー固有のパラメータも YAML を介して渡すことができ、カスタムコードを必要とせずに、データの読み込み方法の柔軟性を高めることができます。例えば、csv ファイルを読み込む際にどの設定でどの区切り文字を使用するかを定義できます:
---
configs:
- config_name: tab
data_files: "main_data.csv"
sep: "\t"
- config_name: comma
data_files: "additional_data.csv"
sep: ","
---使用可能な設定パラメータを確認するには、特定のビルダーのドキュメントを参照してください。
default: trueを使用してデフォルトの構成を設定できます。例えば、main_data = load_dataset("my_dataset_repository")を実行できるようにするには、- config_name: main_data data_files: "main_data.csv" default: true
自動スプリット検出
YAML が提供されていない場合、🤗 Datasets はデータセットリポジトリ内の特定のパターンを検索して、データセットの分割を自動的に推論します。 パターンには順序があり、カスタムファイル名の分割形式から始まり、パターンが見つからない場合はすべてのファイルを単一の分割として扱うことが最終的な処理です。
ディレクトリ名
データファイルは、train、test、validation という名前の異なるディレクトリに配置することもできます。各ディレクトリには、その分割に対応するデータファイルが含まれます。
my_dataset_repository/
├── README.md
└── data/
├── train/
│ └── bees.csv
├── test/
│ └── more_bees.csv
└── validation/
└── even_more_bees.csvファイル名による分割
非伝統的な分割がない場合、分割名はデータファイル内のどこに置いても自動的に推測されます。唯一のルールは、分割名が非単語文字で区切られていることです。例えば、testfile.csv ではなく test-file.csv のようにします。サポートされている区切り文字には、アンダースコア、ダッシュ、スペース、ドット、数字が含まれます。
例えば、次のようなファイル名はすべて許可されます。
- train分割:
train.csv、my_train_file.csv、train1.csv - 検証スプリット:
validation.csv、my_validation_file.csv、validation1.csv - テスト分割:
test.csv、my_test_file.csv、test1.csv
data という名前のディレクトリにすべてのファイルを配置する例を以下に示します:
my_dataset_repository/
├── README.md
└── data/
├── train.csv
├── test.csv
└── validation.csvカスタムファイル名による分割
データセットの分割がtrain、test、validation以外のカスタム名である場合、データファイル名をdata/<split_name>-xxxxx-of-xxxxx.csvのように指定できます。
3つのスプリット、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単一分割
🤗 Datasets が上記のパターンをいずれも検出できない場合、すべてのファイルを単一の train スプリットとして扱います。データセットのスプリットが想定通りに読み込まれない場合は、パターンが正しくないことが原因である可能性があります。
名前キーワードの分割
スプリットに名前を付ける方法はいくつかあります。バリデーションスプリットは「dev」と呼ばれることもあれば、テストスプリットは「eval」と呼ばれることもあります。 これらの他のスプリット名もサポートされており、以下のキーワードは同等です。
- train, training
- 検証、有効、val、dev
- test, testing, eval, evaluation
以下の構造は有効なリポジトリです:
my_dataset_repository/
├── README.md
└── data/
├── training.csv
├── eval.csv
└── valid.csvスプリットごとの複数ファイル
スプリットの一つが複数のファイルで構成されている場合でも、🤗 Datasets はファイル名からそれが train、validation、test のいずれのスプリットであるかを推測できます。 例えば、train と test のスプリットが複数のファイルにまたがっている場合:
my_dataset_repository/
├── README.md
├── train_0.csv
├── train_1.csv
├── train_2.csv
├── train_3.csv
├── test_0.csv
└── test_1.csvtrain セットに含まれるすべてのファイル名にtrain が含まれていることを確認してください(test と validation も同様です)。
ファイル名にtrain の前後に接頭辞や接尾辞を追加した場合(例えばmy_train_file_00001.csv など)でも、
🤗 Datasets は適切なスプリットを推論できます。
便宜のため、データファイルを異なるディレクトリに配置することもできます。 この場合、スプリット名はディレクトリ名から推測されます。
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