Datasets documentation
ビルドとロード
ビルドとロード
ほぼすべての深層学習ワークフローはデータセットの読み込みから始まるため、これは最も重要なステップの一つです。🤗 Datasets を使用すると、NLP タスクの開始に役立つ 900 以上のデータセットが利用できます。最初の一歩を踏み出すには、load_dataset() を呼び出すだけです。この関数は、使用するすべてのデータセットを構築して読み込むため、あらゆる意味で真の主力機能です。
ELI5: load_dataset
まずは、5歳児にもわかるような基本的な説明から始めましょう。
データセットは、以下を含むディレクトリです:
- 汎用形式(JSON、CSV、Parquet、テキストなど)のデータファイル
- データセットに関するドキュメントと、データセットのタグや設定を定義するためのYAMLヘッダーを含む、
README.mdという名前のデータセットカード
load_dataset() 関数は、要求されたデータセットをローカルまたは Hugging Face Hub から取得します。 Hub は、すべての Hugging Face データセットとモデルが保存される中央リポジトリです。
データセットにデータファイルのみが含まれている場合、load_dataset()は拡張子(json、csv、parquet、tsfile、txt など)からデータファイルの読み込み方法を自動的に推測します。 内部では、🤗 Datasetsはデータファイルの形式に基づいて適切なDatasetBuilderを使用します。🤗 Datasetsには、データファイルの形式ごとに1つのビルダーが存在します:
- テキストには datasets.packaged_modules.text.Text
- CSVおよびTSVにはdatasets.packaged_modules.csv.Csv
- JSONおよびJSONLにはdatasets.packaged_modules.json.Json
- Parquet には datasets.packaged_modules.parquet.Parquet
- Arrow(ストリーミングファイル形式)には datasets.packaged_modules.arrow.Arrow
- SQLデータベース用のdatasets.packaged_modules.sql.Sql
- TsFile(時系列データ)用のdatasets.packaged_modules.tsfile.TsFile
- 画像フォルダにはdatasets.packaged_modules.imagefolder.ImageFolderを使用します
- 音声フォルダにはdatasets.packaged_modules.audiofolder.AudioFolder
Shareセクションを読んで、データセットの共有方法について詳しく学びましょう。
🤗 Datasets は元の URL からデータセットファイルをダウンロードし、データセットを生成して、ドライブ上の Arrow テーブルとしてキャッシュします。 以前にデータセットをダウンロードしたことがある場合、🤗 Datasets はキャッシュから読み込むため、再度ダウンロードする手間を省くことができます。
データセットの構築方法について高レベルな理解を得たところで、ここではその仕組みの詳細な部分に目を向けましょう。
データセットの構築
データセットを初めて読み込むと、🤗 Datasets は生データファイルを受け取り、行と型付きの列からなるテーブルに構築します。データセットの構築を担当する主なクラスは2つあり、BuilderConfigとDatasetBuilderです。

BuilderConfig
BuilderConfigはDatasetBuilderの設定クラスです。BuilderConfigには、データセットに関する以下の基本的な属性が含まれます。
| 属性 | 説明 |
|---|---|
name | データセットの短い名前。 |
version | Datasetのバージョン識別子。 |
data_dir | データファイルを含むローカルフォルダへのパスを保存します。 |
data_files | ローカルデータファイルへのパスを保存します。 |
description | データセットの説明 |
クラスラベルなどの追加属性をデータセットに追加したい場合は、ベースのBuilderConfigクラスをサブクラス化できます。BuilderConfigクラスまたはそのサブクラスの属性を設定するには、2つの方法があります。
datasetsの
DatasetBuilder.BUILDER_CONFIGS()属性に、BuilderConfigクラス(またはそのサブクラス)のインスタンスのリストを定義済みとして提供します。load_dataset()を呼び出すと、メソッド固有でないキーワード引数は、BuilderConfigクラスの関連する属性を設定するために使用されます。これにより、特定の構成が選択されている場合、事前に定義された属性が上書きされます。
DatasetBuilder.BUILDER_CONFIG_CLASSを、BuilderConfigの任意のカスタムサブクラスに設定することもできます。
DatasetBuilder
DatasetBuilder は、BuilderConfig 内のすべての属性にアクセスして、実際のデータセットを構築します。

DatasetBuilderには、主に3つのメソッドがあります:
DatasetBuilder._info()は、データセットの属性を定義する役割を担っています。dataset.infoを呼び出すと、🤗 Datasets はここに保存されている情報が返されます。同様に、Features もここで指定されます。Features はデータセットの骨格のようなもので、各カラムの名前と型を提供します。DatasetBuilder._split_generatorは、要求されたデータファイルをダウンロードまたは取得し、スプリットに整理して、生成プロセスのための特定の引数を定義します。このメソッドには、ファイルをダウンロードするか、ローカルファイルシステムから取得する DownloadManager が含まれています。DownloadManager 内には、元のデータファイルへの URL の辞書を受け取り、要求されたファイルをダウンロードする DownloadManager.download_and_extract() メソッドがあります。受け入れられる入力には、単一の URL またはパス、または URL またはパスのリスト/辞書が含まれます。TAR、GZIP、ZIP アーカイブなどの圧縮ファイル形式は、自動的に展開されます。ファイルのダウンロードが完了すると、SplitGenerator がそれらをスプリットに整理します。SplitGenerator にはスプリットの名前と、
DatasetBuilder._generate_examplesメソッドに渡されるすべてのキーワード引数が含まれます。キーワード引数はスプリットごとに固有のものであり、通常は各スプリットに対するデータファイルのローカルパスを少なくとも含みます。DatasetBuilder._generate_examplesは、スプリット用のデータファイルを読み込み、解析します。その後、DatasetBuilder._info()のfeaturesで指定された形式に従って、データセットの例を生成します。DatasetBuilder._generate_examplesの入力値は、実際には最後のメソッドのキーワード引数で提供されたfilepathです。データセットはPythonのジェネレーターによって生成され、すべてのデータをメモリに読み込みません。そのため、ジェネレーターは大きなデータセットを処理できます。ただし、生成されたサンプルがディスク上のデータセットファイルに書き出される(フラッシュされる)前に、
ArrowWriterバッファに格納されます。つまり、生成されたサンプルはバッチ単位で書き出されます。データセットのサンプルが大量のメモリを消費する(画像や動画など)場合は、DatasetBuilderのDEFAULT_WRITER_BATCH_SIZE属性に低い値を指定してください。200 MBを超えるサイズは避けることをお勧めします。
整合性の維持
データセットが完全であることを保証するために、load_dataset() はダウンロードされたファイルに対して一連のテストを実行し、すべてが揃っていることを確認します。これにより、要求したデータセットが想定どおりに生成されない場合に、予期せぬ問題に遭遇することがなくなります。load_dataset() は以下を検証します:
- 生成された
DatasetDictのスプリット数。 - 生成された
DatasetDictの各分割におけるサンプル数。 - ダウンロードされたファイルのリスト。
- ダウンロードされたファイルのSHA256チェックサム(デフォルトでは無効)。
データセットが検証に合格しない場合、データセットの作成者がデータファイルに変更を加えた可能性が高いです。
この場合、データセットが変更されたことを示すエラーが発生します。
エラーを無視するには、load_dataset()でverification_mode="no_checks"を指定する必要があります。
検証エラーに遭遇した場合は、対応するデータセットの「Community」タブでディスカッションやプルリクエストを作成して、そのデータセットの整合性チェックが更新されるようご協力ください。
セキュリティ
Hub上のデータセットリポジトリはマルウェアのスキャン対象です。詳細はこちらをご覧ください。
Update on GitHub