Datasets documentation

データセットの作成

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

データセットの作成

独自のデータで作業している場合、データセットの作成が必要なことがあります。🤗 Datasets を使用してデータセットを作成すると、ライブラリのすべての利点(高速な読み込みと処理、巨大なデータセットのストリーミング、メモリマッピングなど)がデータセットに適用されます。🤗 Datasets のローコードアプローチにより、データセットを簡単に、かつ迅速に作成でき、モデルの学習を開始するまでの時間を短縮できます。多くの場合、Hub 上のデータセットリポジトリにデータファイルをドラッグ & ドロップするだけで済みます。

このチュートリアルでは、ご自身のデータからデータセットを作成するための🤗 Datasetsのローコードメソッドの使い方を学びます。

注記

既存のデータセットの読み込み方法、またはローカルおよびリモートファイル(CSV、JSON、Parquet など)の読み込み方法について詳しく知りたい場合は、Load guideを参照してください。

このチュートリアルでは、以下を扱います:

  • Folder-based builders を使用して、画像またはオーディオのデータセットを素早く作成します
  • ローカルのPythonオブジェクトからデータセットを作成するためのfrom_メソッド

ファイルベースのビルダー

🤗 Datasets は、csv、json/jsonl、parquet、txt など、多くの一般的な形式をサポートしています。

例えば、1つまたは複数のCSVファイルで構成されたデータセットを読み込むことができます(この場合、CSVファイルのリストとして渡します)。

>>> from datasets import load_dataset
>>> dataset = load_dataset("csv", data_files="my_file.csv")

サポートされている形式のリストとコード例については、こちらのガイドに従ってください。

フォルダーベースのビルダー

フォルダベースのビルダーには、ImageFolderとAudioFolderの2種類があります。これらは、数千件のサンプルを含む画像または音声・オーディオのデータセットを素早く作成するためのローコード手法です。より大規模なデータセットへの拡張の前に、コンピュータビジョンや音声モデルのプロトタイプを迅速に構築する際に最適です。フォルダベースのビルダーは、あなたのデータを取得し、データセットの特徴量、スプリット、ラベルを自動的に生成します。内部の仕組みは以下の通りです:

  • ImageFolderは、Image機能を使用して画像ファイルをデコードします。jpgやpngなど多くの画像拡張子形式がサポートされていますが、その他の形式もサポートされています。サポートされている画像拡張子の完全なリストを確認できます。
  • AudioFolder は Audio 機能を使用してオーディオファイルをデコードします。wav、mp3、mp4 などの拡張子がサポートされており、サポートされているオーディオ拡張子の完全なリストを確認できます。デコードは ffmpeg を通じて行われます。

データセットのスプリットはリポジトリの構造から生成され、ラベル名はディレクトリ名から自動的に推論されます。

例えば、画像データセット(音声データセットも同様です)が次のように保存されている場合:

pokemon/train/grass/bulbasaur.png
pokemon/train/fire/charmander.png
pokemon/train/water/squirtle.png

pokemon/test/grass/ivysaur.png
pokemon/test/fire/charmeleon.png
pokemon/test/water/wartortle.png

次に、フォルダーベースのビルダーが例を生成する方法を示します。

imagefolder を指定して load_dataset() を呼び出し、画像データセットを作成します:

>>> from datasets import load_dataset

>>> dataset = load_dataset("imagefolder", data_dir="/path/to/pokemon")

オーディオデータセットも同様に作成しますが、load_dataset()では代わりにaudiofolderを指定します。

>>> from datasets import load_dataset

>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")

データセットに関する追加情報(テキストキャプションや文字起こしなど)は、データセットを含むフォルダー内のmetadata.csvファイルに含めることができます。メタデータファイルには、画像または音声ファイルとその対応するメタデータをリンクするためのfile_name列が必要です。

file_name, text
bulbasaur.png, There is a plant seed on its back right from the day this Pokémon is born.
charmander.png, It has a preference for hot things.
squirtle.png, When it retracts its long neck into its shell, it squirts out water with vigorous force.

これらのフォルダーベースのビルダーの詳細については、ImageFolder、AudioFolder、またはMeshFolderのガイドをご覧ください。

Pythonの辞書から

Pythonの辞書内のデータからデータセットを作成することもできます。from_メソッドを使用してデータセットを作成するには、2つの方法があります。

  • ジェネレータの反復的な動作により、from_generator() メソッドはgeneratorからデータセットを作成する最もメモリ効率の高い方法です。メモリに収まらない可能性のある非常に大きなデータセットを扱う際に特に有用であり、データセットはディスク上に段階的に生成され、その後メモリマップされます。

    >>> from datasets import Dataset
    >>> def gen():
    ...     yield {"pokemon": "bulbasaur", "type": "grass"}
    ...     yield {"pokemon": "squirtle", "type": "water"}
    >>> ds = Dataset.from_generator(gen)
    >>> ds[0]
    {"pokemon": "bulbasaur", "type": "grass"}

    ジェネレーターベースのIterableDatasetは、例えばforループで反復処理する必要があります。

    >>> from datasets import IterableDataset
    >>> ds = IterableDataset.from_generator(gen)
    >>> for example in ds:
    ...     print(example)
    {"pokemon": "bulbasaur", "type": "grass"}
    {"pokemon": "squirtle", "type": "water"}
  • from_dict() メソッドは、辞書からデータセットを作成するためのシンプルな方法です:

    >>> from datasets import Dataset
    >>> ds = Dataset.from_dict({"pokemon": ["bulbasaur", "squirtle"], "type": ["grass", "water"]})
    >>> ds[0]
    {"pokemon": "bulbasaur", "type": "grass"}

    画像または音声のデータセットを作成するには、cast_column() メソッドを from_dict() とチェーンし、カラムとフィーチャーの型を指定します。例えば、音声のデータセットを作成するには:

    >>> audio_dataset = Dataset.from_dict({"audio": ["path/to/audio_1", ..., "path/to/audio_n"]}).cast_column("audio", Audio())

データセットの作成方法が分かったところで、コミュニティにも貢献できるよう、Hubで共有することを検討してください。次のセクションに進み、データセットの共有方法について学びましょう。

Update on GitHub