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

主要クラス

DatasetInfo

class datasets.DatasetInfo

< >

( description: str = <factory>citation: str = <factory>homepage: str = <factory>license: str = <factory>features: typing.Optional[datasets.features.features.Features] = Nonepost_processed: typing.Optional[datasets.info.PostProcessedInfo] = Nonesupervised_keys: typing.Optional[datasets.info.SupervisedKeysData] = Nonebuilder_name: typing.Optional[str] = Nonedataset_name: typing.Optional[str] = Noneconfig_name: typing.Optional[str] = Noneversion: typing.Union[str, datasets.utils.version.Version, NoneType] = Nonesplits: typing.Optional[datasets.splits.SplitDict] = Nonedownload_checksums: typing.Optional[dict] = Nonedownload_size: typing.Optional[int] = Nonepost_processing_size: typing.Optional[int] = Nonedataset_size: typing.Optional[int] = Nonesize_in_bytes: typing.Optional[int] = None )

パラメータ

  • description (str) — データセットの説明です。
  • citation (str) — データセットのBibTeX引用情報。
  • homepage (str) — データセットの公式ホームページへのURLです。
  • license (str) — データセットのライセンスです。ライセンス名、またはライセンスの条件を含む段落を指定できます。
  • features (Features、任意) — データセットの列の型を指定するために使用される特徴量です。
  • post_processed (PostProcessedInfo、任意) — 非推奨です。データセットのポストプロセッシングに関するリソースの情報です。例えば、インデックスの情報を含む場合があります。
  • supervised_keys (SupervisedKeysData、任意) — データセットが適用可能な場合、教師あり学習用の入力特徴量とラベルを指定します(TFDSからのレガシー)。
  • builder_name (str, 省略可) — データセットを作成するために使用されるGeneratorBasedBuilderサブクラスの名前です。また、データセットビルダークラス名のsnake_case形式でもあります。
  • config_name (str, オプション) — BuilderConfig から派生した設定の名前。
  • version (str または Version、任意) — データセットのバージョンです。
  • splits (dict, 任意) — スプリット名とメタデータ間のマッピングです。
  • download_checksums (dict, 省略可) — データセットのチェックサムをダウンロードする URL と、それに対応するメタデータとの間のマッピングです。
  • download_size (int, 任意) — データセットを生成するためにダウンロードするファイルのサイズ(バイト単位)。
  • post_processing_size (int, 省略可) — 非推奨。後処理(ある場合)後のデータセットのサイズ(バイト単位)。
  • dataset_size (int, 任意) — すべてのスプリットに対する Arrow テーブルの合計サイズ(バイト単位)。
  • size_in_bytes (int, 任意) — データセットに関連付けられたすべてのファイルの合計サイズ(バイト単位)(ダウンロードされたファイル + Arrow ファイル)。
  • **config_kwargs (追加のキーワード引数) — BuilderConfigに渡され、DatasetBuilderで使用されるキーワード引数。

データセットに関する情報。

DatasetInfoは、データセットの名前、バージョン、特徴量など、データセットに関する情報を文書化します。 引数とプロパティの完全なリストについては、コンストラクターを参照してください。

すべてのフィールドが構築時に既知であるとは限らず、後で更新される場合があります。

from_directory

< >

( dataset_info_dir: strstorage_options: typing.Optional[dict] = None )

パラメータ

  • dataset_info_dir (str) — メタデータファイルを含むディレクトリです。これは、特定のデータセットバージョンのルートディレクトリである必要があります。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.9.0で追加

dataset_info_dir内のJSONファイルからDatasetInfoを作成します。

この関数は、DatasetInfoの動的に生成されるすべてのフィールド(num_examples、hash、作成時刻など)を更新します。

これにより、以前のすべてのメタデータが上書きされます。

例:

>>> from datasets import DatasetInfo
>>> ds_info = DatasetInfo.from_directory("/path/to/directory/")

write_to_directory

< >

( dataset_info_dirpretty_print = Falsestorage_options: typing.Optional[dict] = None )

パラメータ

  • dataset_info_dir (str) — 保存先ディレクトリ。
  • pretty_print (bool、デフォルトはFalse) — Trueの場合、JSONはインデントレベル4で整形出力されます。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.9.0で追加

DatasetInfoとライセンス(存在する場合)をJSONファイルとしてdataset_info_dirに書き出します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.info.write_to_directory("/path/to/directory/")

データセット

ベースクラスDatasetは、Apache ArrowテーブルをバックエンドとするDatasetを実装しています。

クラス datasets.Dataset

< >

( arrow_table: Tableinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_table: typing.Optional[datasets.table.Table] = Nonefingerprint: typing.Optional[str] = None )

ArrowテーブルをバックエンドとするDataset。

add_column

< >

( name: strcolumn: typing.Union[list, numpy.ndarray]new_fingerprint: typing.Optional[str] = Nonefeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure, NoneType] = None )

パラメータ

  • name (str) — 列名。
  • column (list または np.array) — 追加する列データ。
  • feature (FeatureType または None、デフォルトは None) — カラムのデータ型。

Datasetにカラムを追加します。

1.7で追加

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> more_text = ds["text"]
>>> ds = ds.add_column(name="text_2", column=more_text)
>>> ds
Dataset({
    features: ['text', 'label', 'text_2'],
    num_rows: 1066
})

add_item

< >

( item: dictnew_fingerprint: typing.Optional[str] = None )

パラメータ

  • item (dict) — 追加するアイテムデータ。

Datasetにアイテムを追加します。

1.7で追加

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> new_review = {'label': 0, 'text': 'this movie is the absolute worst thing I have ever seen'}
>>> ds = ds.add_item(new_review)
>>> ds[-1]
{'label': 0, 'text': 'this movie is the absolute worst thing I have ever seen'}

from_file

< >

( filename: strinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_filename: typing.Optional[str] = Nonein_memory: bool = False )

パラメータ

  • filename (str) — データセットのファイル名。
  • info (DatasetInfo、任意) — 説明や引用などの、データセットに関する情報です。
  • split (NamedSplit, 任意) — データセットの分割名。
  • indices_filename (str, 省略可) — インデックスのファイル名。
  • in_memory (bool, デフォルトは False) — データをメモリ内にコピーするかどうか。

filename の Arrow テーブルをバックエンドとする Dataset をインスタンス化します。

from_buffer

< >

( buffer: Bufferinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_buffer: typing.Optional[pyarrow.lib.Buffer] = None )

パラメータ

  • buffer (pyarrow.Buffer) — Arrowバッファ。
  • info (DatasetInfo、任意) — 説明や引用などの、データセットに関する情報です。
  • split (NamedSplit, 任意) — データセットの分割名。
  • indices_buffer (pyarrow.Buffer、任意) — インデックスの Arrow バッファ。

Arrowバッファをバックエンドに持つDatasetをインスタンス化します。

from_pandas

< >

( df: DataFramefeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonepreserve_index: typing.Optional[bool] = None )

パラメータ

  • df (pandas.DataFrame) — データセットを含むデータフレーム。
  • features (Features、任意) — データセットの機能です。
  • info (DatasetInfo、任意) — 説明や引用などの、データセットに関する情報です。
  • split (NamedSplit, 任意) — データセットの分割名。
  • preserve_index (bool, 省略可能) — 結果の Dataset にインデックスを追加の列として保存するかどうか。 デフォルトの None では、RangeIndex についてはメタデータとしてのみ保存されますが、それ以外のインデックスは列として保存されます。 preserve_index=True を使用すると、インデックスを列として保存することを強制できます。

pandas.DataFrameをpyarrow.Tableに変換して、Datasetを作成します。

結果として得られる Arrow Table のカラム型は、DataFrame 内の pandas.Series の dtype から推論されます。object 以外の Series の場合、NumPy の dtype はその Arrow 相当の型に変換されます。object の場合、この Series 内の Python オブジェクトを確認してデータ型を推測する必要があります。

object dtype の Series には、常に意味のある Arrow 型を導出するのに十分な情報が含まれていない点にご注意ください。DataFrame の長さが 0 である場合や、Series が None/nan オブジェクトのみを含む場合など、型を推論できない場合は、型は null に設定されます。この動作を回避するには、明示的な features を構築し、この関数に渡すことができます。

Important: a dataset created with from_pandas() lives in memory and therefore doesn’t have an associated cache directory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. save_to_disk / load_from_disk.

例:

>>> ds = Dataset.from_pandas(df)

from_dict

< >

( mapping: dictfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneon_mixed_types: typing.Optional[typing.Literal['use_json']] = None )

パラメータ

  • mapping (Mapping) — 文字列から配列または Python リストへのマッピング。
  • features (Features、任意) — データセットの機能です。
  • info (DatasetInfo、任意) — 説明や引用などの、データセットに関する情報です。
  • split (NamedSplit, 任意) — データセットの分割名。
  • on_mixed_types (Literal["use_json"], 省略可能, デフォルトは None) — 「use_json」の場合、混合型のフィールドに Json() 型を使用します。つまり、事前定義されたスキーマを持たない非構造化データを含むフィールドです。この場合、混合型のフィールドは Json() に設定されます。

    これにより、文字列/整数/浮動小数点数の混合リストや、任意の値型を持つ辞書を読み込むことが可能になります。

    4.7.0で追加

dictをpyarrow.Tableに変換して、Datasetを作成します。

Important: a dataset created with from_dict() lives in memory and therefore doesn’t have an associated cache directory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. save_to_disk / load_from_disk.

例:

各カラムが1つのリストを含む辞書からDatasetを取得します:

>>> ds = Dataset.from_dict({"text": ["hello there !", "general kenobi !"]})

features を渡してカラムの型を設定します。画像データセットの場合の例を以下に示します。

>>> features = Features({"image": Image()})
>>> ds = Dataset.from_dict({"image": ["path/to/image.png"]}, features=features)

Datasets は列形式である Arrow をベースにしているため、すべての例が同じ型とサブタイプを持ち、辞書が同じキーと値の型を持つことを前提としています。 フィールドの型が一致しない場合、Datasets の読み込みはエラーになります。また、辞書の欠損フィールドには None が設定され、すべての辞書が同じキーと値の型を持つように補完されます。

この問題を回避し、エラーなしで混合型を許可するには、on_mixed_types="use_json"を使用するか、Json型でfeatures=を指定できます。

>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]})
Traceback (most recent call last):
  ...
  File "pyarrow/error.pxi", line 92, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Could not convert 'foo' with type str: tried to convert to int64

>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]}, on_mixed_types="use_json")
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]

>>> features = Features({"a": Json()})
>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]}, features=features)
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]

辞書の一覧でキーや値が任意の場合にも有用です。欠損フィールドをNoneで埋めることを避けることができます。

>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]})
>>> ds.features
{'a': List({'b': Value('int64'), 'c': Value('int64')})}
>>> list(ds["a"])
[[{'b': 0, 'c': None}, {'b': None, 'c': 0}]]  # missing fields are filled with None

>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, features=features)
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]]  # OK

>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, on_mixed_types="use_json")
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]]  # OK

ツール呼び出しデータを用いた別の例:

>>> messages = [
...     {"role": "user", "content": "Turn on the living room lights and play my electronic music playlist."},
...     {"role": "assistant", "tool_calls": [
...         {"type": "function", "function": {
...             "name": "control_light",
...             "arguments": {"room": "living room", "state": "on"}
...         }},
...         {"type": "function", "function": {
...             "name": "play_music",
...             "arguments": {"playlist": "electronic"}  # mixed-type here since keys ["playlist"] and ["room", "state"] are different
...         }}]
...     },
...     {"role": "tool", "name": "control_light", "content": "The lights in the living room are now on."},
...     {"role": "tool", "name": "play_music", "content": "The music is now playing."},
...     {"role": "assistant", "content": "Done!"}
... ]
>>> ds = Dataset.from_dict({"messages": [messages]}, on_mixed_types="use_json")
>>> ds.features
{'messages': List({'role': Value('string'), 'content': Value('string'), 'tool_calls': List(Json()), 'name': Value('string')})}
>>> ds[0]["messages"][1]["tool_calls"][0]["function"]["arguments"]
{"room": "living room", "state": "on"}

from_list

< >

( mapping: listfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneon_mixed_types: typing.Optional[typing.Literal['use_json']] = None )

パラメータ

  • mapping (List[dict]) — 文字列から行の値へのマッピングのリスト。
  • features(Features、省略可)— データセットの機能。
  • info (DatasetInfo, 任意) — 説明や引用などの、データセットに関する情報。
  • split (NamedSplit, 省略可) — データセットの分割の名前。
  • on_mixed_types (Literal["use_json"], 省略可能, デフォルトは None) — 「use_json」の場合、混合型のフィールドに Json() 型を使用します。つまり、事前定義されたスキーマを持たない非構造化データを含むフィールドです。この場合、混合型のフィールドは Json() に設定されます。

    これにより、文字列/整数/浮動小数点数の混合リストや、任意の値型を持つ辞書を読み込むことが可能になります。

    4.7.0で追加

辞書のリストをpyarrow.Tableに変換して、Datasetを作成します。

features に何かが渡された場合でも、最初のエントリのキーがデータセットの列を決定するために使用されることに注意してください。

Important: a dataset created with from_list() lives in memory and therefore doesn’t have an associated cache directory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. save_to_disk / load_from_disk.

例:

例を含むリストからDatasetを取得します:

>>> ds = Dataset.from_list([{"text": "hello there !"}, {"text": "general kenobi !"}]})

features を渡してカラムの型を設定します。画像データセットの場合の例を以下に示します。

>>> features = Features({"image": Image()})
>>> ds = Dataset.from_list([{"image": "path/to/image.png"}], features=features)

Datasets は列形式である Arrow をベースにしているため、すべての例が同じ型とサブタイプを持ち、辞書が同じキーと値の型を持つことを前提としています。 フィールドの型が一致しない場合、Datasets の読み込みはエラーになります。また、辞書の欠損フィールドには None が設定され、すべての辞書が同じキーと値の型を持つように補完されます。

この問題を回避し、エラーなしで混合型を許可するには、on_mixed_types="use_json"を使用するか、Json型でfeatures=を指定できます。

>>> ds = Dataset.from_list([{"a": 0}, {"a": "foo"}, {"a": {"subfield": "bar"}}])
Traceback (most recent call last):
  ...
  File "pyarrow/error.pxi", line 92, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Could not convert 'foo' with type str: tried to convert to int64

>>> ds = Dataset.from_list([{"a": 0}, {"a": "foo"}, {"a": {"subfield": "bar"}}], on_mixed_types="use_json")
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]

>>> features = Features({"a": Json()})
>>> ds = Dataset.from_list([{"a": 0}, {"a": "foo"}, {"a": {"subfield": "bar"}}], features=features)
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]

辞書の一覧でキーや値が任意の場合にも有用です。欠損フィールドをNoneで埋めることを避けることができます。

>>> ds = Dataset.from_list([{"a": [{"b": 0}, {"c": 0}]}])
>>> ds.features
{'a': List({'b': Value('int64'), 'c': Value('int64')})}
>>> list(ds["a"])
[[{'b': 0, 'c': None}, {'b': None, 'c': 0}]]  # missing fields are filled with None

>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_list([{"a": [{"b": 0}, {"c": 0}]}], features=features)
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]]  # OK

>>> ds = Dataset.from_list([{"a": [{"b": 0}, {"c": 0}]}], on_mixed_types="use_json")
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]]  # OK

ツール呼び出しデータを用いた別の例:

>>> messages = [
...     {"role": "user", "content": "Turn on the living room lights and play my electronic music playlist."},
...     {"role": "assistant", "tool_calls": [
...         {"type": "function", "function": {
...             "name": "control_light",
...             "arguments": {"room": "living room", "state": "on"}
...         }},
...         {"type": "function", "function": {
...             "name": "play_music",
...             "arguments": {"playlist": "electronic"}  # mixed-type here since keys ["playlist"] and ["room", "state"] are different
...         }}]
...     },
...     {"role": "tool", "name": "control_light", "content": "The lights in the living room are now on."},
...     {"role": "tool", "name": "play_music", "content": "The music is now playing."},
...     {"role": "assistant", "content": "Done!"}
... ]
>>> ds = Dataset.from_list([{"messages": messages}], on_mixed_types="use_json")
>>> ds.features
{'messages': List({'role': Value('string'), 'content': Value('string'), 'tool_calls': List(Json()), 'name': Value('string')})}
>>> ds[0]["messages"][1]["tool_calls"][0]["function"]["arguments"]
{"room": "living room", "state": "on"}

from_generator

< >

( generator: typing.Callablefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsegen_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonesplit: NamedSplit = NamedSplit('train')fingerprint: typing.Optional[str] = None**kwargs )

パラメータ

  • generator ( —Callable): yields してサンプルを生成するジェネレーター関数。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str、任意、デフォルトは"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • gen_kwargs(dict, 任意) — generator 呼び出し可能オブジェクトに渡すキーワード引数です。 gen_kwargs にシャードのリストを渡し、num_proc を 1 より大きく設定することで、シャード化されたデータセットを定義できます。
  • num_proc (int, 省略可能, デフォルトは None) — ローカルでデータセットをダウンロードおよび生成する際のプロセス数です。 データセットが複数のファイルで構成されている場合に役立ちます。デフォルトではマルチプロセッシングは無効です。 num_proc が 1 より大きい場合、 gen_kwargs 内のすべてのリスト値は同じ長さでなければなりません。これらの値はジェネレーターへの呼び出し間で分割されます。シャード数は、 gen_kwargs と num_proc.

    2.7.0で追加

  • split (NamedSplit, デフォルトは Split.TRAIN) — データセットに割り当てられる分割名。

    2.21.0で追加

  • fingerprint (str, 省略可) — データセット ID を生成するために使用されるフィンガープリント。デフォルトでは fingerprint は、ジェネレーター関数とすべての引数をハッシュ化して生成されますが、AI モデルのような大きなオブジェクトを使用している場合は遅くなる可能性があります。

    4.3.0で追加

  • **kwargs (追加のキーワード引数) — :GeneratorConfig に渡すキーワード引数。

ジェネレーターからDatasetを作成します。

ジェネレーターからデータをロードし、データをArrow形式でディスクにキャッシュしてから、ディスク上のメモリマップドArrowデータからDatasetを返します。

例:

>>> def gen():
...     yield {"text": "Good", "label": 0}
...     yield {"text": "Bad", "label": 1}
...
>>> ds = Dataset.from_generator(gen)
>>> def gen(shards):
...     for shard in shards:
...         with open(shard) as f:
...             for line in f:
...                 yield {"line": line}
...
>>> shards = [f"data{i}.txt" for i in range(32)]
>>> ds = Dataset.from_generator(gen, gen_kwargs={"shards": shards})

データ

< >

( )

データセットの基盤となるApache Arrowテーブル。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.data
MemoryMappedTable
text: string
label: int64
----
text: [["compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .","the soundtrack alone is worth the price of admission .","rodriguez does a splendid job of racial profiling hollywood style--casting excellent latin actors of all ages--a trend long overdue .","beneath the film's obvious determination to shock at any cost lies considerable skill and determination , backed by sheer nerve .","bielinsky is a filmmaker of impressive talent .","so beautifully acted and directed , it's clear that washington most certainly has a new career ahead of him if he so chooses .","a visual spectacle full of stunning images and effects .","a gentle and engrossing character study .","it's enough to watch huppert scheming , with her small , intelligent eyes as steady as any noir villain , and to enjoy the perfectly pitched web of tension that chabrol spins .","an engrossing portrait of uncompromising artists trying to create something original against the backdrop of a corporate music industry that only seems to care about the bottom line .",...,"ultimately , jane learns her place as a girl , softens up and loses some of the intensity that made her an interesting character to begin with .","ah-nuld's action hero days might be over .","it's clear why deuces wild , which was shot two years ago , has been gathering dust on mgm's shelf .","feels like nothing quite so much as a middle-aged moviemaker's attempt to surround himself with beautiful , half-naked women .","when the precise nature of matthew's predicament finally comes into sharp focus , the revelation fails to justify the build-up .","this picture is murder by numbers , and as easy to be bored by as your abc's , despite a few whopping shootouts .","hilarious musical comedy though stymied by accents thick as mud .","if you are into splatter movies , then you will probably have a reasonably good time with the salton sea .","a dull , simple-minded and stereotypical tale of drugs , death and mind-numbing indifference on the inner-city streets .","the feature-length stretch . . . strains the show's concept ."]]
label: [[1,1,1,1,1,1,1,1,1,1,...,0,0,0,0,0,0,0,0,0,0]]

cache_files

< >

( )

Apache Arrow テーブルで裏付けられているデータセットを含むキャッシュファイル。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.cache_files
[{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-validation.arrow'}]

num_columns

< >

( )

データセットの列数。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.num_columns
2

num_rows

< >

( )

データセットの行数(Dataset.len()と同じ)。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.num_rows
1066

column_names

< >

( )

データセットの列の名前。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.column_names
['text', 'label']

shape

< >

( )

データセットの形状(列数、行数)。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.shape
(1066, 2)

unique

< >

( column: str ) → list

パラメータ

  • column (str) — カラム名(column_namesで全カラム名をリスト表示できます)。

戻り値

list

指定されたカラムの一意の要素のリスト。

カラム内の一意の要素のリストを返します。

これは低レベルのバックエンドで実装されており、そのため非常に高速です。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.unique('label')
[1, 0]

flatten

< >

( new_fingerprint: typing.Optional[str] = Nonemax_depth = 16 ) → Dataset

パラメータ

  • new_fingerprint (str, 省略可) — 変換後のデータセットの新しいフィンガープリントです。 None の場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。

フラット化されたカラムを持つデータセットのコピー。

テーブルをフラットにします。 struct 型の各カラムは、struct のフィールドごとに1カラムずつにフラット化されます。 その他のカラムは変更されません。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("rajpurkar/squad", split="train")
>>> ds.features
{'id': Value('string'),
 'title': Value('string'),
 'context': Value('string'),
 'question': Value('string'),
 'answers': {'text': List(Value('string')),
 'answer_start': List(Value('int32'))}}
>>> ds = ds.flatten()
>>> ds
Dataset({
    features: ['id', 'title', 'context', 'question', 'answers.text', 'answers.answer_start'],
    num_rows: 87599
})

キャスト

< >

( features: Featuresbatch_size: typing.Optional[int] = 1000keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000num_proc: typing.Optional[int] = None ) → Dataset

パラメータ

  • features (Features) — データセットをキャストする新しい特徴量。 特徴量のフィールド名は、現在の列名と一致する必要があります。 また、データ型も、ある型から別の型へ変換可能である必要があります。 str <-> ClassLabel のような非自明な変換を行う場合は、map() を使用して Dataset を更新してください。
  • batch_size (int, デフォルトは 1000) — cast に渡すバッチあたりのサンプル数です。 batch_size <= 0 または batch_size == None の場合、データセット全体を単一のバッチとして cast に渡します。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • load_from_cache_file (bool、キャッシュが有効な場合のデフォルトはTrue) — functionの現在の計算を保存したキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • cache_file_name (str, 任意、デフォルトはNone) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、このパスに計算結果を保存するために使用されます。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくすると map() の実行中に消費される一時メモリ量が少なくなります。
  • num_proc (int、任意、デフォルトはNone) — マルチプロセッシングに使用するプロセス数です。デフォルトではマルチプロセッシングを使用しません。

キャストされた特徴量を持つデータセットのコピー。

データセットを新しい特徴量のセットにキャストします。

例:

>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
 'text': Value('string')}
>>> new_features = ds.features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
 'text': Value('large_string')}

cast_column

< >

( column: strfeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure]new_fingerprint: typing.Optional[str] = None )

パラメータ

  • column (str) — 列名。
  • feature (FeatureType) — ターゲットとなる特徴量です。
  • new_fingerprint (str, 省略可) — 変換後のデータセットの新しいフィンガープリントです。 None の場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。

デコード用にカラムをfeatureにキャストします。

例:

>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
 'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
 'text': Value('string')}

remove_columns

< >

( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset

パラメータ

  • column_names (Union[str, List[str]]) — 削除するカラムの名前。
  • new_fingerprint (str, 省略可) — 変換後のデータセットの新しいフィンガープリントです。 None の場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。

削除するカラムを含まない、データセットオブジェクトのコピー。

データセットから1つ以上のカラムと、それに関連する特徴量を削除します。

remove_columns を使用して map() で列を削除することもできますが、本メソッドは残りの列のデータをコピーしないため、より高速です。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.remove_columns('label')
Dataset({
    features: ['text'],
    num_rows: 1066
})
>>> ds = ds.remove_columns(column_names=ds.column_names) # Removing all the columns returns an empty dataset with the `num_rows` property set to 0
Dataset({
    features: [],
    num_rows: 0
})

rename_column

< >

( original_column_name: strnew_column_name: strnew_fingerprint: typing.Optional[str] = None ) → Dataset

パラメータ

  • original_column_name (str) — リネームする列の名前。
  • new_column_name (str) — 列の新しい名前。
  • new_fingerprint (str, 省略可) — 変換後のデータセットの新しいフィンガープリントです。 None の場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。

列名が変更されたデータセットのコピー。

データセット内のカラム名を変更し、元のカラムに関連付けられた特徴量を新しいカラム名の下に移動します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.rename_column('label', 'label_new')
Dataset({
    features: ['text', 'label_new'],
    num_rows: 1066
})

rename_columns

< >

( column_mapping: dictnew_fingerprint: typing.Optional[str] = None ) → Dataset

パラメータ

  • column_mapping (Dict[str, str]) — 列を新しい名前に変更するためのマッピング
  • new_fingerprint (str, 省略可) — 変換後のデータセットの新しいフィンガープリントです。 None の場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。

列名が変更されたデータセットのコピー

データセット内の複数の列の名前を変更し、元の列に関連する特徴量を新しい列名の下に移動します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.rename_columns({'text': 'text_new', 'label': 'label_new'})
Dataset({
    features: ['text_new', 'label_new'],
    num_rows: 1066
})

select_columns

< >

( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset

パラメータ

  • column_names (Union[str, List[str]]) — 保持するカラムの名前。
  • new_fingerprint (str, 省略可) — 変換後のデータセットの新しいフィンガープリント。None の場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。

選択されたカラムのみで構成される、データセットオブジェクトのコピー。

データセット内の1つ以上のカラムと、それに関連する特徴量を選択します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.select_columns(['text'])
>>> ds
Dataset({
    features: ['text'],
    num_rows: 1066
})

class_encode_column

< >

( column: strinclude_nulls: bool = False )

パラメータ

  • column (str) — キャストする列の名前(column_namesですべての列名をリストできます)
  • include_nulls (bool, デフォルトは False) — クラスラベルに null 値を含めるかどうか。 True, の場合、null 値は "None" クラスラベルとしてエンコードされます。

    1.14.2で追加

与えられたカラムをClassLabelとしてキャストし、テーブルを更新します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("google/boolq", split="validation")
>>> ds.features
{'answer': Value('bool'),
 'passage': Value('string'),
 'question': Value('string')}
>>> ds = ds.class_encode_column('answer')
>>> ds.features
{'answer': ClassLabel(num_classes=2, names=['False', 'True']),
 'passage': Value('string'),
 'question': Value('string')}

__len__

< >

( )

データセットの行数。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.__len__
<bound method Dataset.__len__ of Dataset({
    features: ['text', 'label'],
    num_rows: 1066
})>

__iter__

< >

( )

例を反復します。

Dataset.set_format()でフォーマットが設定されている場合、選択されたフォーマットで行が返されます。

iter

< >

( batch_size: intdrop_last_batch: bool = False )

パラメータ

  • batch_size (int) — 各バッチのサイズ。
  • drop_last_batch (bool、デフォルト False) — バッチサイズより小さい最後のバッチを破棄するかどうか

サイズがbatch_sizeのバッチを反復します。

[~datasets.Dataset.set_format] でフォーマットが設定されている場合、選択されたフォーマットで各行が返されます。

formatted_as

< >

( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )

パラメータ

  • type (str, 省略可能) — [None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'] から選択した出力タイプ。 None は、getitem“ が Python オブジェクトを返すことを意味します(デフォルト)。
  • columns (List[str], 任意) — 出力で整形する列。 None は __getitem__ がすべての列を返すことを意味します(デフォルト)。
  • output_all_columns (bool、デフォルトはFalse) — 出力に、フォーマットされていないカラムも(Python オブジェクトとして)含めるかどうか。
  • **format_kwargs (追加のキーワード引数) — np.array、torch.tensor、tensorflow.ragged.constant などの変換関数に渡されるキーワード引数。

with 文で使用します。__getitem__ の戻り値の形式(型とカラム)を設定します。

set_format

< >

( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )

パラメータ

  • type (str, 省略可能) — [None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'] から選択した出力タイプ。 None は、__getitem__ が Python オブジェクトを返すことを意味します(デフォルト)。
  • columns (List[str], 任意) — 出力で整形する列。 None は __getitem__ がすべての列を返すことを意味します(デフォルト)。
  • output_all_columns (bool、デフォルトはFalse) — 出力に、フォーマットされていないカラムも(Python オブジェクトとして)含めるかどうか。
  • **format_kwargs (追加のキーワード引数) — np.array、torch.tensor、tensorflow.ragged.constant などの変換関数に渡されるキーワード引数。

__getitem__の戻り値の形式(型とカラム)を設定します。データの整形はオンザフライで適用されます。 __getitem__を使用する際にバッチを整形するために、形式のtype(例:“numpy”)が使用されます。 また、set_transform()を使用してカスタムな変換を整形に用いることも可能です。

set_formatを呼び出した後でmap()を呼び出すことも可能です。mapは新しい列を追加する可能性があるため、フォーマットされた列のリスト

更新されます。この場合、map をデータセットに適用して新しい列を追加すると、その列は次のようにフォーマットされます:

new formatted columns = (all columns - previously unformatted columns)

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds.set_format(type='numpy', columns=['text', 'label'])
>>> ds.format
{'type': 'numpy',
'format_kwargs': {},
'columns': ['text', 'label'],
'output_all_columns': False}

set_transform

< >

( transform: typing.Optional[typing.Callable]columns: typing.Optional[list] = Noneoutput_all_columns: bool = False )

パラメータ

  • transform (Callable, 省略可) — ユーザーが定義したフォーマット変換。 set_format() で定義されたフォーマットを置き換えます。 フォーマット関数は、バッチ(dict として)を入力に取り、バッチを返す呼び出し可能なオブジェクトです。 この関数は、 __getitem__ でオブジェクトを返す直前に適用されます。
  • columns (List[str], 任意) — 出力で整形する列を指定します。 指定した場合、transform の入力バッチにはこれらの列のみが含まれます。
  • output_all_columns (bool、デフォルトはFalse) — 出力に、フォーマットされていないカラムも(Python オブジェクトとして)含めます。True に設定すると、transform の出力に加えて、他のフォーマットされていないカラムも保持されます。

このtransformを使用して__getitem__の返却形式を設定します。__getitem__が呼び出された際に、バッチに対してこのtransformがオンザフライで適用されます。 set_format()と同様に、reset_format()を使用してリセットできます。

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
>>> def encode(batch):
...     return tokenizer(batch['text'], padding=True, truncation=True, return_tensors='pt')
>>> ds.set_transform(encode)
>>> ds[0]
{'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1]),
 'input_ids': tensor([  101, 29353,  2135, 15102,  1996,  9428, 20868,  2890,  8663,  6895,
         20470,  2571,  3663,  2090,  4603,  3017,  3008,  1998,  2037, 24211,
         5637,  1998, 11690,  2336,  1012,   102]),
 'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0])}

reset_format

< >

( )

__getitem__の戻り値の形式をPythonオブジェクトおよび全カラムにリセットします。

self.set_format() と同じです

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds.set_format(type='numpy', columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'])
>>> ds.format
{'columns': ['input_ids', 'token_type_ids', 'attention_mask', 'label'],
 'format_kwargs': {},
 'output_all_columns': False,
 'type': 'numpy'}
>>> ds.reset_format()
>>> ds.format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
 'format_kwargs': {},
 'output_all_columns': False,
 'type': None}

with_format

< >

( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )

パラメータ

  • type (str, 省略可能) — [None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'] から選択した出力タイプ。 None は、__getitem__ が Python オブジェクトを返すことを意味します(デフォルト)。
  • columns (List[str], 任意) — 出力で整形する列。 None は __getitem__ がすべての列を返すことを意味します(デフォルト)。
  • output_all_columns (bool、デフォルトはFalse) — 出力に、フォーマットされていないカラムも(Python オブジェクトとして)含めるかどうか。
  • **format_kwargs (追加のキーワード引数) — np.array、torch.tensor、tensorflow.ragged.constant などの変換関数に渡されるキーワード引数。

__getitem__の返り値の形式(型とカラム)を設定します。データの整形はオンザフライで適用されます。 __getitem__を使用する際にバッチを整形するために、形式のtype(例:“numpy”)が使用されます。

It’s also possible to use custom transforms for formatting using with_transform().

set_format()とは異なり、with_formatは新しいDatasetオブジェクトを返します。

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds.format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
 'format_kwargs': {},
 'output_all_columns': False,
 'type': None}
>>> ds = ds.with_format("torch")
>>> ds.format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
 'format_kwargs': {},
 'output_all_columns': False,
 'type': 'torch'}
>>> ds[0]
{'text': 'compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
 'label': tensor(1),
 'input_ids': tensor([  101, 18027, 16310, 16001,  1103,  9321,   178, 11604,  7235,  6617,
        1742,  2165,  2820,  1206,  6588, 22572, 12937,  1811,  2153,  1105,
        1147, 12890, 19587,  6463,  1105, 15026,  1482,   119,   102,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0]),
 'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
 'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])}

with_transform

< >

( transform: typing.Optional[typing.Callable]columns: typing.Optional[list] = Noneoutput_all_columns: bool = False )

パラメータ

  • transform (Callable, optional) — ユーザーが定義したフォーマット変換。 set_format() で定義されたフォーマットを置き換えます。 フォーマット関数は、バッチ(dict として)を入力に取り、バッチを返す呼び出し可能なオブジェクトです。 この関数は、 __getitem__ でオブジェクトを返す直前に適用されます。
  • columns (List[str], optional) — 出力で整形するカラムを指定します。 指定した場合、transform の入力バッチには、これらのカラムのみが含まれます。
  • output_all_columns (bool、デフォルトはFalse) — 出力に、フォーマットされていないカラムも(Python オブジェクトとして)含めます。 True に設定すると、変換の出力とともに、他のフォーマットされていないカラムも保持されます。

この transform を使用して、__getitem__ の返却形式を設定します。__getitem__ が呼び出された際に、バッチに対してこの transform がオンザフライで適用されます。

set_format()と同様に、reset_format()を使用してリセットできます。

set_transform()とは異なり、with_transformは新しいDatasetオブジェクトを返します。

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> def encode(example):
...     return tokenizer(example["text"], padding=True, truncation=True, return_tensors='pt')
>>> ds = ds.with_transform(encode)
>>> ds[0]
{'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1]),
 'input_ids': tensor([  101, 18027, 16310, 16001,  1103,  9321,   178, 11604,  7235,  6617,
         1742,  2165,  2820,  1206,  6588, 22572, 12937,  1811,  2153,  1105,
         1147, 12890, 19587,  6463,  1105, 15026,  1482,   119,   102]),
 'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0])}

__getitem__

< >

( key )

列(文字列名で)または行(整数インデックス、インデックスの反復可能オブジェクト、またはブール値で)をインデックス付けするために使用できます。

cleanup_cache_files

< >

( ) → int

戻り値

int

削除されたファイルの数。

現在使用中のキャッシュファイルがある場合はそれを除き、データセットのキャッシュディレクトリ内のすべてのキャッシュファイルを削除します。

このコマンドを実行する際は、他のプロセスが別のキャッシュファイルを使用していないことに注意してください。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds.cleanup_cache_files()
10

map

< >

( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000features: typing.Optional[datasets.features.features.Features] = Nonedisable_nullable: bool = Falsefn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonesuffix_template: str = '_{rank:05d}_of_{num_proc:05d}'new_fingerprint: typing.Optional[str] = Nonedesc: typing.Optional[str] = Nonetry_original_type: typing.Optional[bool] = Trueon_mixed_types: typing.Optional[typing.Literal['use_json']] = 'use_json' )

パラメータ

  • function (Callable) — 次のいずれかのシグネチャを持つ関数:
    • function(example: Dict[str, Any]) -> Dict[str, Any] は、batched=False かつ with_indices=False かつ with_rank=False の場合
    • function(example: Dict[str, Any], *extra_args) -> Dict[str, Any] は、batched=False かつ with_indices=True および/または with_rank=True の場合、それぞれ1つずつ追加の引数を受け取ります
    • function(batch: Dict[str, List]) -> Dict[str, List] は、batched=True かつ with_indices=False かつ with_rank=False の場合
    • function(batch: Dict[str, List], *extra_args) -> Dict[str, List] は、batched=True および with_indices=True および/または with_rank=True の場合(それぞれ1つの追加引数)

    高度な用途では、関数はpyarrow.Tableを返すこともできます。 関数が非同期の場合、mapは関数を並列で実行します。 さらに、関数が何も返さない(None)場合、mapは関数を実行し、データセットを変更せずに返します。 関数が指定されない場合、恒等関数lambda x: xがデフォルトとして使用されます。

  • with_indices (bool、デフォルトはFalse) — functionにサンプルのインデックスを提供します。この場合、functionのシグネチャはdef function(example, idx[, rank]): ...である必要があります。
  • with_rank (bool、デフォルトは False) — function にプロセスのランクを渡します。この場合、function のシグネチャは def function(example[, idx], rank): ... である必要があります。
  • input_columns (Optional[Union[str, List[str]]]、デフォルトは None) — function に位置引数として渡す列を指定します。None の場合、フォーマット済みのすべての列へのマッピングを含む dict が 1 つの引数として渡されます。
  • batched (bool、デフォルトはFalse) — functionにサンプルのバッチを提供します。
  • batch_size (int, 任意, デフォルトは 1000) — batched=True の場合、function に渡すバッチあたりのサンプル数です。 batch_size <= 0 または batch_size == None の場合、データセット全体を単一のバッチとして function に渡します。
  • drop_last_batch (bool、デフォルトは False) — batch_size より小さい最後のバッチを、関数で処理する代わりに破棄するかどうか。
  • remove_columns (Optional[Union[str, List[str]]]、デフォルトは None) — マッピング処理中に、選択した列を削除します。 列は、function の出力で例を更新する前に削除されます。つまり、function が remove_columns に含まれる名前の列を追加する場合、これらの列は保持されます。
  • keep_in_memory (bool、デフォルトはFalse) — キャッシュファイルに書き込む代わりに、データセットをメモリに保持します。
  • load_from_cache_file (Optional[bool]、キャッシュが有効な場合のデフォルトはTrue) — functionの現在の計算を保存したキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • cache_file_name (str, 任意、デフォルトはNone) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、このパスに計算結果を保存するために使用されます。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくすると map 実行中の一時メモリ消費量が少なくなります。
  • features (Optional[datasets.Features]、デフォルトはNone) — 自動生成されるものではなく、特定のFeaturesを使用してキャッシュファイルを保存します。
  • disable_nullable (bool、デフォルトはFalse) — テーブル内の null 値を許可しません。
  • fn_kwargs (Dict、任意、デフォルトはNone) — functionに渡すキーワード引数。
  • num_proc (int, 省略可能, デフォルトは None) — マルチプロセッシングに使用するプロセス数。
    • Noneまたは0の場合、マルチプロセッシングは使用されず、操作はメインプロセスで実行されます。
    • If greater than 1, one or multiple worker processes are used to process data in parallel. Note: The function passed to map() must be picklable for multiprocessing to work correctly (i.e., prefer functions defined at the top level of a module, not inside another function or class). suffixtemplate (str): If cache_file_name is specified, then this suffix will be added at the end of the base name of each. Defaults to `”{rank:05d}of{num_proc:05d}”. For example, if cache_file_nameis "processed.arrow", then forrank=1andnum_proc=4, the resulting file would be “processed_00001_of_00004.arrow”` for the default suffix.
  • new_fingerprint (str、省略可能、デフォルトはNone) — 変換後のデータセットの新しいフィンガープリントです。 Noneの場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。
  • desc (str、任意、デフォルトは None) — 例のマッピング中にプログレスバーとともに表示される意味のある説明。
  • try_original_type (Optional[bool], デフォルトは True) — 元の列の型を維持しようとします(例: int32 -> int32)。常に新しい型を推論したい場合は False に設定してください。
  • on_mixed_types (Literal["use_json"], 省略可能, デフォルトは None) — 「use_json」の場合、混合型のフィールドに Json() 型を使用します。つまり、事前定義されたスキーマを持たない非構造化データを含むフィールドです。この場合、混合型のフィールドは Json() に設定されます。

    これにより、文字列/整数/浮動小数点数の混合リストや、任意の値型を持つ辞書を読み込むことが可能になります。

    4.7.0で追加

テーブル内のすべての例(個別またはバッチ単位)に関数を適用し、テーブルを更新します。 関数がすでに存在するカラムを返す場合、そのカラムは上書きされます。

batched パラメータで、関数をバッチ処理にするかどうかを指定できます:

  • Falseの場合、関数は1つの例を受け取り、1つの例を返す必要があります。 例は辞書であり、例えば{"text": "Hello there !"}です。
  • True かつ batch_size が 1 の場合、この関数は 1 つのサンプルのバッチを入力として受け取り、1 つ以上のサンプルを含むバッチを返すことができます。 バッチは辞書であり、例えば 1 つのサンプルのバッチは {"text": ["Hello there !"]} のようになります。
  • True かつ batch_size が n > 1 の場合、この関数は n 個のサンプルのバッチを入力として受け取り、n 個のサンプルを含むバッチ、または任意の数のサンプルを含むバッチを返すことができます。 最後のバッチは n 個未満のサンプルを含む場合があります。 バッチは辞書です。例えば、n 個のサンプルのバッチは {"text": ["Hello there !"] * n} のようになります。

関数が非同期の場合、mapは最大1,000回の同時呼び出しで、関数を並列に実行します。 同時に実行できる操作の最大数を設定したい場合は、関数内でasyncio.Semaphoreを使用することをお勧めします。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> def add_prefix(example):
...     example["text"] = "Review: " + example["text"]
...     return example
>>> ds = ds.map(add_prefix)
>>> ds[0:3]["text"]
['Review: compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
 'Review: the soundtrack alone is worth the price of admission .',
 'Review: rodriguez does a splendid job of racial profiling hollywood style--casting excellent latin actors of all ages--a trend long overdue .']

# process a batch of examples
>>> ds = ds.map(lambda example: tokenizer(example["text"]), batched=True)
# set number of processors
>>> ds = ds.map(add_prefix, num_proc=4)

フィルタ

< >

( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonesuffix_template: str = '_{rank:05d}_of_{num_proc:05d}'new_fingerprint: typing.Optional[str] = Nonedesc: typing.Optional[str] = None )

パラメータ

  • function (Callable) — 次のいずれかのシグネチャを持つ Callable:
    • function(example: Dict[str, Any]) -> bool は、batched=False かつ with_indices=False かつ with_rank=False の場合です。
    • function(example: Dict[str, Any], *extra_args) -> bool は、batched=False かつ with_indices=True および/または with_rank=True の場合(それぞれ1つの追加引数)
    • batched=True かつ with_indices=False かつ with_rank=False の場合、function(batch: Dict[str, List]) -> List[bool]
    • function(batch: Dict[str, List], *extra_args) -> List[bool] は、batched=True および with_indices=True および/または with_rank=True の場合、それぞれ 1 つずつの追加引数を受け取ります

    関数が非同期の場合、filterは関数を並列で実行します。 関数が指定されていない場合、常にTrueを返す関数lambda x: Trueがデフォルトとして使用されます。

  • with_indices (bool、デフォルトはFalse) — functionにサンプルのインデックスを提供します。この場合、functionのシグネチャはdef function(example, idx[, rank]): ...である必要があります。
  • with_rank (bool、デフォルトは False) — function にプロセスのランクを渡します。この場合、function のシグネチャは def function(example[, idx], rank): ... である必要があります。
  • input_columns (str または List[str]、省略可) — function に位置引数として渡す列を指定します。None の場合、すべての整形済み列へのマッピングを含む dict が 1 つの引数として渡されます。
  • batched (bool、デフォルトはFalse) — functionにサンプルのバッチを提供します。
  • batch_size (int、任意、デフォルトは1000) — batched = Trueの場合、functionにバッチごとに提供されるサンプル数です。 batched = Falseの場合、functionにはバッチごとに1つのサンプルが渡されます。 batch_size <= 0またはbatch_size == Noneの場合、functionにデータセット全体を単一のバッチとして提供します。
  • keep_in_memory (bool、デフォルトはFalse) — キャッシュファイルに書き込む代わりに、データセットをメモリに保持します。
  • load_from_cache_file (Optional[bool]、キャッシュが有効な場合のデフォルトはTrue) — functionの現在の計算を保存したキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • cache_file_name (str, オプション) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、この名前で計算結果を保存するために使用されます。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくすると map 実行中の一時メモリ消費量が少なくなります。
  • fn_kwargs (dict, 省略可) — function に渡すキーワード引数。
  • num_proc (int, 省略可能, デフォルトは None) — マルチプロセッシングに使用するプロセス数。None または 0 の場合、マルチプロセッシングは使用されず、操作はメインプロセスで実行されます。1 より大きい値の場合、1 つ以上のワーカープロセスを使用してデータを並列で処理します。注意: マルチプロセッシングが正しく動作するには、map() に渡す関数が pickle 可能である必要があります(つまり、モジュールのトップレベルで定義された関数を優先し、別の関数やクラス内で定義された関数は避けてください)。
    • Noneまたは0の場合、マルチプロセッシングは使用されず、操作はメインプロセスで実行されます。
    • 1 より大きい場合、1 つ以上のワーカープロセスを使用してデータを並列で処理します。 注: マルチプロセッシングが正しく動作するには、map() に渡される関数は picklable である必要があります (つまり、モジュールのトップレベルで定義された関数を優先し、別の関数やクラス内で定義しないようにしてください)。
  • suffix_template (str) — cache_file_name が指定されている場合、各ファイルのベース名にこのサフィックスが末尾に追加されます。 例えば、cache_file_name が "processed.arrow" で、rank = 1 かつ num_proc = 4 の場合、 デフォルトのサフィックス(デフォルトは _{rank:05d}_of_{num_proc:05d})では、結果として生成されるファイルは "processed_00001_of_00004.arrow" になります。
  • new_fingerprint (str, 省略可) — 変換後のデータセットの新しいフィンガープリントです。 None の場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。
  • desc (str、任意、デフォルトは None) — サンプルをフィルタリングしている間、プログレスバーとともに表示される意味のある説明。

…

関数が非同期の場合、filterは最大1000回の同時呼び出し(設定可能)で、関数を並列に実行します。 同時に実行できる操作の最大数を設定したい場合は、関数内でasyncio.Semaphoreを使用することをお勧めします。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.filter(lambda x: x["label"] == 1)
>>> ds
Dataset({
    features: ['text', 'label'],
    num_rows: 533
})

select

< >

( indices: Iterablekeep_in_memory: bool = Falseindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000new_fingerprint: typing.Optional[str] = None )

パラメータ

  • indices (range、list、iterable、ndarray または Series) — インデックス付け用の整数インデックスの範囲、リスト、または1次元配列です。 インデックスが連続した範囲に対応する場合、Arrow テーブルは単純にスライスされます。 ただし、連続しないインデックスのリストを渡すと、インデックスのマッピングが作成されます。これは効率がかなり低くなりますが、要求された行からなる Arrow テーブルを再作成するよりも速い処理です。
  • keep_in_memory (bool、デフォルトはFalse) — インデックスのマッピングをキャッシュファイルに書き出さず、メモリ内に保持します。
  • indices_cache_file_name (str, 省略可能、デフォルトはNone) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、インデックスのマッピングを保存するために使用されます。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくすると map 実行中の一時メモリ消費量が少なくなります。
  • new_fingerprint (str、省略可能、デフォルトはNone) — 変換後のデータセットの新しいフィンガープリントです。 Noneの場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。

インデックスのリスト/配列に従って行を選択し、新しいデータセットを作成します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.select(range(4))
>>> ds
Dataset({
    features: ['text', 'label'],
    num_rows: 4
})

sort

< >

( column_names: typing.Union[str, collections.abc.Sequence[str]]reverse: typing.Union[bool, collections.abc.Sequence[bool]] = Falsenull_placement: str = 'at_end'keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000new_fingerprint: typing.Optional[str] = None )

パラメータ

  • column_names (Union[str, Sequence[str]]) — ソートに使用する列名です。
  • reverse (Union[bool, Sequence[bool]]、デフォルトは False) — True の場合、昇順ではなく降順でソートします。単一の bool が指定された場合、その値はすべてのカラム名のソートに適用されます。それ以外の場合は、column_names と同じ長さかつ同じ順序の bool のリストを指定する必要があります。
  • null_placement (str, デフォルトは at_end) — を None が at_start または first の場合は末尾に、 at_end または last

    1.14.2で追加

  • keep_in_memory (bool、デフォルトはFalse) — ソート済みインデックスをキャッシュファイルに書き出さず、メモリに保持します。
  • load_from_cache_file (Optional[bool]、キャッシュが有効な場合のデフォルトはTrue) — ソート済みインデックスを保存するキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • indices_cache_file_name (str, 任意、デフォルトは None) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、ソート済みインデックスを保存するために使用されます。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 値を大きくするとキャッシュファイルは小さくなりますが、値を小さくすると一時メモリ消費量が少なくなります。
  • new_fingerprint (str、省略可能、デフォルトはNone) — 変換後のデータセットの新しいフィンガープリントです。 Noneの場合、新しいフィンガープリントは、以前のフィンガープリントと変換引数のハッシュを使用して計算されます。

1つの列または複数の列に基づいてソートされた新しいデータセットを作成します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset('cornell-movie-review-data/rotten_tomatoes', split='validation')
>>> ds['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> sorted_ds = ds.sort('label')
>>> sorted_ds['label'][:10]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> another_sorted_ds = ds.sort(['label', 'text'], reverse=[True, False])
>>> another_sorted_ds['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

シャッフル

< >

( seed: typing.Optional[int] = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000new_fingerprint: typing.Optional[str] = None )

パラメータ

  • seed (int, 任意) — generator=None の場合、デフォルトの BitGenerator を初期化するためのシードです。 None の場合、OS から新しい予測不可能なエントロピーを取得します。 int または array_like[ints] が渡された場合、SeedSequence に渡され、BitGenerator の初期状態を導出するために使用されます。
  • generator (numpy.random.Generator, 任意) — データセットの行の置換を計算するために使用する Numpy ランダム Generator。 generator=None(デフォルト)の場合、np.random.default_rng(NumPy のデフォルト BitGenerator (PCG64))を使用します。
  • keep_in_memory (bool, デフォルト False) — シャッフルされたインデックスをキャッシュファイルに書き出さず、メモリに保持します。
  • load_from_cache_file (Optional[bool]、キャッシュが有効な場合のデフォルトはTrue) — シャッフルされたインデックスを保存するキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • indices_cache_file_name (str, 省略可) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、シャッフルされたインデックスを保存するために使用されます。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくすると map 実行中の一時メモリ消費量が少なくなります。
  • new_fingerprint (str、省略可能、デフォルトはNone) — 変換後のデータセットの新しいフィンガープリントです。 Noneの場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。

行がシャッフルされた新しい Dataset を作成します。

現在、シャッフル処理ではNumPyの乱数生成器が使用されています。 使用するNumPyのBitGeneratorを指定するか、NumPyのデフォルトの乱数生成器(PCG64)を開始するためのシードを指定できます。

Shuffling はインデックスのリスト [0:len(my_dataset)] をシャッフルして、インデックスのマッピングを作成します。 しかし、Dataset にインデックスのマッピングが設定されると、速度が 10 倍遅くなる可能性があります。 これは、インデックスのマッピングを使用して読み取る行のインデックスを取得する追加のステップが発生するためであり、最も重要なのは、データが連続したチャンクとして読み取られなくなるためです。 速度を回復するには、インデックスのマッピングを削除する Dataset.flatten_indices() を使用して、ディスク上のデータセット全体を書き直す必要があります。

ただし、データセットのサイズによっては、これにはかなりの時間がかかる場合があります:

my_dataset[0]  # fast
my_dataset = my_dataset.shuffle(seed=42)
my_dataset[0]  # up to 10x slower
my_dataset = my_dataset.flatten_indices()  # rewrite the shuffled dataset on disk as contiguous chunks of data
my_dataset[0]  # fast again

この場合、IterableDataset に切り替えて、その高速な近似シャッフル手法である IterableDataset.shuffle() を活用することを推奨します。

…は、シャードの順序をシャッフルし、データセットにシャッフルバッファを追加するだけです。これにより、データセットの速度が最適に保たれます。

my_iterable_dataset = my_dataset.to_iterable_dataset(num_shards=128)
for example in enumerate(my_iterable_dataset):  # fast
    pass

shuffled_iterable_dataset = my_iterable_dataset.shuffle(seed=42, buffer_size=100)

for example in enumerate(shuffled_iterable_dataset):  # as fast as before
    pass

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

# set a seed
>>> shuffled_ds = ds.shuffle(seed=42)
>>> shuffled_ds['label'][:10]
[1, 0, 1, 1, 0, 0, 0, 0, 0, 0]

スキップ

< >

( n: int )

パラメータ

  • n (int) — スキップする要素の数。

最初のn個の要素をスキップする新しいDatasetを作成します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> list(ds.take(3))
[{'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'effective but too-tepid biopic'}]
>>> ds = ds.skip(1)
>>> list(ds.take(3))
[{'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'effective but too-tepid biopic'},
 {'label': 1,
 'text': 'if you sometimes like to go to the movies to have fun , wasabi is a good place to start .'}]

take

< >

( n: int )

パラメータ

  • n (int) — 取得する要素の数。

最初のn要素のみを含む新しいDatasetを作成します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> small_ds = ds.take(2)
>>> list(small_ds)
[{'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'}]

train_test_split

< >

( test_size: typing.Union[float, int, NoneType] = Nonetrain_size: typing.Union[float, int, NoneType] = Noneshuffle: bool = Truestratify_by_column: typing.Optional[str] = Noneseed: typing.Optional[int] = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonetrain_indices_cache_file_name: typing.Optional[str] = Nonetest_indices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000train_new_fingerprint: typing.Optional[str] = Nonetest_new_fingerprint: typing.Optional[str] = None )

パラメータ

  • test_size (Union[float, int, None], 省略可) — テスト分割のサイズ float の場合、0.0 と 1.0 の間で、テスト分割に含めるデータセットの割合を表します。 int の場合、テストサンプルの絶対数を表します。 None の場合、値は train size の補数に設定されます。 train_size も None の場合、0.25 に設定されます。
  • train_size (Union[float, int, None], 省略可) — train スプリットのサイズ float の場合、0.0 と 1.0 の間で、train スプリットに含めるデータセットの割合を表します。 int の場合、train サンプルの絶対数を表します。 None の場合、test サイズの補数に自動的に設定されます。
  • shuffle (bool、省略可能、デフォルトはTrue) — 分割の前にデータをシャッフルするかどうか。
  • stratify_by_column (str、任意、デフォルトはNone) — データの層別分割に使用するラベルの列名。
  • seed (int, 任意) — generator=None の場合、デフォルトの BitGenerator を初期化するためのシードです。 None の場合、OS から新しい予測不可能なエントロピーを取得します。 int または array_like[ints] が渡された場合、SeedSequence に渡され、BitGenerator の初期状態を導出するために使用されます。
  • generator (numpy.random.Generator, 任意) — データセットの行の置換を計算するために使用する Numpy ランダム Generator。 generator=None(デフォルト)の場合、np.random.default_rng(NumPy のデフォルト BitGenerator (PCG64))を使用します。
  • keep_in_memory (bool、デフォルトはFalse) — 分割のインデックスをキャッシュファイルに書き出さず、メモリに保持します。
  • load_from_cache_file (Optional[bool]、キャッシュが有効な場合のデフォルトはTrue) — スプリットのインデックスを保存するキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • train_cache_file_name (str, 任意) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、train スプリットのインデックスを保存するために使用されます。
  • test_cache_file_name (str, 省略可) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、テスト分割のインデックスを保存するために使用されます。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくすると map 実行中の一時メモリ消費量が少なくなります。
  • train_new_fingerprint (str、省略可能、デフォルトはNone) — transform 適用後の train セットの新しいフィンガープリントです。 None の場合、新しいフィンガープリントは、以前のフィンガープリントのハッシュと transform の引数を使用して計算されます。
  • test_new_fingerprint (str、任意、デフォルトはNone) — transform 適用後のテストセットの新しいフィンガープリントです。 None の場合、新しいフィンガープリントは、以前のフィンガープリントのハッシュと transform の引数を使用して計算されます。

2つのランダムなtrainとtestのサブセット(trainおよびtestのDatasetスプリット)を含む辞書(datasets.DatasetDict)を返します。 スプリットは、test_size、train_size、shuffleに基づいてデータセットから作成されます。

このメソッドは、scikit-learnのtrain_test_splitに似ています。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds = ds.train_test_split(test_size=0.2, shuffle=True)
DatasetDict({
    train: Dataset({
        features: ['text', 'label'],
        num_rows: 852
    })
    test: Dataset({
        features: ['text', 'label'],
        num_rows: 214
    })
})

# set a seed
>>> ds = ds.train_test_split(test_size=0.2, seed=42)

# stratified split
>>> ds = load_dataset("stanfordnlp/imdb",split="train")
Dataset({
    features: ['text', 'label'],
    num_rows: 25000
})
>>> ds = ds.train_test_split(test_size=0.2, stratify_by_column="label")
DatasetDict({
    train: Dataset({
        features: ['text', 'label'],
        num_rows: 20000
    })
    test: Dataset({
        features: ['text', 'label'],
        num_rows: 5000
    })
})

シャード

< >

( num_shards: intindex: intcontiguous: bool = Truekeep_in_memory: bool = Falseindices_cache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000 )

パラメータ

  • num_shards (int) — データセットを分割するシャードの数。
  • index (int) — 選択して返すシャードを指定します。
  • contiguous — (bool、デフォルトはTrue): シャードのインデックスとして連続したブロックを選択するかどうか。
  • keep_in_memory (bool、デフォルトはFalse) — キャッシュファイルに書き込む代わりに、データセットをメモリに保持します。
  • indices_cache_file_name (str, 省略可) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、各シャードのインデックスを保存するために使用されます。
  • writer_batch_size (int, デフォルトは 1000) — これはインデックスのマッピングに関する事項のみです。 キャッシュファイルのライターにおける、1回の書き込み操作あたりのインデックス数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るための適切な値です。 値を大きくすると処理中の参照回数が減り、値を小さくすると map 実行中の一時メモリ消費量が少なくなります。

num_shards個に分割したデータセット分割から、index番目のシャードを返します。

これは決定論的にシャード化されます。dataset.shard(n, i) はデータセットを連続するチャンクに分割するため、処理後に簡単に元の順序で結合できます。len(dataset) % n == l の場合、最初の l 個のデータセットの長さは (len(dataset) // n) + 1 となり、残りのデータセットの長さは (len(dataset) // n) となります。datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)]) は、元のデータセットと同じ順序を持つデータセットを返します。

注: len(dataset) の要素数以下である必要があります。

一方、dataset.shard(n, i, contiguous=False) は、インデックス mod n = i となるデータセットのすべての要素を含みます。

shuffle のようなランダム化演算子を使用する前に、必ずシャード化してください。 シャード化演算子は、データセットのパイプラインの早い段階で使用するのが望ましいです。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds
Dataset({
    features: ['text', 'label'],
    num_rows: 1066
})
>>> ds = ds.shard(num_shards=2, index=0)
>>> ds
Dataset({
    features: ['text', 'label'],
    num_rows: 533
})

repeat

< >

( num_times: int )

パラメータ

  • num_times (int) — データセットを繰り返す回数。

Dataset を新規作成し、基となるデータセットをnum_times 回繰り返します。

itertools.repeatと同様に、1回だけ繰り返す場合は、完全なデータセットが返されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> ds = ds.take(2).repeat(2)
>>> list(ds)
[{'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'effective but too-tepid biopic'},
 {'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'effective but too-tepid biopic'}]

to_tf_dataset

< >

( batch_size: typing.Optional[int] = Nonecolumns: typing.Union[str, list[str], NoneType] = Noneshuffle: bool = Falsecollate_fn: typing.Optional[typing.Callable] = Nonedrop_remainder: bool = Falsecollate_fn_args: typing.Optional[dict[str, typing.Any]] = Nonelabel_cols: typing.Union[str, list[str], NoneType] = Noneprefetch: bool = Truenum_workers: int = 0num_test_batches: int = 20 )

パラメータ

  • batch_size (int, 任意) — データセットから読み込むバッチのサイズです。デフォルトはNoneで、これはデータセットがバッチ化されないことを意味しますが、返されたデータセットは後でtf_dataset.batch(batch_size)によってバッチ化できます。
  • columns (List[str] または str、省略可能) — tf.data.Dataset に読み込む Dataset のカラムです。 collate_fn によって作成され、元の Dataset に存在しないカラム名も使用できます。
  • shuffle(bool, デフォルトは False) — 読み込み時にデータセットの順序をシャッフルします。学習には True、検証/評価には False を推奨します。
  • drop_remainder(bool, デフォルトはFalse) — 読み込み時に最後の不完全なバッチを破棄します。これにより、データセットが生成するすべてのバッチがバッチ次元で同じ長さになることを保証します。
  • collate_fn(Callable, 任意) — サンプルのリストをバッチにまとめる関数または呼び出し可能なオブジェクト(DataCollator など)。
  • collate_fn_args (Dict, 任意) — collate_fn に渡すキーワード引数の任意の dict です。
  • label_cols (List[str] または str、デフォルトは None) — ラベルとして読み込む Dataset のカラムです。 多くのモデルは Keras に損失の計算を委ねるのではなく、内部で損失を計算します。その場合、ラベルが入力 columns に含まれている限り、ここでラベルを渡すことは任意です。
  • prefetch (bool、デフォルトはTrue) — dataloader を別スレッドで実行し、学習用のバッチを少量バッファリングするかどうか。モデルが学習している間にバックグラウンドでデータをロードできるようにするため、パフォーマンスが向上します。
  • num_workers (int, デフォルトは 0) — データセットの読み込みに使用するワーカーの数。
  • num_test_batches (int、デフォルトは20) — データセットの出力シグネチャを推論するために使用するバッチ数です。 この数値を大きくするとシグネチャの精度は向上しますが、データセットの作成に要する時間も長くなります。

Create a tf.data.Dataset from the underlying Dataset. This tf.data.Dataset will load and collate batches from the Dataset, and is suitable for passing to methods like model.fit() or model.predict(). The dataset will yield dicts for both inputs and labels unless the dict would contain only a single key, in which case a raw tf.Tensor is yielded instead.

例:

>>> ds_train = ds["train"].to_tf_dataset(
...    columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'],
...    shuffle=True,
...    batch_size=16,
...    collate_fn=data_collator,
... )

push_to_hub

< >

( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonesplit: typing.Optional[str] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[int] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )

パラメータ

  • repo_id (str) — プッシュ先リポジトリの ID。以下の形式で指定します: <user>/<dataset_name> または <org>/<dataset_name>. また、 <dataset_name>, も受け付けます。この場合、ログイン中のユーザーのネームスペースがデフォルトとして使用されます。

    バケット内の場所である場合もあります。例: buckets/<user_or_org>/<bucket_name>/...

  • config_name (str、デフォルトは “default”) — データセットの設定名(またはサブセット)です。デフォルトは “default” です。
  • set_default (bool, 省略可) — この設定をデフォルトとして設定するかどうか。設定しない場合、デフォルト設定は “default” という名前のものになります。
  • split (str, 任意) — そのデータセットに割り当てられるスプリットの名前です。デフォルトはself.splitです。
  • data_dir (str, 省略可) — アップロードするデータファイルを含むディレクトリ名。 config_name が “default” と異なる場合はその値、そうでない場合は “data” がデフォルトです。

    2.17.0で追加

  • commit_message (str, 任意) — プッシュ時にコミットするメッセージ。デフォルトは"Upload dataset"です。
  • commit_description (str, 省略可) — 作成されるコミットの説明。PR が作成される場合(create_pr が True の場合)は、PR の説明にもなります。

    2.16.0で追加

  • private (bool、省略可) — リポジトリを非公開にするかどうか。None(デフォルト)の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。
  • token (str, 任意) — Hugging Face Hub 用の任意の認証トークンです。トークンが渡されない場合、hf auth login でログインした際にローカルに保存されたトークンがデフォルトとして使用されます。トークンが渡されず、かつユーザーがログインしていない場合は、エラーが発生します。
  • revision (str, 省略可) — アップロードしたファイルをプッシュするブランチ。デフォルトでは "main" ブランチです。

    2.15.0で追加

  • create_pr (bool, 省略可能, デフォルトは False) — アップロードしたファイルで PR を作成するか、直接コミットするかどうか。

    2.15.0で追加

  • max_shard_size (int または str、任意、デフォルトは "500MB") — ハブにアップロードするデータセットのシャードの最大サイズです。文字列で指定する場合は、数字の後に単位("5MB" など)を続ける必要があります。
  • num_shards (int, 省略可) — 書き出すシャード数。デフォルトでは、シャード数は max_shard_size.

    2.8.0で追加

  • embed_external_files (bool, デフォルトは True) — シャードにファイルのバイト列を埋め込むかどうか。具体的には、プッシュ前に以下の型のフィールドに対して次の処理を行います。
    • AudioおよびImage: ローカルパス情報を削除し、ファイルの内容をParquetファイルに埋め込みます。
  • num_proc (int, 省略可能, デフォルトは None) — データセットの準備とアップロード時のプロセス数。 データセットが多数のサンプルや埋め込むメディアファイルで構成されている場合に役立ちます。 hf_xet(HF への高速アップロード用の Rust クライアント)と連携するために「spawn」コンテキストを使用します。 デフォルトではマルチプロセッシングは無効です。

    4.0.0で追加

Parquet データセットとしてハブにプッシュします。 データセットは HTTP リクエストを使用してプッシュされるため、git または git-lfs のインストールは不要です。

生成される Parquet ファイルは、デフォルトで自己完結型です。データセットに Image、Audio または Video データが含まれている場合、Parquet ファイルには画像や音声ファイルのバイトが保存されます。 embed_external_files を False に設定することで、これを無効にできます。

例:

>>> dataset.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset.push_to_hub("<organization>/<dataset_id>", num_shards=1024)

データセットに複数のスプリット(例:train/validation/test)がある場合:

>>> train_dataset.push_to_hub("<organization>/<dataset_id>", split="train")
>>> val_dataset.push_to_hub("<organization>/<dataset_id>", split="validation")
>>> # later
>>> dataset = load_dataset("<organization>/<dataset_id>")
>>> train_dataset = dataset["train"]
>>> val_dataset = dataset["validation"]

データセットに新しい設定(またはサブセット)を追加したい場合(データセットに複数のタスク/バージョン/言語がある場合など):

>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")

save_to_disk

< >

( dataset_path: typing.Union[str, bytes, os.PathLike]max_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None )

パラメータ

  • dataset_path (path-like) — データセットが保存されるデータセットディレクトリのパス(例: dataset/train)またはリモート URI(例: s3://my-bucket/dataset/train)。
  • max_shard_size (int または str、任意、デフォルトは "500MB") — ファイルシステムに保存されるデータセットのシャードの最大サイズです。文字列で指定する場合は、数字の後に単位("50MB" など)を続ける必要があります。
  • num_shards (int, 省略可) — 書き出すシャードの数。デフォルトでは、シャード数は max_shard_size および num_proc.

    2.8.0で追加

  • num_proc (int, 省略可能) — ローカルでデータセットをダウンロードおよび生成する際のプロセス数。 デフォルトではマルチプロセッシングは無効です。

    2.8.0で追加

  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.8.0で追加

fsspec.spec.AbstractFileSystem の任意の実装を用いたファイルシステム、またはデータセットディレクトリにデータセットを保存します。

Image、Audio、Videoデータの場合:

Image()、Audio()、Video()のデータはすべてarrowファイルに保存されます。 パスやURLを保存する場合は、Value(“string”)型を使用してください。

例:

>>> ds.save_to_disk("path/to/dataset/directory")
>>> ds.save_to_disk("path/to/dataset/directory", max_shard_size="1GB")
>>> ds.save_to_disk("path/to/dataset/directory", num_shards=1024)

load_from_disk

< >

( dataset_path: typing.Union[str, bytes, os.PathLike]keep_in_memory: typing.Optional[bool] = Nonestorage_options: typing.Optional[dict] = None ) → Dataset or DatasetDict

パラメータ

  • dataset_path (path-like) — データセットを読み込むデータセットディレクトリのパス(例: "dataset/train")またはリモート URI(例: "s3//my-bucket/dataset/train")。
  • keep_in_memory (bool、デフォルトは None) — データセットをメモリ内にコピーするかどうか。None の場合、datasets.config.IN_MEMORY_MAX_SIZE をゼロ以外に設定して明示的に有効にしない限り、データセットはメモリ内にコピーされません。詳細は パフォーマンスの改善 セクションを参照してください。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.8.0で追加

戻り値

DatasetまたはDatasetDict

  • dataset_pathがデータセットのディレクトリパスである場合、要求されたデータセットです。
  • dataset_pathがデータセットディレクトリのパスである場合、各スプリットを含むdatasets.DatasetDictが返されます。

以前にsave_to_diskを使用して保存されたデータセットを、データセットディレクトリから、またはfsspec.spec.AbstractFileSystemの任意の実装によるファイルシステムから読み込みます。

例:

>>> ds = load_from_disk("path/to/dataset/directory")

flatten_indices

< >

( keep_in_memory: bool = Falsecache_file_name: typing.Optional[str] = Nonewriter_batch_size: typing.Optional[int] = 1000features: typing.Optional[datasets.features.features.Features] = Nonedisable_nullable: bool = Falsenum_proc: typing.Optional[int] = Nonenew_fingerprint: typing.Optional[str] = None )

パラメータ

  • keep_in_memory (bool、デフォルトはFalse) — キャッシュファイルに書き込む代わりに、データセットをメモリに保持します。
  • cache_file_name (str, 任意, デフォルト None) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、この名前で計算結果を保存するために使用されます。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくすると map 実行中の一時メモリ消費量が少なくなります。
  • features (Optional[datasets.Features]、デフォルトはNone) — 自動生成されるものではなく、特定のFeaturesを使用してキャッシュファイルを保存します。
  • disable_nullable (bool、デフォルトはFalse) — テーブルに null 値を許可します。
  • num_proc (int、任意、デフォルトはNone) — キャッシュを生成する際の最大プロセス数。すでにキャッシュ済みのシャードはシーケンシャルに読み込まれます
  • new_fingerprint (str、省略可能、デフォルトはNone) — 変換後のデータセットの新しいフィンガープリントです。 Noneの場合、新しいフィンガープリントは、以前のフィンガープリントと変換引数のハッシュを使用して計算されます。

インデックスのマッピングをフラット化して、新しい Dataset を作成し、キャッシュします。

to_csv

< >

( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_csv_kwargs ) → int

パラメータ

  • path_or_buf (PathLike または FileOrBuffer) — ファイルへのパス(例: file.csv)、リモート URI(例: hf://datasets/username/my_dataset_name/data.csv)、または、指定された形式でデータセットが保存される BinaryIO です。
  • batch_size (int, 任意) — メモリに読み込み、一度に書き込むバッチのサイズです。 デフォルトは datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • num_proc (int, 任意) — マルチプロセッシングに使用するプロセス数です。デフォルトではマルチプロセッシングを使用しません。この場合、batch_size はデフォルトで datasets.config.DEFAULT_MAX_BATCH_SIZE となりますが、十分な計算リソースがある場合は、デフォルト値の 5 倍や 10 倍に設定しても構いません。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.19.0で追加

  • **to_csv_kwargs ((追加のキーワード引数)— pandas の pandas.DataFrame.to_csv.

    2.10.0 で変更

    現在、indexは指定されていない場合、デフォルトでFalseになります。

    インデックスを書き込みたい場合は、index=True を渡し、index_label を渡してインデックス列の名前を設定します。

戻り値

int

書き込まれた文字数またはバイト数。

csvにデータセットをエクスポートします

例:

>>> ds.to_csv("path/to/dataset/directory")

to_pandas

< >

( batch_size: typing.Optional[int] = Nonebatched: bool = False )

パラメータ

  • batch_size (int, 省略可) — batched が True の場合のバッチサイズ(行数)です。 デフォルト値は datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • batched (bool) — True に設定すると、batch_size 行のバッチとしてデータセットを生成するジェネレーターを返します。デフォルトは False(一度にデータセット全体を返します)。

pandas.DataFrame としてデータセットを返します。大規模なデータセットの場合は、ジェネレーターを返すこともできます。

例:

>>> ds.to_pandas()

to_dict

< >

( batch_size: typing.Optional[int] = Nonebatched: bool = False )

パラメータ

  • batch_size (int, 省略可) — batched が True の場合のバッチサイズ(行数)です。 デフォルト値は datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • batched (bool) — True に設定すると、batch_size 行のバッチとしてデータセットを生成するジェネレーターを返します。デフォルトは False(一度にデータセット全体を返します)。

Pythonのdictとしてデータセットを返します。大規模なデータセットの場合は、ジェネレーターを返すこともできます。

例:

>>> ds.to_dict()

to_json

< >

( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_json_kwargs ) → int

パラメータ

  • path_or_buf (PathLike または FileOrBuffer) — ファイルへのパス(例: file.json)、リモート URI(例: hf://datasets/username/my_dataset_name/data.json)、または、指定された形式でデータセットが保存される BinaryIO です。
  • batch_size (int, 任意) — メモリに読み込み、一度に書き込むバッチのサイズです。 デフォルトは datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • num_proc (int, 任意) — マルチプロセッシングに使用するプロセス数です。デフォルトでは、マルチプロセッシングを使用しません。この場合、batch_size はデフォルトで datasets.config.DEFAULT_MAX_BATCH_SIZE となりますが、十分な計算リソースがある場合は、デフォルト値の 5 倍や 10 倍に設定しても構いません。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.19.0で追加

  • **to_json_kwargs (additional keyword arguments) — Parameters to pass to pandas’s pandas.DataFrame.to_json. Default arguments are lines=True and `orient=“records”.

    2.11.0 で変更

    orient が "split" または "table" の場合、パラメータ index のデフォルト値は False になります。

    インデックスを書き込みたい場合は、index=Trueを渡してください。

戻り値

int

書き込まれた文字数またはバイト数。

JSON LinesまたはJSONにデータセットをエクスポートします。

デフォルトの出力形式はJSON Linesです。 JSONにエクスポートするには、lines=False引数と希望するorientを渡します。

例:

>>> ds.to_json("path/to/dataset/directory/filename.jsonl")

to_parquet

< >

( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**parquet_writer_kwargs ) → int

パラメータ

  • path_or_buf (PathLike または FileOrBuffer) — ファイルへのパス(例: file.parquet)、リモート URI(例: hf://datasets/username/my_dataset_name/data.parquet)、または、指定された形式でデータセットが保存される BinaryIO。
  • batch_size (int, 任意) — メモリに読み込み、一度に書き込むバッチのサイズです。 デフォルトでは、datasets.config.MAX_ROW_GROUP_SIZE で定義される、非圧縮バイトサイズが最大 “100MB” となる行グループを目標とします。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.19.0で追加

  • **parquet_writer_kwargs (追加のキーワード引数) — PyArrowのpyarrow.parquet.ParquetWriterに渡すパラメータ。

戻り値

int

書き込まれた文字数またはバイト数。

データセットをparquetにエクスポートします

例:

>>> ds.to_parquet("path/to/dataset/directory")

to_sql

< >

( name: strcon: typing.Union[str, ForwardRef('sqlalchemy.engine.Connection'), ForwardRef('sqlalchemy.engine.Engine'), ForwardRef('sqlite3.Connection')]batch_size: typing.Optional[int] = Nonenum_proc: typing.Optional[int] = None**sql_writer_kwargs ) → int

パラメータ

  • name (str) — SQLテーブルの名前。
  • con (str または sqlite3.Connection または sqlalchemy.engine.Connection または sqlalchemy.engine.Connection) — データベースに書き込むために使用するURI文字列、またはSQLite3/SQLAlchemyの接続オブジェクト。
  • batch_size (int, 任意) — メモリに読み込み、一度に書き込むバッチのサイズです。 デフォルトは datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • num_proc (int, 任意) — マルチプロセッシングに使用するプロセス数です。デフォルトでは、マルチプロセッシングを使用しません。この場合、batch_size はデフォルトで datasets.config.DEFAULT_MAX_BATCH_SIZE となりますが、十分な計算リソースがある場合は、デフォルト値の 5 倍や 10 倍に設定しても構いません。
  • **sql_writer_kwargs ((追加のキーワード引数)— pandas の pandas.DataFrame.to_sql.

    2.11.0 で変更

    現在、indexは指定されていない場合、デフォルトでFalseになります。

    インデックスを書き込みたい場合は、index=True を渡し、index_label を渡してインデックス列の名前を設定します。

戻り値

int

書き込まれたレコードの数。

データセットをSQLデータベースにエクスポートします。

例:

>>> # con provided as a connection URI string
>>> ds.to_sql("data", "sqlite:///my_own_db.sql")
>>> # con provided as a sqlite3 connection object
>>> import sqlite3
>>> con = sqlite3.connect("my_own_db.sql")
>>> with con:
...     ds.to_sql("data", con)

to_iterable_dataset

< >

( num_shards: typing.Optional[int] = 1 )

パラメータ

  • num_shards (int、デフォルトは1) — イテラブルなデータセットをインスタンス化する際に定義するシャードの数です。これは、大きなデータセットを適切にシャッフルできるようにするため、また PyTorch の DataLoader を使用した高速な並列読み込みや分散環境での処理を可能にするために特に有用です。 シャードは datasets.Dataset.shard() を使用して定義されます。これはディスクに何も書き込まずに、データをスライスするだけです。

マップスタイルのdatasets.Datasetからdatasets.IterableDatasetを取得します。 これはdatasets.load_dataset()でストリーミングモードにデータセットを読み込むことと同等ですが、データがローカルファイルからストリーミングされるため、はるかに高速です。

Contrary to map-style datasets, iterable datasets are lazy and can only be iterated over (e.g. using a for loop). Since they are read sequentially in training loops, iterable datasets are much faster than map-style datasets. All the transformations applied to iterable datasets like filtering or processing are done on-the-fly when you start iterating over the dataset.

それでも、datasets.IterableDataset.shuffle() を使用してイテラブルなデータセットをシャッフルすることは可能です。 これは高速な近似シャッフルであり、複数のシャードがあり、かつ十分に大きなバッファサイズを指定した場合に最も効果的に機能します。

最適な速度性能を得るには、データセットにインデックスのマッピングがないことを確認してください。 インデックスのマッピングが存在する場合、データは連続的に読み込まれず、場合によっては低速になることがあります。 イテラブルなデータセットに切り替える前に最適な速度を得るには、ds = ds.flatten_indices() を使用して、データを連続したチャンクとして書き出すことができます。

例:

基本的な使用方法:

>>> ids = ds.to_iterable_dataset()
>>> for example in ids:
...     pass

遅延フィルタリングと処理を使用する場合:

>>> ids = ds.to_iterable_dataset()
>>> ids = ids.filter(filter_fn).map(process_fn)  # will filter and process on-the-fly when you start iterating over the iterable dataset
>>> for example in ids:
...     pass

効率的なシャッフルを可能にするシャーディング:

>>> ids = ds.to_iterable_dataset(num_shards=64)  # the dataset is split into 64 shards to be iterated over
>>> ids = ids.shuffle(buffer_size=10_000)  # will shuffle the shards order and use a shuffle buffer for fast approximate shuffling when you start iterating
>>> for example in ids:
...     pass

PyTorchのDataLoaderを使用する場合:

>>> import torch
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.filter(filter_fn).map(process_fn)
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4)  # will assign 64 / 4 = 16 shards to each worker to load, filter and process when you start iterating
>>> for example in ids:
...     pass

PyTorchのDataLoaderとシャッフルを使用する場合:

>>> import torch
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.shuffle(buffer_size=10_000)  # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4)  # will assign 64 / 4 = 16 shards from the shuffled list of shards to each worker when you start iterating
>>> for example in ids:
...     pass

PyTorch DDPのような分散環境で、PyTorchのDataLoaderとシャッフルを使用する場合

>>> from datasets.distributed import split_dataset_by_node
>>> ids = ds.to_iterable_dataset(num_shards=512)
>>> ids = ids.shuffle(buffer_size=10_000, seed=42)  # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> ids = split_dataset_by_node(ds, world_size=8, rank=0)  # will keep only 512 / 8 = 64 shards from the shuffled lists of shards when you start iterating
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4)  # will assign 64 / 4 = 16 shards from this node's list of shards to each worker when you start iterating
>>> for example in ids:
...     pass

シャッフルと複数エポックを使用する場合:

>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.shuffle(buffer_size=10_000, seed=42)  # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> for epoch in range(n_epochs):
...     ids.set_epoch(epoch)  # will use effective_seed = seed + epoch to shuffle the shards and for the shuffle buffer when you start iterating
...     for example in ids:
...         pass
Feel free to also use `IterableDataset.set_epoch()` when using a PyTorch DataLoader or in distributed setups.

add_faiss_index

< >

( column: strindex_name: typing.Optional[str] = Nonedevice: typing.Optional[int] = Nonestring_factory: typing.Optional[str] = Nonemetric_type: typing.Optional[int] = Nonecustom_index: typing.Optional[ForwardRef('faiss.Index')] = Nonebatch_size: int = 1000train_size: typing.Optional[int] = Nonefaiss_verbose: bool = Falsedtype = <class 'numpy.float32'> )

パラメータ

  • column (str) — インデックスに追加するベクトルの列。
  • index_name (str, 省略可) — インデックスのindex_name/識別子です。 これはget_nearest_examples()またはsearch()を呼び出す際に使用されるindex_nameです。 デフォルトではcolumnに対応します。
  • device (Union[int, List[int]], 任意) — 正の整数を指定した場合、使用する GPU のインデックスとして扱われます。負の整数を指定した場合、すべての GPU が使用されます。正の整数のリストを渡した場合、指定された GPU のみで実行されます。デフォルトでは CPU が使用されます。
  • string_factory (str、省略可) — Faiss のインデックスファクトリに渡され、インデックスを作成するために使用されます。 デフォルトのインデックスクラスは IndexFlat です。
  • metric_type (int, 省略可) — メトリックの種類。例: faiss.METRIC_INNER_PRODUCT または faiss.METRIC_L2。
  • custom_index (faiss.Index, 任意) — すでにインスタンス化され、ご自身のニーズに合わせて設定済みのカスタム Faiss インデックス。
  • batch_size (int) — ベクトルをに追加する際に使用するバッチサイズ FaissIndex. デフォルト値は 1000.

    2.4.0で追加

  • train_size (int, 任意) — インデックスに学習ステップが必要な場合、インデックスの学習に使用されるベクトルの数を指定します。
  • faiss_verbose (bool、デフォルトはFalse) — Faissインデックスの冗長出力を有効にします。
  • dtype (data-type) — インデックス付けされる numpy 配列の dtype です。 デフォルトは np.float32 です。

Faiss を使用して高速な検索のための dense index を追加します。 デフォルトでは、指定されたカラムのベクトルに対してインデックスが作成されます。 GPU で実行する場合は device を指定できます(device は GPU のインデックスである必要があります)。 Faiss に関する詳細は、こちらで確認できます:

例:

>>> ds = datasets.load_dataset('community-datasets/crime_and_punish', split='train')
>>> ds_with_embeddings = ds.map(lambda example: {'embeddings': embed(example['line']}))
>>> ds_with_embeddings.add_faiss_index(column='embeddings')
>>> # query
>>> scores, retrieved_examples = ds_with_embeddings.get_nearest_examples('embeddings', embed('my new query'), k=10)
>>> # save index
>>> ds_with_embeddings.save_faiss_index('embeddings', 'my_index.faiss')

>>> ds = datasets.load_dataset('community-datasets/crime_and_punish', split='train')
>>> # load index
>>> ds.load_faiss_index('embeddings', 'my_index.faiss')
>>> # query
>>> scores, retrieved_examples = ds.get_nearest_examples('embeddings', embed('my new query'), k=10)

add_faiss_index_from_external_arrays

< >

( external_arrays: arrayindex_name: strdevice: typing.Optional[int] = Nonestring_factory: typing.Optional[str] = Nonemetric_type: typing.Optional[int] = Nonecustom_index: typing.Optional[ForwardRef('faiss.Index')] = Nonebatch_size: int = 1000train_size: typing.Optional[int] = Nonefaiss_verbose: bool = Falsedtype = <class 'numpy.float32'> )

パラメータ

  • external_arrays (np.array) — インデックスにライブラリ外部の配列を使用する場合、external_arraysを設定できます。 指定されたcolumn内の配列ではなく、external_arraysを使用して Faiss インデックスが作成されます。
  • index_name (str) — インデックスのindex_name/識別子です。 これはindex_nameとして、get_nearest_examples()またはsearch()を呼び出す際に使用されます。
  • device (任意の Union[int, List[int]]、optional) — 正の整数を指定した場合、使用する GPU のインデックスとして扱われます。負の整数を指定した場合、すべての GPU が使用されます。正の整数のリストを渡した場合、指定された GPU のみで実行されます。デフォルトでは CPU が使用されます。
  • string_factory (str、省略可) — Faiss のインデックスファクトリに渡され、インデックスを作成するために使用されます。 デフォルトのインデックスクラスは IndexFlat です。
  • metric_type (int, 省略可) — メトリックの種類。例: faiss.faiss.METRIC_INNER_PRODUCT または faiss.METRIC_L2。
  • custom_index (faiss.Index, 任意) — すでにインスタンス化され、ご自身のニーズに合わせて設定済みのカスタム Faiss インデックス。
  • batch_size (int, 省略可) — FaissIndex にベクトルを追加する際に使用するバッチサイズ。デフォルト値は 1000 です。

    2.4.0で追加

  • train_size (int, 任意) — インデックスに学習ステップが必要な場合、インデックスの学習に使用されるベクトルの数を指定します。
  • faiss_verbose (bool、デフォルトは False) — Faiss インデックスの冗長出力を有効にします。
  • dtype (numpy.dtype) — インデックス付けされる numpy 配列の dtype です。デフォルトは np.float32 です。

Faiss を使用して高速な検索のための dense index を追加します。 インデックスは external_arrays のベクトルを使用して作成されます。 GPU で実行する場合は device を指定できます(device は GPU のインデックスである必要があります)。 Faiss に関する詳細は、こちらで確認できます:

save_faiss_index

< >

( index_name: strfile: typing.Union[str, pathlib.PurePath]storage_options: typing.Optional[dict] = None )

パラメータ

  • index_name (str) — インデックスの index_name/識別子です。.get_nearest または .search を呼び出す際に使用される index_name です。
  • file (str) — ディスク上のシリアライズされた faiss インデックスへのパス、またはリモート URI(例: "s3://my-bucket/index.faiss")。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.11.0で追加

FaissIndexをディスクに保存します。

load_faiss_index

< >

( index_name: strfile: typing.Union[str, pathlib.PurePath]device: typing.Union[int, list[int], NoneType] = Nonestorage_options: typing.Optional[dict] = None )

パラメータ

  • index_name (str) — インデックスの index_name/識別子です。.get_nearest または .search を呼び出す際に使用される index_name です。
  • file (str) — ディスク上のシリアライズされた faiss インデックスへのパス、またはリモート URI(例: "s3://my-bucket/index.faiss")。
  • device (任意の Union[int, List[int]]) — 正の整数を指定した場合、使用する GPU のインデックスです。負の整数を指定した場合、すべての GPU を使用します。 正の整数のリストを渡した場合、指定された GPU のみで実行します。デフォルトでは CPU を使用します。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.11.0で追加

FaissIndexをディスクから読み込みます。

追加の設定を行う場合は、.get_index(index_name).faiss_index を実行して faiss のインデックスオブジェクトにアクセスし、必要に応じて調整できます。

add_elasticsearch_index

< >

( column: strindex_name: typing.Optional[str] = Nonehost: typing.Optional[str] = Noneport: typing.Optional[int] = Nonees_client: typing.Optional[ForwardRef('elasticsearch.Elasticsearch')] = Nonees_index_name: typing.Optional[str] = Nonees_index_config: typing.Optional[dict] = None )

パラメータ

  • column (str) — インデックスに追加するドキュメントの列です。
  • index_name (str, 省略可能) — インデックスのindex_name/識別子です。 これはget_nearest_examples()またはsearch()を呼び出す際に使用されるインデックス名です。 デフォルトではcolumnに対応します。
  • host (str、任意、デフォルトはlocalhost) — ElasticSearch が実行されているホスト。
  • port (str、任意、デフォルトは9200) — ElasticSearch が実行されているポート。
  • es_client (elasticsearch.Elasticsearch、任意) — None の場合、インデックスの作成に使用される elasticsearch クライアント。
  • es_index_name (str, 省略可) — インデックスの作成に使用する elasticsearch のインデックス名。
  • es_index_config (dict, 省略可) — elasticsearch インデックスの設定です。 デフォルトの設定は以下の通りです:

ElasticSearch を使用して高速な検索用のテキストインデックスを追加します。これはインプレースで実行されます。

例:

>>> es_client = elasticsearch.Elasticsearch()
>>> ds = datasets.load_dataset('community-datasets/crime_and_punish', split='train')
>>> ds.add_elasticsearch_index(column='line', es_client=es_client, es_index_name="my_es_index")
>>> scores, retrieved_examples = ds.get_nearest_examples('line', 'my new query', k=10)

load_elasticsearch_index

< >

( index_name: stres_index_name: strhost: typing.Optional[str] = Noneport: typing.Optional[int] = Nonees_client: typing.Optional[ForwardRef('Elasticsearch')] = Nonees_index_config: typing.Optional[dict] = None )

パラメータ

  • index_name (str) — インデックスのindex_name/識別子です。get_nearestまたはsearchを呼び出す際に使用されるインデックス名です。
  • es_index_name (str) — 読み込む elasticsearch インデックスの名前。
  • host (str、任意、デフォルトはlocalhost) — ElasticSearch が実行されているホスト。
  • port (str、任意、デフォルトは9200) — ElasticSearch が実行されているポート。
  • es_client (elasticsearch.Elasticsearch、任意) — None の場合、インデックスの作成に使用される elasticsearch クライアント。
  • es_index_config (dict, 省略可) — elasticsearch インデックスの設定です。 デフォルトの設定は以下の通りです:

ElasticSearchを使用して既存のテキストインデックスを読み込み、高速な検索を実現します。

list_indexes

< >

( )

添付されているすべてのインデックスのcolindex_nameumns/識別子をリスト表示します。

get_index

< >

( index_name: str )

パラメータ

  • index_name (str) — インデックス名。

アタッチされたすべてのインデックスのindex_name/識別子をリスト表示します。

drop_index

< >

( index_name: str )

パラメータ

  • index_name (str) — インデックスのindex_name/識別子。

指定されたカラムを持つインデックスを削除します。

検索

< >

( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, indices)

パラメータ

  • index_name (str) — インデックスの名前/識別子。
  • query (Union[str, np.ndarray]) — index_name がテキストインデックスの場合は文字列として、index_name がベクトルインデックスの場合はNumPy配列として、クエリを表します。
  • k (int) — 取得するサンプルの数。

戻り値

(scores, indices)

(scores, indices)のタプルで、以下を返します:

  • scores (List[List[float]): 検索された例の、FAISS(デフォルトではIndexFlatL2)または ElasticSearch からの検索スコア
  • indices (List[List[int]]): 取得された例のインデックス

クエリに最も近い例のインデックスをデータセット内で検索します。

search_batch

< >

( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_indices)

パラメータ

  • index_name (str) — インデックスのindex_name/識別子。
  • queries (Union[List[str], np.ndarray]) — index_name がテキストインデックスの場合は文字列のリストとして、index_name がベクトルインデックスの場合は numpy 配列として、クエリを指定します。
  • k (int) — クエリごとに取得するサンプルの数。

戻り値

(total_scores, total_indices)

(total_scores, total_indices)のタプルで、以下を返します:

  • total_scores (List[List[float]): クエリごとに取得された例の、FAISS(デフォルトはIndexFlatL2)またはElasticSearchからの検索スコア
  • total_indices (List[List[int]]): クエリごとの取得された例のインデックス

クエリに最も近い例のインデックスをデータセット内で検索します。

get_nearest_examples

< >

( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, examples)

パラメータ

  • index_name (str) — インデックスの index_name/識別子。
  • query (Union[str, np.ndarray]) — index_name がテキストインデックスの場合は文字列として、index_name がベクトルインデックスの場合はNumPy配列として、クエリを表します。
  • k (int) — 取得するサンプルの数。

戻り値

(scores, examples)

(scores, examples)のタプルで、以下を意味します:

  • scores (List[float]): 検索された例の、FAISS(デフォルトではIndexFlatL2)または ElasticSearch からの検索スコア
  • examples (dict): 取得された例

クエリに最も近い例をデータセット内で検索します。

get_nearest_examples_batch

< >

( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_examples)

パラメータ

  • index_name (str) — インデックスのindex_name/識別子。
  • queries (Union[List[str], np.ndarray]) — index_name がテキストインデックスの場合は文字列のリストとして、index_name がベクトルインデックスの場合は numpy 配列として、クエリを指定します。
  • k (int) — クエリごとに取得するサンプルの数。

戻り値

(total_scores, total_examples)

(total_scores, total_examples) のタプルで、以下を返します:

  • total_scores (List[List[float]): クエリごとに取得された例の、FAISS(デフォルトはIndexFlatL2)またはElasticSearchからの検索スコア
  • total_examples (List[dict]): クエリごとに取得された例

クエリに最も近い例をデータセット内で検索します。

情報

< >

( )

データセット内のすべてのメタデータを含むDatasetInfoオブジェクト。

分割

< >

( )

名前付きデータセット分割に対応するNamedSplitオブジェクト。

builder_name

< >

( )

引用

< >

( )

config_name

< >

( )

dataset_size

< >

( )

説明

< >

( )

download_checksums

< >

( )

download_size

< >

( )

機能

< >

( )

ホームページ

< >

( )

ライセンス

< >

( )

size_in_bytes

< >

( )

supervised_keys

< >

( )

バージョン

< >

( )

from_csv

< >

( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsenum_proc: typing.Optional[int] = None**kwargs )

パラメータ

  • path_or_paths (path-like または path-like のリスト) — CSV ファイルのパス。
  • split (NamedSplit、任意) — データセットに割り当てられる分割名。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str、任意、デフォルトは"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • num_proc (int, 省略可能, デフォルトは None) — ローカルでデータセットをダウンロードおよび生成する際のプロセス数。 データセットが複数のファイルで構成されている場合に役立ちます。デフォルトではマルチプロセッシングは無効です。

    2.8.0で追加

  • **kwargs (追加のキーワード引数) — pandas.read_csvに渡すキーワード引数。

CSVファイルからDatasetを作成します。

CSVファイルを読み取り、データをArrow形式でディスクにキャッシュし、ディスク上のメモリマップドされたArrowデータからDatasetを返します。

例:

>>> ds = Dataset.from_csv('path/to/dataset.csv')

from_json

< >

( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsefield: typing.Optional[str] = Nonenum_proc: typing.Optional[int] = None**kwargs )

パラメータ

  • path_or_paths (path-like または path-like のリスト) — JSON ファイルまたは JSON Lines ファイルのパスです。
  • split (NamedSplit、任意) — データセットに割り当てられる分割名。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str、任意、デフォルトは"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • field (str, 省略可) — データセットが含まれる JSON ファイルのフィールド名。
  • num_proc (int, 省略可能 デフォルトは None) — ローカルでデータセットをダウンロードおよび生成する際のプロセス数。 データセットが複数のファイルで構成されている場合に役立ちます。デフォルトではマルチプロセッシングは無効です。

    2.8.0で追加

  • **kwargs (追加のキーワード引数) — JsonConfigに渡すキーワード引数。

JSONまたはJSON LinesファイルからDatasetを作成します。

JSONファイルを読み取り、データをArrow形式でディスクにキャッシュし、ディスク上のメモリマップドArrowデータからDatasetを返します。

例:

>>> ds = Dataset.from_json('path/to/dataset.json')

from_parquet

< >

( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsecolumns: typing.Optional[list[str]] = Nonenum_proc: typing.Optional[int] = Nonefilters: typing.Union[pyarrow._compute.Expression, list[tuple], list[list[tuple]], NoneType] = Nonefragment_scan_options: typing.Optional[pyarrow._dataset_parquet.ParquetFragmentScanOptions] = Noneon_bad_files: typing.Literal['error', 'warn', 'skip'] = 'error'**kwargs )

パラメータ

  • path_or_paths (path-like または path-like のリスト) — Parquet ファイルのパス。
  • split (NamedSplit, 任意) — データセットに割り当てられる分割名。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str、任意、デフォルトは"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • columns (List[str]、任意) — None 以外の場合、ファイルから読み込まれるのはこれらのカラムのみです。 カラム名はネストされたフィールドのプレフィックスとして指定でき、例えば ‘a’ を指定すると ‘a.b’、‘a.c’、‘a.d.e’ が選択されます。
  • num_proc (int, 省略可能, デフォルトは None) — ローカルでデータセットをダウンロードおよび生成する際のプロセス数。 データセットが複数のファイルで構成されている場合に役立ちます。デフォルトではマルチプロセッシングは無効です。

    2.8.0で追加

  • filters (Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]], 省略可能) — フィルタに一致する行のみを返します。 可能であれば、データソース内で見つかるパーティション情報や内部メタデータ(例: Parquet の統計情報)を活用するために、述語がプッシュダウンされます。 それ以外の場合は、RecordBatches をロードしてから、それらを yield する前にフィルタリングを行います。
  • fragment_scan_options (pyarrow.dataset.ParquetFragmentScanOptions, 省略可) — Parquet フラグメントのスキャンに特化したオプション。 バッファリングやキャッシュの設定に特に役立ちます。

    4.2.0で追加

  • on_bad_files (Literal["error", "warn", "skip"], 省略可能, デフォルトは “error”)— 不正なファイル(読み取れないファイル)を検出した場合の動作を指定します。許可される値は次のとおりです:
    • ‘error’、不正なファイルに遭遇した際に例外を発生させます。
    • ‘warn’、不良なファイルを検出したら警告を出力し、そのファイルをスキップします。
    • ‘skip’、不良ファイルを検出しても例外を発生させたり警告を出したりせずにスキップします。

    4.2.0で追加

  • **kwargs (追加のキーワード引数) — ParquetConfigに渡すキーワード引数。

ParquetファイルからDatasetを作成します。

Parquetファイルを読み取り、データをArrow形式でディスクにキャッシュし、ディスク上のメモリマップドされたArrowデータからDatasetを返します。

例:

>>> ds = Dataset.from_parquet('path/to/dataset.parquet')

カラムのサブセットを読み込む:

>>> ds = Dataset.from_parquet('path/to/dataset.parquet', columns=["col_0", "col_1"])

データを効率的にフィルタリングし、場合によってはファイル全体や行グループ全体をスキップできます:

>>> filters = [("col_0", "==", 0)]
>>> ds = Dataset.from_parquet(parquet_files_list, filters=filters)

from_text

< >

( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsenum_proc: typing.Optional[int] = Nonekeep_linebreaks: bool = Falsesample_by: typing.Literal['line', 'paragraph', 'document'] = 'line'**kwargs )

パラメータ

  • path_or_paths (path-like または path-like のリスト) — テキストファイルのパス。
  • split (NamedSplit, 任意) — データセットに割り当てられる分割名。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str、任意、デフォルトは"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • num_proc (int, 省略可能, デフォルトは None) — ローカルでデータセットをダウンロードおよび生成する際のプロセス数。 データセットが複数のファイルで構成されている場合に役立ちます。デフォルトではマルチプロセッシングは無効です。

    2.8.0で追加

  • keep_linebreaks — (bool、デフォルトは False): 改行を保持するかどうか。
  • sample_by (Literal["line", "paragraph", "document"]、デフォルトは “line”) — データを行、段落、または文書単位で読み込むかどうかを指定します。 デフォルトでは、データセットの1行 = 1行です。
  • **kwargs (追加のキーワード引数) — TextConfigに渡すキーワード引数。

テキストファイルからDatasetを作成します。

テキストファイルを読み取り、データをArrow形式でディスクにキャッシュし、ディスク上のメモリマップドArrowデータからDatasetを返します。

例:

>>> ds = Dataset.from_text('path/to/dataset.txt')

from_sql

< >

( sql: typing.Union[str, ForwardRef('sqlalchemy.sql.Selectable')]con: typing.Union[str, ForwardRef('sqlalchemy.engine.Connection'), ForwardRef('sqlalchemy.engine.Engine'), ForwardRef('sqlite3.Connection')]features: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )

パラメータ

  • sql (str または sqlalchemy.sql.Selectable) — 実行する SQL クエリまたはテーブル名。
  • con (str または sqlite3.Connection または sqlalchemy.engine.Connection または sqlalchemy.engine.Connection) — データベース接続をインスタンス化するために使用するURI文字列、または SQLite3/SQLAlchemy の接続オブジェクト。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str、任意、デフォルトは"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • **kwargs (追加のキーワード引数) — SqlConfigに渡すキーワード引数。

SQLクエリまたはデータベーステーブルからDatasetを作成します。

SQLデータベースをクエリし、データをArrow形式でディスクにキャッシュし、ディスク上のメモリマップドされたArrowデータからDatasetを返します。

例:

>>> # Fetch a database table
>>> ds = Dataset.from_sql("test_data", "postgres:///db_name")
>>> # Execute a SQL query on the table
>>> ds = Dataset.from_sql("SELECT sentence FROM test_data", "postgres:///db_name")
>>> # Use a Selectable object to specify the query
>>> from sqlalchemy import select, text
>>> stmt = select([text("sentence")]).select_from(text("test_data"))
>>> ds = Dataset.from_sql(stmt, "postgres:///db_name")

conがURI文字列として指定されている場合のみ、返されるデータセットをキャッシュできます。

align_labels_with_mapping

< >

( label2id: dictlabel_column: str )

パラメータ

  • label2id (dict) — データセットと整合させるための、ラベル名からIDへのマッピングです。
  • label_column (str) — アラインメントに使用するラベルの列名。

入力されたlabel2idマッピングに合わせて、データセットのラベルIDとラベル名のマッピングを一致させます。 モデルの予測ラベルがデータセットと整合していることを確認したい場合に便利です。 整合は、小文字のラベル名を使用して行われます。

例:

>>> # dataset with mapping {'entailment': 0, 'neutral': 1, 'contradiction': 2}
>>> ds = load_dataset("nyu-mll/glue", "mnli", split="train")
>>> # mapping to align with
>>> label2id = {'CONTRADICTION': 0, 'NEUTRAL': 1, 'ENTAILMENT': 2}
>>> ds_aligned = ds.align_labels_with_mapping(label2id, "label")

datasets.concatenate_datasets

< >

( dsets: listinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneaxis: int = 0 )

パラメータ

  • dsets (List[datasets.Dataset] または List[datasets.IterableDataset]) — 連結する Datasets のリスト。
  • info (DatasetInfo、任意) — 説明や引用などの、データセットに関する情報です。
  • split (NamedSplit, 任意) — データセットの分割名。
  • axis ({0, 1}, デフォルトは 0) — 連結する軸。 0 は行方向(縦方向)の連結を、 1 は列方向(横方向)の連結を意味します。

    1.6.0で追加

複数のデータセット(ソース)を1つのデータセットに連結します。

axis=0 を使用すると縦方向に連結されます(デフォルト)、axis=1 を使用すると横方向に連結されます。

イテラブルなデータセットに関する注意:

  • axis=0 の場合、結果のデータセットの num_shards は、各データセットの num_shards の合計になります。
  • axis=1の場合、データの不一致を防ぐため、結果のデータセットは1つのシャードになります。
  • if the datasets were split with datasets.distributed.split_dataset_by_node(), they must all be split the same way, and the resulting dataset keeps that split.

例:

>>> ds3 = concatenate_datasets([ds1, ds2])

datasets.interleave_datasets

< >

( datasets: listprobabilities: typing.Optional[list[float]] = Noneseed: typing.Optional[int] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonestopping_strategy: typing.Literal['first_exhausted', 'all_exhausted', 'all_exhausted_without_replacement'] = 'first_exhausted' ) → Dataset or IterableDataset

パラメータ

  • datasets (List[Dataset] または List[IterableDataset]) — インターリーブするデータセットのリスト。
  • probabilities (List[float]、任意、デフォルトはNone) — 指定された場合、これらの確率に従って、ソースを1つずつ順番に例をサンプリングすることで、新しいデータセットが構築されます。
  • seed (int, 任意、デフォルトはNone) — 各サンプルのソースを選択するために使用される乱数のシード。
  • info (DatasetInfo, 任意) — 説明や引用などのデータセット情報。

    2.4.0で追加

  • split (NamedSplit, 任意) — データセットの分割名。

    2.4.0で追加

  • stopping_strategy (str, デフォルトは first_exhausted) — 現在、3つの戦略が提案されています。 first_exhausted, all_exhausted および all_exhausted_without_replacement. デフォルトでは、 first_exhausted はアンダースampling戦略であり、つまり、いずれかのデータセットのサンプルが尽きるとデータセットの構築が停止します。 戦略が all_exhausted, の場合、オーバーサンプリング戦略を使用します。つまり、すべてのデータセットのすべてのサンプルが少なくとも1回追加されると、データセットの構築が停止します。 戦略が all_exhausted_without_replacement の場合、各データセットの各サンプルが1回だけサンプリングされるようにします。 戦略が all_exhausted, の場合、インターリーブされたデータセットのサイズが非常に大きくなる可能性があります。
    • 確率が指定されていない場合、結果のデータセットにはmax_length_datasets*nb_dataset個のサンプルが含まれます。
    • 与えられた確率に基づき、一部のデータセットの訪問確率が非常に低い場合、結果として得られるデータセットはサンプル数が増加します。

戻り値

DatasetまたはIterableDataset

datasetsパラメータの値によって、戻り値の型が異なります。入力がDatasetのリストの場合はDataset、IterableDatasetのリストの場合はIterableDatasetです。

複数のデータセット(ソース)を交互に配置して、1つのデータセットに統合します。 新しいデータセットは、ソースを交互に切り替えてサンプルを取得することで構築されます。

この関数は、DatasetオブジェクトのリストまたはIterableDatasetオブジェクトのリストに対して使用できます。

  • probabilitiesがNone(デフォルト)の場合、新しいデータセットは、各ソースを循環して例を取得することで構築されます。
  • probabilitiesがNoneでない場合、新しいデータセットは、指定された確率に従って、ランダムなソースから一度に1つの例を取得することによって構築されます。

oversamplingがTrueの場合を除き、生成されるデータセットは、ソースデータセットのいずれかが例をすべて使い切った時点で終了します。 oversamplingがTrueの場合、生成されるデータセットは、すべてのデータセットが少なくとも1回例を使い切った時点で終了します。

イテラブルなデータセットに関する注意:

  • 生成されるデータセットのnum_shardsは、各データセットのnum_shardsの最小値となり、並列性の確保を目的としています。 一部のデータセットのシャード数が非常に少ない場合は、IterableDataset.reshard()を使用できます。
  • 分散環境やPyTorchのDataLoaderワーカーでは、停止戦略はプロセスごとに適用されます。 そのため、シャードされたイテラブルデータセットに対して「first_exhausted」戦略を使用すると、生成されるサンプルの総数が少なくなる可能性があります(ワーカーごとにサブデータセットあたり最大1サンプル欠ける場合があります)。

例:

通常のデータセット(mapスタイル)の場合:

>>> from datasets import Dataset, interleave_datasets
>>> d1 = Dataset.from_dict({"a": [0, 1, 2]})
>>> d2 = Dataset.from_dict({"a": [10, 11, 12]})
>>> d3 = Dataset.from_dict({"a": [20, 21, 22]})
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42, stopping_strategy="all_exhausted")
>>> dataset["a"]
[10, 0, 11, 1, 2, 20, 12, 10, 0, 1, 2, 21, 0, 11, 1, 2, 0, 1, 12, 2, 10, 0, 22]
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42)
>>> dataset["a"]
[10, 0, 11, 1, 2]
>>> dataset = interleave_datasets([d1, d2, d3])
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22]
>>> dataset = interleave_datasets([d1, d2, d3], stopping_strategy="all_exhausted")
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22]
>>> d1 = Dataset.from_dict({"a": [0, 1, 2]})
>>> d2 = Dataset.from_dict({"a": [10, 11, 12, 13]})
>>> d3 = Dataset.from_dict({"a": [20, 21, 22, 23, 24]})
>>> dataset = interleave_datasets([d1, d2, d3])
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22]
>>> dataset = interleave_datasets([d1, d2, d3], stopping_strategy="all_exhausted")
>>> dataset["a"]
[0, 10, 20, 1, 11, 21, 2, 12, 22, 0, 13, 23, 1, 10, 24]
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42)
>>> dataset["a"]
[10, 0, 11, 1, 2]
>>> dataset = interleave_datasets([d1, d2, d3], probabilities=[0.7, 0.2, 0.1], seed=42, stopping_strategy="all_exhausted")
>>> dataset["a"]
[10, 0, 11, 1, 2, 20, 12, 13, ..., 0, 1, 2, 0, 24]
For datasets in streaming mode (iterable):

>>> from datasets import interleave_datasets
>>> d1 = load_dataset('allenai/c4', 'es', split='train', streaming=True)
>>> d2 = load_dataset('allenai/c4', 'fr', split='train', streaming=True)
>>> dataset = interleave_datasets([d1, d2])
>>> iterator = iter(dataset)
>>> next(iterator)
{'text': 'Comprar Zapatillas para niña en chancla con goma por...'}
>>> next(iterator)
{'text': 'Le sacre de philippe ier, 23 mai 1059 - Compte Rendu...'

datasets.distributed.split_dataset_by_node

< >

( dataset: ~DatasetTyperank: intworld_size: intstrategy: typing.Literal['auto', 'shards', 'examples'] = 'auto' ) → Dataset or IterableDataset

パラメータ

  • dataset (Dataset または IterableDataset) — ノードごとに分割するデータセット。
  • rank (int) — 現在のノードのランク。
  • world_size (int) — ノードの総数。
  • strategy (str、デフォルトは"auto") — イテラブルなデータセットを分割する方法。"auto"、"shards"、または"examples"のいずれかである必要があります。 Mapスタイルのデータセットは"auto"のみサポートしています。

戻り値

DatasetまたはIterableDataset

ランクrankのノードで使用するデータセット。

world_sizeのノードプールにおいて、ランクrankのノード用にデータセットを分割します。

マップスタイルのデータセットの場合:

各ノードにはデータのチャンクが割り当てられます。例えば、rank 0 にはデータセットの最初のチャンクが割り当てられます。 データ読み込みのスループットを最大化するために、可能であればチャンクはディスク上の連続データで構成されます。

イテラブルなデータセットの場合:

strategy の分割は、"auto"、"shards"、または "examples" のいずれかです:

  • "shards": シャードはノード間で均等に割り当てられます
  • "examples": 各ノードはworld_size個の例のうち1つを保持し、他の例はスキップします
  • "auto" (デフォルト): データセットのシャード数がworld_sizeの約数である場合 (つまりdataset.num_shards % world_size == 0の場合) は、最適化された"shards"を使用します。それ以外の場合は"examples"を使用します。

分散環境でイテラブルなデータセットをシャッフルする場合は、各ノードがどのシャードをスキップすべきかを把握できるように、すべてのノードで同じシャッフル済みシャードのリストが使用されるよう、IterableDataset.shuffle()内で固定のseedを設定してください。

datasets.enable_caching

< >

( )

データセットにトランスフォームを適用すると、データはキャッシュファイルに保存されます。 このキャッシュ機構により、すでに計算済みの既存のキャッシュファイルを再読み込みできます。

各transform後に更新されるデータセットのフィンガープリントを用いてキャッシュファイルに名前が付けられるため、データセットの再読み込みが可能です。

無効にすると、ライブラリはデータセットにトランスフォームを適用する際に、キャッシュされたデータセットファイルを再読み込みしなくなります。 より正確には、キャッシュが無効化されている場合:

  • cacheファイルは常に再作成されます
  • cache filesは、セッションが閉じられた際に削除される一時ディレクトリに書き込まれます
  • cacheファイルは、データセットのフィンガープリントではなく、ランダムなハッシュを使用して命名されます
  • 変換されたデータセットを保存するにはsave_to_disk()を使用してください。そうしないと、セッションが閉じられた際に削除されます。
  • caching は load_dataset() には影響しません。データセットを最初から再生成したい場合は、load_dataset() の download_mode パラメータを使用してください。

datasets.disable_caching

< >

( )

データセットにトランスフォームを適用すると、データはキャッシュファイルに保存されます。 このキャッシュ機構により、すでに計算済みの既存のキャッシュファイルを再読み込みできます。

各transform後に更新されるデータセットのフィンガープリントを用いてキャッシュファイルに名前が付けられるため、データセットの再読み込みが可能です。

無効にすると、ライブラリはデータセットにトランスフォームを適用する際に、キャッシュされたデータセットファイルを再読み込みしなくなります。 より正確には、キャッシュが無効化されている場合:

  • cacheファイルは常に再作成されます
  • cache filesは、セッションが閉じられた際に削除される一時ディレクトリに書き込まれます
  • cacheファイルは、データセットのフィンガープリントではなく、ランダムなハッシュを使用して命名されます
  • 変換されたデータセットを保存するにはsave_to_disk()を使用してください。そうしないと、セッションが閉じられた際に削除されます。
  • caching は load_dataset() には影響しません。データセットを最初から再生成したい場合は、load_dataset() の download_mode パラメータを使用してください。

datasets.is_caching_enabled

< >

( )

データセットにトランスフォームを適用すると、データはキャッシュファイルに保存されます。 このキャッシュ機構により、すでに計算済みの既存のキャッシュファイルを再読み込みできます。

各transform後に更新されるデータセットのフィンガープリントを用いてキャッシュファイルに名前が付けられるため、データセットの再読み込みが可能です。

無効にすると、ライブラリはデータセットにトランスフォームを適用する際に、キャッシュされたデータセットファイルを再読み込みしなくなります。 より正確には、キャッシュが無効化されている場合:

  • cacheファイルは常に再作成されます
  • cache filesは、セッションが閉じられた際に削除される一時ディレクトリに書き込まれます
  • cacheファイルは、データセットのフィンガープリントではなく、ランダムなハッシュを使用して命名されます
  • 変換されたデータセットを保存するには、save_to_disk()を使用してください。そうしないと、セッションが閉じられた際に削除されます。
  • caching は load_dataset() には影響しません。データセットを最初から再生成したい場合は、load_dataset() の download_mode パラメータを使用してください。

class datasets.Column

< >

( source: typing.Union[ForwardRef('Dataset'), ForwardRef('Column')]column_name: str )

Datasetの特定の列に対するイテラブル。

例:

datasetの“text”列のテキストを反復処理します:

for text in dataset["text"]:
    ...

ネストされたカラムでも動作します:

for source in dataset["metadata"]["source"]:
    ...

DatasetDict

分割名(例: ‘train’、‘test’)をキーとし、Datasetオブジェクトを値とする辞書です。 map や filter などのデータセット変換メソッドも備えており、すべての分割を一度に処理できます。

クラス datasets.DatasetDict

< >

( )

datasets.Dataset の変換メソッド(map、filter など)を持つ辞書(dict of str: datasets.Dataset)

データ

< >

( )

各スプリットを裏付けるApache Arrowテーブル。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.data

cache_files

< >

( )

各スプリットを裏付けるApache Arrowテーブルを含むキャッシュファイル。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.cache_files
{'test': [{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-test.arrow'}],
 'train': [{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-train.arrow'}],
 'validation': [{'filename': '/root/.cache/huggingface/datasets/rotten_tomatoes_movie_review/default/1.0.0/40d411e45a6ce3484deed7cc15b82a53dad9a72aafd9f86f8f227134bec5ca46/rotten_tomatoes_movie_review-validation.arrow'}]}

num_columns

< >

( )

データセットの各分割における列数。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.num_columns
{'test': 2, 'train': 2, 'validation': 2}

num_rows

< >

( )

データセットの各分割における行数。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.num_rows
{'test': 1066, 'train': 8530, 'validation': 1066}

column_names

< >

( )

データセットの各スプリットにおけるカラム名。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.column_names
{'test': ['text', 'label'],
 'train': ['text', 'label'],
 'validation': ['text', 'label']}

shape

< >

( )

データセットの各分割の形状(行数、列数)。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.shape
{'test': (1066, 2), 'train': (8530, 2), 'validation': (1066, 2)}

unique

< >

( column: str ) → Dict[str, list]

パラメータ

  • column (str) — カラム名(column_namesで全カラム名をリスト表示できます)

戻り値

Dict[str, list]

指定されたカラムの一意の要素の辞書。

各スプリットについて、カラム内の一意の要素のリストを返します。

これは低レベルのバックエンドで実装されており、そのため非常に高速です。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.unique("label")
{'test': [1, 0], 'train': [1, 0], 'validation': [1, 0]}

cleanup_cache_files

< >

( )

データセットのキャッシュディレクトリ内のすべてのキャッシュファイルを、現在使用されているキャッシュファイルがある場合はそれを除いて削除します。 このコマンドを実行する際は、他のプロセスが他のキャッシュファイルを使用していないことに注意してください。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.cleanup_cache_files()
{'test': 0, 'train': 0, 'validation': 0}

map

< >

( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falsewith_split: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000features: typing.Optional[datasets.features.features.Features] = Nonedisable_nullable: bool = Falsefn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonedesc: typing.Optional[str] = Nonetry_original_type: typing.Optional[bool] = Trueon_mixed_types: typing.Optional[typing.Literal['use_json']] = None )

パラメータ

  • function (callable) — 以下のいずれかのシグネチャを持つ
    • batched=False かつ with_indices=False の場合、function(example: Dict[str, Any]) -> Dict[str, Any]
    • function(example: Dict[str, Any], indices: int) -> Dict[str, Any] は、batched=False かつ with_indices=True の場合
    • batched=True かつ with_indices=False の場合、function(batch: Dict[str, list]) -> Dict[str, list]
    • function(batch: Dict[str, list], indices: list[int]) -> Dict[str, list] は、batched=True かつ with_indices=True の場合

    高度な用途では、関数はpyarrow.Tableを返すこともできます。 関数が非同期の場合、mapは関数を並列で実行します。 さらに、関数が何も返さない(None)場合、mapは関数を実行し、データセットを変更せずに返します。 関数が指定されない場合、恒等関数lambda x: xがデフォルトとして使用されます。

  • with_indices (bool、デフォルトはFalse) — functionにインデックスの例を提供します。この場合、functionのシグネチャはdef function(example, idx): ...である必要があります。
  • with_rank (bool、デフォルトは False) — function にプロセスのランクを渡します。この場合、function のシグネチャは def function(example[, idx], rank): ... である必要があります。
  • with_split (bool、デフォルトはFalse) — functionにプロセス分割を提供します。この場合、functionのシグネチャはdef function(example[, idx], split): ...である必要があります。
  • input_columns ([Union[str, list[str]]]、省略可、デフォルトはNone) — functionに位置引数として渡す列を指定します。Noneの場合、フォーマット済みのすべての列へのマッピングを含む辞書が、1つの引数として渡されます。
  • batched (bool、デフォルトはFalse) — functionにサンプルのバッチを提供します。
  • batch_size (int、任意、デフォルトは 1000) — batched=True の場合、function に渡すバッチあたりのサンプル数。batch_size <= 0 または batch_size == None の場合、function にデータセット全体を単一のバッチとして渡します。
  • drop_last_batch (bool、デフォルトは False) — batch_size より小さい最後のバッチを、関数で処理する代わりに破棄するかどうか。
  • remove_columns ([Union[str, list[str]]], 省略可能、デフォルトは None) — マッピング処理中に、選択した列を削除します。 列は、function の出力で例を更新する前に削除されます。つまり、function が remove_columns に含まれる名前の列を追加する場合、これらの列は保持されます。
  • keep_in_memory (bool、デフォルトはFalse) — キャッシュファイルに書き込む代わりに、データセットをメモリに保持します。
  • load_from_cache_file (Optional[bool]、キャッシュが有効な場合のデフォルトはTrue) — functionの現在の計算を保存したキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • cache_file_names ([Dict[str, str]]、任意、デフォルトはNone) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、計算結果を保存するために使用されます。データセット辞書の各データセットに対して、cache_file_nameを1つずつ指定する必要があります。
  • writer_batch_size (int, デフォルト 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくするとmap実行中の一時メモリ消費量が少なくなります。
  • features ([datasets.Features]、任意、デフォルトはNone) — 自動生成されるものではなく、特定のFeaturesを使用してキャッシュファイルを保存します。
  • disable_nullable (bool、デフォルトはFalse) — テーブル内の null 値を許可しません。
  • fn_kwargs (Dict、任意、デフォルトはNone) — functionに渡すキーワード引数
  • num_proc (int, 省略可能, デフォルトは None) — マルチプロセッシングに使用するプロセス数。None または 0 の場合、マルチプロセッシングは使用されず、操作はメインプロセスで実行されます。1 より大きい値の場合、1 つ以上のワーカープロセスを使用してデータを並列で処理します。注意: マルチプロセッシングが正しく動作するには、map() に渡す関数が pickle 可能である必要があります(つまり、モジュールのトップレベルで定義された関数を優先し、別の関数やクラス内で定義された関数は避けてください)。
    • Noneまたは0の場合、マルチプロセッシングは使用されず、操作はメインプロセスで実行されます。
    • 1 より大きい場合、1 つ以上のワーカープロセスを使用してデータを並列で処理します。 注: マルチプロセッシングが正しく動作するには、map() に渡される関数は picklable である必要があります (つまり、モジュールのトップレベルで定義された関数を優先し、別の関数やクラス内で定義しないようにしてください)。
  • desc (str、任意、デフォルトは None) — 例のマッピング中にプログレスバーとともに表示される意味のある説明。
  • try_original_type (Optional[bool], デフォルトは True) — 元の列の型を維持しようとします(例: int32 -> int32)。常に新しい型を推論したい場合は False に設定してください。
  • on_mixed_types (Literal["use_json"], 省略可能, デフォルトは None) — 「use_json」の場合、混合型のフィールドに Json() 型を使用します。つまり、事前定義されたスキーマを持たない非構造化データを含むフィールドです。この場合、混合型のフィールドは Json() に設定されます。

    これにより、文字列/整数/浮動小数点数の混合リストや、任意の値型を持つ辞書を読み込むことが可能になります。

    4.7.0で追加

mapメソッドは、テーブル内のすべての例に対して関数を適用し(個別に、またはバッチ単位で)、テーブルを更新します。 関数がすでに存在するカラムを返す場合、そのカラムは上書きされます。 変換は、データセット辞書のすべてのデータセットに適用されます。

batched パラメータで、関数をバッチ処理にするかどうかを指定できます:

  • Falseの場合、関数は1つの例を受け取り、1つの例を返す必要があります。 例は辞書であり、例えば{"text": "Hello there !"}です。
  • True かつ batch_size が 1 の場合、この関数は 1 つのサンプルのバッチを入力として受け取り、1 つ以上のサンプルを含むバッチを返すことができます。 バッチは辞書であり、例えば 1 つのサンプルのバッチは {"text": ["Hello there !"]} のようになります。
  • True かつ batch_size が n > 1 の場合、この関数は n 個のサンプルのバッチを入力として受け取り、n 個のサンプルを含むバッチ、または任意の数のサンプルを含むバッチを返すことができます。 最後のバッチは n 個未満のサンプルを含む場合があります。 バッチは辞書です。例えば、n 個のサンプルのバッチは {"text": ["Hello there !"] * n} のようになります。

関数が非同期の場合、mapは最大1,000回の同時呼び出しで、関数を並列に実行します。 同時に実行できる操作の最大数を設定したい場合は、関数内でasyncio.Semaphoreを使用することをお勧めします。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> def add_prefix(example):
...     example["text"] = "Review: " + example["text"]
...     return example
>>> ds = ds.map(add_prefix)
>>> ds["train"][0:3]["text"]
['Review: the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
 'Review: the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .',
 'Review: effective but too-tepid biopic']

# process a batch of examples
>>> ds = ds.map(lambda example: tokenizer(example["text"]), batched=True)
# set number of processors
>>> ds = ds.map(add_prefix, num_proc=4)

フィルタ

< >

( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_rank: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Nonecache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = Nonenum_proc: typing.Optional[int] = Nonedesc: typing.Optional[str] = None )

パラメータ

  • function (Callable) — 次のいずれかのシグネチャを持つ Callable:
    • function(example: Dict[str, Any]) -> bool は、batched=False かつ with_indices=False かつ with_rank=False の場合です。
    • function(example: Dict[str, Any], *extra_args) -> bool は、batched=False かつ with_indices=True および/または with_rank=True の場合(それぞれ1つの追加引数)
    • batched=True かつ with_indices=False かつ with_rank=False の場合、function(batch: Dict[str, list]) -> list[bool]
    • function(batch: Dict[str, list], *extra_args) -> list[bool] は、batched=True かつ with_indices=True および/または with_rank=True の場合、それぞれ 1 つずつの追加引数を受け取ります

    関数が指定されていない場合、常にTrueを返す関数lambda x: Trueがデフォルトとして使用されます。

  • with_indices (bool、デフォルトはFalse) — functionにサンプルのインデックスを提供します。この場合、functionのシグネチャはdef function(example, idx[, rank]): ...である必要があります。
  • with_rank (bool、デフォルトは False) — function にプロセスのランクを渡します。この場合、function のシグネチャは def function(example[, idx], rank): ... である必要があります。
  • input_columns ([Union[str, list[str]]]、省略可、デフォルトはNone) — functionに位置引数として渡す列を指定します。Noneの場合、フォーマット済みのすべての列へのマッピングを含む辞書が、1つの引数として渡されます。
  • batched (bool、デフォルトはFalse) — functionにサンプルのバッチを提供します。
  • batch_size (int、任意、デフォルトは1000) — batched=Trueの場合、functionに渡すバッチあたりのサンプル数。 batch_size <= 0またはbatch_size == Noneの場合、functionにデータセット全体を単一のバッチとして渡します。
  • keep_in_memory (bool、デフォルトはFalse) — キャッシュファイルに書き込む代わりに、データセットをメモリに保持します。
  • load_from_cache_file (Optional[bool]、キャッシュが有効な場合のデフォルトはTrue) — functionの現在の計算を保存したキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • cache_file_names ([Dict[str, str]]、任意、デフォルトはNone) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、計算結果を保存するために使用されます。データセット辞書の各データセットに対して、cache_file_nameを1つずつ指定する必要があります。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくすると map 実行中の一時メモリ消費量が少なくなります。
  • fn_kwargs (Dict、任意、デフォルトはNone) — functionに渡すキーワード引数
  • num_proc (int, 省略可能, デフォルトは None) — マルチプロセッシングに使用するプロセス数。None または 0 の場合、マルチプロセッシングは使用されず、操作はメインプロセスで実行されます。1 より大きい値の場合、1 つ以上のワーカープロセスを使用してデータを並列で処理します。注意: マルチプロセッシングが正しく動作するには、map() に渡す関数が pickle 可能である必要があります(つまり、モジュールのトップレベルで定義された関数を優先し、別の関数やクラス内で定義された関数は避けてください)。
    • Noneまたは0の場合、マルチプロセッシングは使用されず、操作はメインプロセスで実行されます。
    • 1 より大きい場合、1 つ以上のワーカープロセスを使用してデータを並列で処理します。 注: マルチプロセッシングが正しく動作するには、map() に渡される関数は picklable である必要があります (つまり、モジュールのトップレベルで定義された関数を優先し、別の関数やクラス内で定義しないようにしてください)。
  • desc (str、任意、デフォルトは None) — サンプルをフィルタリングしている間、プログレスバーとともに表示される意味のある説明。

filterメソッドは、テーブル内のすべての要素にバッチ単位でフィルタ関数を適用し、フィルタ関数に一致するサンプルのみを含むようにテーブルを更新します。この変換は、DatasetDict内のすべてのDatasetに適用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.filter(lambda x: x["label"] == 1)
DatasetDict({
    train: Dataset({
        features: ['text', 'label'],
        num_rows: 4265
    })
    validation: Dataset({
        features: ['text', 'label'],
        num_rows: 533
    })
    test: Dataset({
        features: ['text', 'label'],
        num_rows: 533
    })
})

sort

< >

( column_names: typing.Union[str, collections.abc.Sequence[str]]reverse: typing.Union[bool, collections.abc.Sequence[bool]] = Falsenull_placement: str = 'at_end'keep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000 )

パラメータ

  • column_names (Union[str, Sequence[str]]) — ソートに使用する列名です。
  • reverse (Union[bool, Sequence[bool]]、デフォルトは False) — True の場合、昇順ではなく降順でソートします。単一の bool が指定された場合、その値はすべてのカラム名のソートに適用されます。それ以外の場合は、column_names と同じ長さかつ同じ順序の bool のリストを指定する必要があります。
  • null_placement (str、デフォルトは at_end) — at_start または first の場合は None の値を先頭に、at_end または last の場合は末尾に配置します
  • keep_in_memory (bool、デフォルトはFalse) — ソート済みインデックスをキャッシュファイルに書き出さず、メモリに保持します。
  • load_from_cache_file (Optional[bool]、キャッシュが有効な場合のデフォルトはTrue) — ソート済みインデックスを保存するキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • indices_cache_file_names ([Dict[str, str]]、任意、デフォルトはNone) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、インデックスのマッピングを保存するために使用されます。データセットの辞書内の各データセットに対して、cache_file_nameを1つずつ指定する必要があります。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 値を大きくするとキャッシュファイルは小さくなりますが、値を小さくすると一時メモリ消費量が少なくなります。

1つの列または複数の列に基づいてソートされた新しいデータセットを作成します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset('cornell-movie-review-data/rotten_tomatoes')
>>> ds['train']['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> sorted_ds = ds.sort('label')
>>> sorted_ds['train']['label'][:10]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> another_sorted_ds = ds.sort(['label', 'text'], reverse=[True, False])
>>> another_sorted_ds['train']['label'][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

シャッフル

< >

( seeds: typing.Union[int, dict[str, typing.Optional[int]], NoneType] = Noneseed: typing.Optional[int] = Nonegenerators: typing.Optional[dict[str, numpy.random._generator.Generator]] = Nonekeep_in_memory: bool = Falseload_from_cache_file: typing.Optional[bool] = Noneindices_cache_file_names: typing.Optional[dict[str, typing.Optional[str]]] = Nonewriter_batch_size: typing.Optional[int] = 1000 )

パラメータ

  • seeds (Dict[str, int] または int、省略可) — generator=None の場合、デフォルトの BitGenerator を初期化するためのシードです。 None の場合、OS から新しい予測不能なエントロピーを取得します。 int または array_like[ints] が渡された場合、SeedSequence に渡されて、BitGenerator の初期状態が導出されます。 データセットの辞書内で、データセットごとに 1 つの seed を指定できます。
  • seed (int, 任意) — generator=None の場合、デフォルトの BitGenerator を初期化するためのシードです。seeds の別名です(両方が指定された場合は ValueError が発生します)。
  • generators (Dict[str, *optional*, np.random.Generator]) — データセットの行の置換を計算するために使用する Numpy ランダム Generator。 generator=None (デフォルト) の場合、np.random.default_rng (NumPy のデフォルト BitGenerator (PCG64)) が使用されます。 データセット辞書内の各データセットに対して 1 つの generator を指定する必要があります。
  • keep_in_memory (bool、デフォルトはFalse) — キャッシュファイルに書き込む代わりに、データセットをメモリに保持します。
  • load_from_cache_file (Optional[bool]、キャッシュが有効な場合のデフォルトはTrue) — functionの現在の計算を保存したキャッシュファイルが特定できる場合、再計算する代わりにそれを使用します。
  • indices_cache_file_names (Dict[str, str]、省略可) — キャッシュファイルのパス名を指定します。自動生成されるキャッシュファイル名ではなく、インデックスのマッピングを保存するために使用されます。データセットの辞書内の各データセットに対して、cache_file_name を1つずつ指定する必要があります。
  • writer_batch_size (int, デフォルトは 1000) — キャッシュファイルライターにおける1回の書き込み操作あたりの行数です。 この値は、処理中のメモリ使用量と処理速度のバランスを取るのに適しています。 値を大きくすると参照回数が減り、値を小さくすると map 実行中の一時メモリ消費量が少なくなります。

行がシャッフルされた新しい Dataset を作成します。

変換は、データセット辞書のすべてのデータセットに適用されます。

現在、シャッフル処理ではNumPyの乱数生成器が使用されています。 使用するNumPyのBitGeneratorを指定するか、NumPyのデフォルトの乱数生成器(PCG64)を開始するためのシードを指定できます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds["train"]["label"][:10]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

# set a seed
>>> shuffled_ds = ds.shuffle(seed=42)
>>> shuffled_ds["train"]["label"][:10]
[0, 1, 0, 1, 0, 0, 0, 0, 0, 0]

set_format

< >

( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )

パラメータ

  • type (str, 省略可能) — [None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'] から選択した出力タイプ。 None は、__getitem__ が Python オブジェクトを返すことを意味します(デフォルト)。
  • columns (list[str]、任意) — 出力で整形する列。 None は __getitem__ がすべての列を返すことを意味します(デフォルト)。
  • output_all_columns (bool、デフォルトは False) — 出力に、フォーマットされていないカラムも(Python オブジェクトとして)含めるかどうか。
  • **format_kwargs (追加のキーワード引数) — np.array、torch.tensor、tensorflow.ragged.constant などの変換関数に渡されるキーワード引数。

__getitem__の返り値の形式(型とカラム)を設定します。 この形式は、データセット辞書内のすべてのデータセットに設定されます。

set_formatを呼び出した後でmapを呼び出すことも可能です。mapは新しいカラムを追加する可能性があるため、フォーマットが適用されたカラムのリストは更新されます。この場合、データセットに対してmapを適用して新しいカラムを追加すると、そのカラムにフォーマットが適用されます。

new formatted columns = (all columns - previously unformatted columns)

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x["text"], truncation=True, padding=True), batched=True)
>>> ds.set_format(type="numpy", columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'])
>>> ds["train"].format
{'columns': ['input_ids', 'token_type_ids', 'attention_mask', 'label'],
 'format_kwargs': {},
 'output_all_columns': False,
 'type': 'numpy'}

reset_format

< >

( )

__getitem__の戻り値の形式をPythonオブジェクトおよび全カラムにリセットします。 この変換は、データセット辞書のすべてのデータセットに適用されます。

self.set_format() と同じです

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x["text"], truncation=True, padding=True), batched=True)
>>> ds.set_format(type="numpy", columns=['input_ids', 'token_type_ids', 'attention_mask', 'label'])
>>> ds["train"].format
{'columns': ['input_ids', 'token_type_ids', 'attention_mask', 'label'],
 'format_kwargs': {},
 'output_all_columns': False,
 'type': 'numpy'}
>>> ds.reset_format()
>>> ds["train"].format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
 'format_kwargs': {},
 'output_all_columns': False,
 'type': None}

formatted_as

< >

( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )

パラメータ

  • type (str, 省略可能) — [None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'] から選択した出力タイプ。 None は、__getitem__ が Python オブジェクトを返すことを意味します(デフォルト)。
  • columns (list[str]、任意) — 出力で整形する列。 None は __getitem__ がすべての列を返すことを意味します(デフォルト)。
  • output_all_columns (bool、デフォルトは False) — 出力に、フォーマットされていないカラムも(Python オブジェクトとして)含めるかどうか。
  • **format_kwargs (追加のキーワード引数) — np.array、torch.tensor、tensorflow.ragged.constant などの変換関数に渡されるキーワード引数。

with 文で使用します。__getitem__ の戻り値の形式(型とカラム)を設定します。 変換は、データセット辞書のすべてのデータセットに適用されます。

with_format

< >

( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )

パラメータ

  • type (str, 省略可能) — [None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'] から選択した出力タイプ。 None は、__getitem__ が Python オブジェクトを返すことを意味します(デフォルト)。
  • columns (list[str]、任意) — 出力で整形する列。 None は __getitem__ がすべての列を返すことを意味します(デフォルト)。
  • output_all_columns (bool、デフォルトはFalse) — 出力に、フォーマットされていないカラムも(Python オブジェクトとして)含めるかどうか。
  • **format_kwargs (追加のキーワード引数) — np.array、torch.tensor、tensorflow.ragged.constant などの変換関数に渡されるキーワード引数。

__getitem__の戻り値の形式(型とカラム)を設定します。データの整形はオンザフライで適用されます。 __getitem__を使用する際にバッチを整形するために、形式のtype(例: “numpy”)が使用されます。 この形式は、データセット辞書内のすべてのデータセットに対して設定されます。

It’s also possible to use custom transforms for formatting using with_transform().

set_format()とは異なり、with_formatは新しいDatasetオブジェクトを含む新しいDatasetDictオブジェクトを返します。

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds["train"].format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
 'format_kwargs': {},
 'output_all_columns': False,
 'type': None}
>>> ds = ds.with_format("torch")
>>> ds["train"].format
{'columns': ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
 'format_kwargs': {},
 'output_all_columns': False,
 'type': 'torch'}
>>> ds["train"][0]
{'text': 'compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
 'label': tensor(1),
 'input_ids': tensor([  101, 18027, 16310, 16001,  1103,  9321,   178, 11604,  7235,  6617,
        1742,  2165,  2820,  1206,  6588, 22572, 12937,  1811,  2153,  1105,
        1147, 12890, 19587,  6463,  1105, 15026,  1482,   119,   102,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0]),
 'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
 'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])}

with_transform

< >

( transform: typing.Optional[typing.Callable]columns: typing.Optional[list] = Noneoutput_all_columns: bool = False )

パラメータ

  • transform (Callable, 省略可) — ユーザーが定義したフォーマット変換。 set_format() で定義されたフォーマットを置き換えます。 フォーマット関数は、バッチ(dict として)を入力に取り、バッチを返す呼び出し可能なオブジェクトです。 この関数は、 __getitem__ でオブジェクトを返す直前に適用されます。
  • columns (list[str]、任意) — 出力で整形する列を指定します。 指定した場合、transform の入力バッチには、これらの列のみが含まれます。
  • output_all_columns (bool、デフォルトは False) — 出力に、フォーマットされていないカラムも(Python オブジェクトとして)保持します。 True に設定すると、変換の出力とともに、他のフォーマットされていないカラムも保持されます。

このtransformを使用して__getitem__の返却形式を設定します。__getitem__が呼び出された際に、バッチに対してこのtransformがオンザフライで適用されます。 このtransformは、データセット辞書内のすべてのデータセットに設定されます。

set_format()と同様に、reset_format()を使用してリセットできます。

set_transform() とは異なり、with_transform は新しい Dataset オブジェクトを含む新しい DatasetDict オブジェクトを返します。

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> def encode(example):
...     return tokenizer(example['text'], truncation=True, padding=True, return_tensors="pt")
>>> ds = ds.with_transform(encode)
>>> ds["train"][0]
{'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1]),
 'input_ids': tensor([  101,  1103,  2067,  1110, 17348,  1106,  1129,  1103,  6880,  1432,
        112,   188,  1207,   107, 14255,  1389,   107,  1105,  1115,  1119,
        112,   188,  1280,  1106,  1294,   170, 24194,  1256,  3407,  1190,
        170, 11791,  5253,   188,  1732,  7200, 10947, 12606,  2895,   117,
        179,  7766,   118,   172, 15554,  1181,  3498,  6961,  3263,  1137,
        188,  1566,  7912, 14516,  6997,   119,   102]),
 'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0])}

flatten

< >

( max_depth = 16 )

各スプリットのApache Arrow Tableをフラット化します(ネストされた特徴量はフラット化されます)。 struct型の各カラムは、structフィールドごとに1カラムずつフラット化されます。 その他のカラムは変更されません。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("rajpurkar/squad")
>>> ds["train"].features
{'id': Value('string'),
 'title': Value('string'),
 'context': Value('string'),
 'question': Value('string'),
 'answers.text': List(Value('string')),
 'answers.answer_start': List(Value('int32'))}
>>> ds.flatten()
DatasetDict({
    train: Dataset({
        features: ['id', 'title', 'context', 'question', 'answers.text', 'answers.answer_start'],
        num_rows: 87599
    })
    validation: Dataset({
        features: ['id', 'title', 'context', 'question', 'answers.text', 'answers.answer_start'],
        num_rows: 10570
    })
})

キャスト

< >

( features: Features )

パラメータ

  • features (Features) — データセットをキャストする新しい特徴量です。 特徴量のフィールドの名前と順序は、現在の列名と一致する必要があります。 また、データ型も、ある型から別の型へ変換可能である必要があります。 string <-> ClassLabel のような非自明な変換を行う場合は、map() を使用してデータセットを更新してください。

データセットを新しい特徴量のセットにキャストします。 この変換は、データセット辞書のすべてのデータセットに適用されます。

例:

>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
 'text': Value('string')}
>>> new_features = ds["train"].features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
 'text': Value('large_string')}

cast_column

< >

( column: strfeature )

パラメータ

  • column (str) — 列名。
  • feature (Feature) — ターゲットとなる特徴量です。

デコード用にカラムをfeatureにキャストします。

例:

>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
 'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
 'text': Value('string')}

remove_columns

< >

( column_names: typing.Union[str, list[str]] ) → DatasetDict

パラメータ

  • column_names (Union[str, list[str]]) — 削除するカラムの名前。

戻り値

DatasetDict

削除するカラムを含まない、データセットオブジェクトのコピー。

データセットの各スプリットから1つ以上のカラムおよびそのカラムに関連付けられた特徴量を削除します。

変換は、データセット辞書のすべてのスプリットに適用されます。

remove_columns を使用して map() で列を削除することもできますが、本メソッドは残りの列のデータをコピーしないため、より高速です。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds = ds.remove_columns("label")
DatasetDict({
    train: Dataset({
        features: ['text'],
        num_rows: 8530
    })
    validation: Dataset({
        features: ['text'],
        num_rows: 1066
    })
    test: Dataset({
        features: ['text'],
        num_rows: 1066
    })
})

rename_column

< >

( original_column_name: strnew_column_name: str )

パラメータ

  • original_column_name (str) — リネームする列の名前。
  • new_column_name (str) — 列の新しい名前。

…の列名を変更し、元の列に関連付けられた特徴量を新しい列名の下に移動します。 この変換は、…辞書のすべてのデータセットに適用されます。

remove_columns を使用して map() で列の名前を変更することもできますが、現在のメソッドは:

  • 元の機能を新しい列名の下に移動する処理を担当します。
  • データを新しいデータセットにコピーしないため、はるかに高速です。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds = ds.rename_column("label", "label_new")
DatasetDict({
    train: Dataset({
        features: ['text', 'label_new'],
        num_rows: 8530
    })
    validation: Dataset({
        features: ['text', 'label_new'],
        num_rows: 1066
    })
    test: Dataset({
        features: ['text', 'label_new'],
        num_rows: 1066
    })
})

rename_columns

< >

( column_mapping: dict ) → DatasetDict

パラメータ

  • column_mapping (Dict[str, str]) — 列を新しい名前に変更するためのマッピングです。

戻り値

DatasetDict

列名が変更されたデータセットのコピー。

…データセット内の複数のカラム名を変更し、元のカラムに関連する特徴量を新しいカラム名の下に移動します。 この変換は、データセット辞書内のすべてのデータセットに適用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.rename_columns({'text': 'text_new', 'label': 'label_new'})
DatasetDict({
    train: Dataset({
        features: ['text_new', 'label_new'],
        num_rows: 8530
    })
    validation: Dataset({
        features: ['text_new', 'label_new'],
        num_rows: 1066
    })
    test: Dataset({
        features: ['text_new', 'label_new'],
        num_rows: 1066
    })
})

select_columns

< >

( column_names: typing.Union[str, list[str]] )

パラメータ

  • column_names (Union[str, list[str]]) — 保持するカラムの名前。

データセットの各スプリットから1つ以上のカラムと、そのカラムに関連する特徴量を選択します。

変換は、データセット辞書のすべてのスプリットに適用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds.select_columns("text")
DatasetDict({
    train: Dataset({
        features: ['text'],
        num_rows: 8530
    })
    validation: Dataset({
        features: ['text'],
        num_rows: 1066
    })
    test: Dataset({
        features: ['text'],
        num_rows: 1066
    })
})

class_encode_column

< >

( column: strinclude_nulls: bool = False )

パラメータ

  • column (str) — キャストするカラムの名前。
  • include_nulls (bool, デフォルトは False) — クラスラベルに null 値を含めるかどうか。 True, の場合、null 値は "None" クラスラベルとしてエンコードされます。

    1.14.2で追加

与えられたカラムをClassLabelとしてキャストし、テーブルを更新します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("google/boolq")
>>> ds["train"].features
{'answer': Value('bool'),
 'passage': Value('string'),
 'question': Value('string')}
>>> ds = ds.class_encode_column("answer")
>>> ds["train"].features
{'answer': ClassLabel(num_classes=2, names=['False', 'True']),
 'passage': Value('string'),
 'question': Value('string')}

push_to_hub

< >

( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[dict[str, int]] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )

パラメータ

  • repo_id (str) — プッシュ先リポジトリの ID。以下の形式で指定します: <user>/<dataset_name> または <org>/<dataset_name>. また、 <dataset_name>, も受け付けます。この場合、ログイン中のユーザーのネームスペースがデフォルトとして使用されます。

    バケット内の場所である場合もあります。例: buckets/<user_or_org>/<bucket_name>/...

  • config_name (str) — データセットの設定名。デフォルト値は “default” です。
  • set_default (bool, 省略可) — この設定をデフォルトとして設定するかどうか。設定しない場合、デフォルト設定は “default” という名前のものになります。
  • data_dir (str, 省略可) — アップロードするデータファイルを含むディレクトリ名。 config_name が “default” と異なる場合はその値、そうでない場合は “data” がデフォルトです。

    2.17.0で追加

  • commit_message (str, 任意) — プッシュ時にコミットするメッセージ。デフォルトは"Upload dataset"です。
  • commit_description (str, 省略可) — 作成されるコミットの説明。PR が作成される場合(create_pr が True の場合)は、PR の説明にもなります。

    2.16.0で追加

  • private (bool、省略可) — リポジトリを非公開にするかどうか。None(デフォルト)の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。
  • token (str, 任意) — Hugging Face Hub 用の任意の認証トークンです。トークンが渡されない場合、hf auth login でログインした際にローカルに保存されたトークンがデフォルトとして使用されます。トークンが渡されず、かつユーザーがログインしていない場合は、エラーが発生します。
  • revision (str, 省略可) — アップロードしたファイルをプッシュするブランチ。デフォルトでは "main" ブランチです。

    2.15.0で追加

  • create_pr (bool, 省略可能, デフォルトは False) — アップロードしたファイルで PR を作成するか、直接コミットするかどうか。

    2.15.0で追加

  • max_shard_size (int または str、任意、デフォルトは "500MB") — ハブにアップロードするデータセットのシャードの最大サイズです。文字列で指定する場合は、数字の後に単位("500MB" や "1GB" など)を続ける必要があります。
  • num_shards (Dict[str, int], 省略可能) — 書き出すシャード数。デフォルトでは、シャード数は max_shard_size. 辞書を使用して、各スプリットごとに異なる num_shards を定義できます。

    2.8.0で追加

  • embed_external_files (bool, デフォルトは True) — シャードにファイルのバイト列を埋め込むかどうか。具体的には、プッシュの前に、以下の型のフィールドに対して次の処理を行います。
    • AudioおよびImageは、ローカルパス情報を削除し、ファイルの内容をParquetファイルに埋め込みます。
  • num_proc (int, 省略可能, デフォルトは None) — データセットの準備とアップロード時のプロセス数。 データセットが多数のサンプルや埋め込むメディアファイルで構成されている場合に役立ちます。 hf_xet(HF への高速アップロード用の Rust クライアント)と連携するために「spawn」コンテキストを使用します。 デフォルトではマルチプロセッシングは無効です。

    4.0.0で追加

DatasetDictをParquetデータセットとしてハブにプッシュします。 DatasetDictはHTTPリクエストを使用してプッシュされるため、gitやgit-lfsのインストールは不要です。

各データセットの分割は独立してプッシュされます。プッシュされたデータセットは、元の分割名を保持します。

生成されるParquetファイルは、デフォルトで自己完結型です。データセットにImageまたはAudioデータが含まれている場合、Parquetファイルには画像や音声ファイルのバイトが保存されます。 embed_external_filesをFalseに設定することで、これを無効にできます。

例:

>>> dataset_dict.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", num_shards={"train": 1024, "test": 8})

データセットに新しい設定(またはサブセット)を追加したい場合(データセットに複数のタスク/バージョン/言語がある場合など):

>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")

save_to_disk

< >

( dataset_dict_path: typing.Union[str, bytes, os.PathLike]max_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[dict[str, int]] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None )

パラメータ

  • dataset_dict_path (path-like) — dataset dict が保存される dataset dict ディレクトリのパス(例: dataset/train)またはリモート URI(例: s3://my-bucket/dataset/train)。
  • max_shard_size (int または str、任意、デフォルトは "500MB") — ファイルシステムに保存されるデータセットのシャードの最大サイズです。文字列で指定する場合は、数字の後に単位("50MB" など)を続ける必要があります。
  • num_shards (Dict[str, int], 省略可能) — 書き出すシャード数。デフォルトでは、シャード数は max_shard_size および num_proc. データセット辞書の各データセットについて、シャード数を指定する必要があります。 辞書を使用して、各スプリットに対して異なる num_shards を定義できます。

    2.8.0で追加

  • num_proc (int, 省略可能, デフォルト None) — ローカルでデータセットをダウンロードおよび生成する際のプロセス数。 デフォルトではマルチプロセッシングは無効です。

    2.8.0で追加

  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.8.0で追加

fsspec.spec.AbstractFileSystem を使用して、データセットの辞書をファイルシステムに保存します。

Image、Audio、Videoデータの場合:

Image()、Audio()、Video()のデータはすべてarrowファイルに保存されます。 パスやURLを保存する場合は、Value(“string”)型を使用してください。

例:

>>> dataset_dict.save_to_disk("path/to/dataset/directory")
>>> dataset_dict.save_to_disk("path/to/dataset/directory", max_shard_size="1GB")
>>> dataset_dict.save_to_disk("path/to/dataset/directory", num_shards={"train": 1024, "test": 8})

load_from_disk

< >

( dataset_dict_path: typing.Union[str, bytes, os.PathLike]keep_in_memory: typing.Optional[bool] = Nonestorage_options: typing.Optional[dict] = None )

パラメータ

  • dataset_dict_path (path-like) — dataset dict を読み込む dataset dict ディレクトリのパス(例: "dataset/train")またはリモート URI(例: "s3//my-bucket/dataset/train")。
  • keep_in_memory (bool、デフォルトは None) — データセットをメモリ内にコピーするかどうか。None の場合、datasets.config.IN_MEMORY_MAX_SIZE をゼロ以外に設定して明示的に有効にしない限り、データセットはメモリ内にコピーされません。詳細は パフォーマンスの改善 セクションを参照してください。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.8.0で追加

fsspec.spec.AbstractFileSystem を使用して、ファイルシステムから、以前 save_to_disk で保存されたデータセットを読み込みます。

例:

>>> ds = load_from_disk('path/to/dataset/directory')

from_csv

< >

( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )

パラメータ

  • path_or_paths (dict of path-like) — CSV ファイルのパスです。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str, 任意、デフォルトは "~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • **kwargs (追加のキーワード引数) — pandas.read_csvに渡すキーワード引数。

CSVファイルからDatasetDictを作成します。

例:

>>> from datasets import DatasetDict
>>> ds = DatasetDict.from_csv({'train': 'path/to/dataset.csv'})

from_json

< >

( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )

パラメータ

  • path_or_paths (path-like または path-like のリスト) — JSON Lines ファイルのパス。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str, 任意、デフォルトは "~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • **kwargs (追加のキーワード引数) — JsonConfigに渡すキーワード引数。

JSON LinesファイルからDatasetDictを作成します。

例:

>>> from datasets import DatasetDict
>>> ds = DatasetDict.from_json({'train': 'path/to/dataset.json'})

from_parquet

< >

( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = Falsecolumns: typing.Optional[list[str]] = None**kwargs )

パラメータ

  • path_or_paths (dict of path-like) — CSV ファイルのパスです。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str、任意、デフォルトは"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • columns (list[str], 任意) — None 以外の場合、ファイルからこれらのカラムのみが読み込まれます。 カラム名はネストされたフィールドのプレフィックスとして指定でき、例えば ‘a’ を指定すると ‘a.b’、‘a.c’、‘a.d.e’ が選択されます。
  • **kwargs (追加のキーワード引数) — ParquetConfigに渡すキーワード引数。

ParquetファイルからDatasetDictを作成します。

例:

>>> from datasets import DatasetDict
>>> ds = DatasetDict.from_parquet({'train': 'path/to/dataset/parquet'})

from_text

< >

( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )

パラメータ

  • path_or_paths (dict of path-like) — テキストファイルのパスです。
  • features (Features、任意) — データセットの機能です。
  • cache_dir (str、任意、デフォルトは"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • **kwargs (追加のキーワード引数) — TextConfigに渡すキーワード引数。

テキストファイルからDatasetDictを作成します。

例:

>>> from datasets import DatasetDict
>>> ds = DatasetDict.from_text({'train': 'path/to/dataset.txt'})

IterableDataset

ベースクラス IterableDataset は、Python のジェネレーターによって裏付けられる反復可能な Dataset を実装しています。

class datasets.IterableDataset

< >

( ex_iterable: _BaseExamplesIterableinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneformatting: typing.Optional[datasets.iterable_dataset.FormattingConfig] = Nonedistributed: typing.Optional[datasets.iterable_dataset.DistributedConfig] = Nonetoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )

イテラブルでバックエンドされたDataset。

from_file

< >

( filename: str )

パラメータ

  • filename (str) — データセットのファイル名。

filenameのArrowテーブルからIterableDatasetをインスタンス化します。

from_pandas

< >

( df: DataFramefeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonepreserve_index: typing.Optional[bool] = Nonenum_shards: typing.Optional[int] = 1 )

パラメータ

  • df (pandas.DataFrame) — データセットを含むデータフレーム。
  • features (Features、任意) — データセットの機能です。
  • info (DatasetInfo、任意) — 説明や引用などの、データセットに関する情報です。
  • split (NamedSplit, 任意) — データセットの分割名。
  • preserve_index (bool, 省略可能) — 結果の Dataset にインデックスを追加の列として保存するかどうか。 デフォルトの None では、RangeIndex についてはメタデータとしてのみ保存されますが、それ以外のインデックスは列として保存されます。 preserve_index=True を使用すると、インデックスを列として保存することを強制できます。
  • num_shards (int、デフォルトは1) — イテラブルなデータセットをインスタンス化する際に定義するシャードの数です。これは、大きなデータセットでシャッフルを適切に行うために特に有用であり、PyTorchのDataLoaderによる高速な並列読み込みや、分散環境での使用を可能にするためにも役立ちます。

pandas.DataFrameをpyarrow.Tableに変換して、IterableDatasetを作成します。

結果として得られる Arrow Table のカラム型は、DataFrame 内の pandas.Series の dtype から推論されます。object 以外の Series の場合、NumPy の dtype はその Arrow 相当の型に変換されます。object の場合、この Series 内の Python オブジェクトを確認してデータ型を推測する必要があります。

object dtype の Series には、常に意味のある Arrow 型を導出するのに十分な情報が含まれていない点にご注意ください。DataFrame の長さが 0 である場合や、Series が None/nan オブジェクトのみを含む場合など、型を推論できない場合は、型は null に設定されます。この動作を回避するには、明示的な features を構築し、この関数に渡すことができます。

Important: a dataset created with from_pandas() lives in memory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it on disk and reload using e.g. to_parquet / from_parquet.

例:

>>> ds = IterableDataset.from_pandas(df)

from_dict

< >

( mapping: dictfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonenum_shards: typing.Optional[int] = 1 )

パラメータ

  • mapping (Mapping) — 文字列から配列または Python リストへのマッピング。
  • features (Features、任意) — データセットの機能です。
  • info (DatasetInfo、任意) — 説明や引用などの、データセットに関する情報です。
  • split (NamedSplit, 任意) — データセットの分割名。
  • num_shards (int、デフォルトは1) — イテラブルなデータセットをインスタンス化する際に定義するシャードの数です。これは、大きなデータセットでシャッフルを適切に行うために特に有用であり、PyTorchのDataLoaderによる高速な並列読み込みや、分散環境での使用を可能にするためにも役立ちます。

dictをpyarrow.Tableに変換して、IterableDatasetを作成します。

Important: a dataset created with from_dict() lives in memory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. to_parquet / from_parquet.

from_list

< >

( mapping: listfeatures: typing.Optional[datasets.features.features.Features] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Nonenum_shards: typing.Optional[int] = 1 )

パラメータ

  • mapping (List[dict]) — 文字列から行の値へのマッピングのリスト。
  • features(Features、省略可)— データセットの機能。
  • info (DatasetInfo, 任意) — 説明や引用などの、データセットに関する情報。
  • split (NamedSplit, 省略可) — データセットの分割の名前。
  • num_shards (int、デフォルトは1) — イテラブルなデータセットをインスタンス化する際に定義するシャードの数です。これは、大きなデータセットでシャッフルを適切に行うために特に有用であり、PyTorchのDataLoaderによる高速な並列読み込みや、分散環境での使用を可能にするためにも役立ちます。

辞書のリストをpyarrow.Tableに変換して、IterableDatasetを作成します。

features に何かが渡された場合でも、最初のエントリのキーがデータセットの列を決定するために使用されることに注意してください。

Important: a dataset created with from_list() lives in memory. This may change in the future, but in the meantime if you want to reduce memory usage you should write it back on disk and reload using e.g. from_parquet / to_parquet.

from_generator

< >

( generator: typing.Callablefeatures: typing.Optional[datasets.features.features.Features] = Nonegen_kwargs: typing.Optional[dict] = Nonesplit: NamedSplit = NamedSplit('train') )

パラメータ

  • generator (Callable) — yields してサンプルを生成するジェネレーター関数。
  • features (Features、任意) — データセットの機能です。
  • gen_kwargs(dict, 任意) — generator 呼び出し可能オブジェクトに渡すキーワード引数です。 gen_kwargs にシャードのリストを渡すことで、シャード化された反復可能データセットを定義できます。 これにより、シャッフルの改善や、複数のワーカーでデータセットを反復する場合の処理に活用できます。
  • split (NamedSplit, デフォルトは Split.TRAIN) — データセットに割り当てられる分割名。

    2.21.0で追加

ジェネレーターからIterable Datasetを作成します。

例:

>>> def gen():
...     yield {"text": "Good", "label": 0}
...     yield {"text": "Bad", "label": 1}
...
>>> ds = IterableDataset.from_generator(gen)
>>> def gen(shards):
...     for shard in shards:
...         with open(shard) as f:
...             for line in f:
...                 yield {"line": line}
...
>>> shards = [f"data{i}.txt" for i in range(32)]
>>> ds = IterableDataset.from_generator(gen, gen_kwargs={"shards": shards})
>>> ds = ds.shuffle(seed=42, buffer_size=10_000)  # shuffles the shards order + uses a shuffle buffer
>>> from torch.utils.data import DataLoader
>>> dataloader = DataLoader(ds.with_format("torch"), num_workers=4)  # give each worker a subset of 32/4=8 shards

remove_columns

< >

( column_names: typing.Union[str, list[str]] ) → IterableDataset

パラメータ

  • column_names (Union[str, List[str]]) — 削除するカラムの名前。

戻り値

IterableDataset

削除するカラムを含まない、データセットオブジェクトのコピー。

データセット内の1つ以上のカラムおよびそれに関連する機能を削除します。 削除は、データセットを反復処理する際に、各サンプルに対してオンザフライで実行されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .', 'label': 1}
>>> ds = ds.remove_columns("label")
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}

select_columns

< >

( column_names: typing.Union[str, list[str]] ) → IterableDataset

パラメータ

  • column_names (Union[str, List[str]]) — 選択するカラムの名前。

戻り値

IterableDataset

選択されたカラムを含むデータセットオブジェクトのコピー。

データセット内の1つ以上のカラムと、それに関連する特徴量を選択します。この選択は、データセットを反復処理する際に、各サンプルに対してオンザフライで実行されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .', 'label': 1}
>>> ds = ds.select_columns("text")
>>> next(iter(ds))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}

cast_column

< >

( column: strfeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure] ) → IterableDataset

パラメータ

  • column (str) — 列名。
  • feature (Feature) — ターゲットとなる特徴量です。

戻り値

IterableDataset

デコード用にカラムをfeatureにキャストします。

例:

>>> from datasets import load_dataset, Audio
>>> ds = load_dataset("PolyAI/minds14", name="en-US", split="train", streaming=True)
>>> ds.features
{'audio': Audio(sampling_rate=8000, mono=True, decode=True, id=None),
 'english_transcription': Value('string'),
 'intent_class': ClassLabel(num_classes=14, names=['abroad', 'address', 'app_error', 'atm_limit', 'balance', 'business_loan',  'card_issues', 'cash_deposit', 'direct_debit', 'freeze', 'high_value_payment', 'joint_account', 'latest_transactions', 'pay_bill']),
 'lang_id': ClassLabel(num_classes=14, names=['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']),
 'path': Value('string'),
 'transcription': Value('string')}
>>> ds = ds.cast_column("audio", Audio(sampling_rate=16000))
>>> ds.features
{'audio': Audio(sampling_rate=16000, mono=True, decode=True, id=None),
 'english_transcription': Value('string'),
 'intent_class': ClassLabel(num_classes=14, names=['abroad', 'address', 'app_error', 'atm_limit', 'balance', 'business_loan',  'card_issues', 'cash_deposit', 'direct_debit', 'freeze', 'high_value_payment', 'joint_account', 'latest_transactions', 'pay_bill']),
 'lang_id': ClassLabel(num_classes=14, names=['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']),
 'path': Value('string'),
 'transcription': Value('string')}

キャスト

< >

( features: Features ) → IterableDataset

パラメータ

  • features (Features) — データセットをキャストする新しい特徴量。 特徴量のフィールド名は、現在の列名と一致する必要があります。 また、データ型も、ある型から別の型へ変換可能である必要があります。 string <-> ClassLabel のような非自明な変換を行う場合は、map() を使用して Dataset を更新してください。

戻り値

IterableDataset

キャストされた特徴量を持つデータセットのコピー。

データセットを新しい特徴量のセットにキャストします。

例:

>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
 'text': Value('string')}
>>> new_features = ds.features.copy()
>>> new_features["label"] = ClassLabel(names=["bad", "good"])
>>> new_features["text"] = Value("large_string")
>>> ds = ds.cast(new_features)
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
 'text': Value('large_string')}

decode

< >

( enable: bool = Truenum_threads: typing.Optional[int] = None ) → IterableDataset

パラメータ

  • enable (bool, デフォルトは True) — 機能のデコーディングを有効化または無効化します。
  • num_threads (int、任意、デフォルトはNone) — 特徴量のデコードにマルチスレッドを有効にします。なお、HF上でデコード可能な特徴量を持つデータセットをストリーミングする際、load_dataset()はデフォルトでいくつかのスレッドを使用します。 デフォルトでは、デコードを必要とする特徴量が少なくとも1つある場合はnum_threadsが32に設定され、それ以外の場合は0に設定されます。

戻り値

IterableDataset

キャストされた特徴量を持つデータセットのコピー。

音声、画像、動画のデータセット機能のデコードを有効化または無効化します。

有効な場合(デフォルト)、メディアタイプはデコードされます:

  • audio -> “array”、“sampling_rate”、“path”の辞書
  • image -> PIL.Image
  • video -> torchcodec.decoders.VideoDecoder

num_threads を設定することでマルチスレッドを有効にできます。これにより、各メディアファイルはワーカースレッドで読み取り・デコードされ、連続するサンプル間のネットワーク往復がオーバーラップします。これはリモートデータストリーミングの高速化に特に有用であり、デコード可能な特徴量を持つリモートデータセットをストリーミングする場合、load_dataset() はデフォルトでこれを有効にしています(HF_DATASETS_DECODE_NUM_THREADS を参照)。ローカルディスクから読み取られるデータセットは、高速ディスク上のローカルデータではメインスレッドでのデコードよりもマルチスレッドの方が遅くなる可能性があるため、num_threads=0 でストリーミングされます。サンプルは事前にデコードされるため、実行中の各スレッドはメモリに1つのサンプルを保持できます。メモリ使用量を減らすには、num_threads を下げてください。

デコードを無効にすると、メディアファイルのパスやバイトをデコードせずに反復処理できます。デコードを無効にするには、.decode(False)を使用できます。これは、すべてのAudio、Image、Video型をdecode=Falseに設定して.cast()または.cast_column()を呼び出すことと同等です。

例:

デコードを無効にする:

>>> from datasets import load_dataset
>>> ds = load_dataset("sshh12/planet-textures", split="train", streaming=True)
>>> next(iter(ds))
{'image': <PIL.PngImagePlugin.PngImageFile image mode=RGB size=2048x1024>,
'text': 'A distant celestial object with an icy crust, displaying a light blue shade, covered with round pits and rugged terrains.'}
>>> ds = ds.decode(False)
>>> ds.features
{'image': Image(mode=None, decode=False, id=None),
'text': Value('string')}
>>> next(iter(ds))
{
  'image': {
    'path': 'hf://datasets/sshh12/planet-textures@69dc4cef7a5c4b2cfe387727ec8ea73d4bff7302/train/textures/0000.png',
    'bytes': None
  },
  'text': 'A distant celestial object with an icy crust, displaying a light blue shade, covered with round pits and rugged terrains.'
}

マルチスレッドでストリーミングを高速化:

>>> import os
>>> from datasets import load_dataset
>>> from tqdm import tqdm
>>> ds = load_dataset("sshh12/planet-textures", split="train", streaming=True)
>>> # already threaded by default with 32 threads, but more threads can help going even faster
>>> ds = ds.decode(num_threads=64)
>>> for _ in tqdm(ds):  # 2 times faster !
...     ...

__iter__

< >

( )

iter

< >

( batch_size: intdrop_last_batch: bool = False )

パラメータ

  • batch_size (int) — 各バッチのサイズ。
  • drop_last_batch (bool、デフォルト False) — バッチサイズより小さい最後のバッチを破棄するかどうか

サイズがbatch_sizeのバッチを反復します。

map

< >

( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonefn_kwargs: typing.Optional[dict] = None )

パラメータ

  • function (Callable, 省略可, デフォルトは None) — データセットを反復処理する際に、サンプルに対してオンザフライで適用される関数。 次のいずれかのシグネチャを持つ必要があります:
    • batched=False かつ with_indices=False の場合、function(example: Dict[str, Any]) -> Dict[str, Any]
    • batched=False かつ with_indices=True の場合、function(example: Dict[str, Any], idx: int) -> Dict[str, Any]
    • batched=True かつ with_indices=False の場合、function(batch: Dict[str, List]) -> Dict[str, List]
    • function(batch: Dict[str, List], indices: List[int]) -> Dict[str, List] は、batched=True かつ with_indices=True の場合

    高度な用途では、関数はpyarrow.Tableを返すこともできます。 関数が非同期の場合、mapは関数を並列で実行します。 さらに、関数が何も返さない(None)場合、mapは関数を実行し、データセットを変更せずに返します。 関数が指定されない場合、恒等関数lambda x: xがデフォルトとして使用されます。

  • with_indices (bool、デフォルトはFalse) — functionにインデックスの例を提供します。この場合、functionのシグネチャはdef function(example, idx[, rank]): ...である必要があります。
  • input_columns (Optional[Union[str, List[str]]]、デフォルトは None) — function に位置引数として渡す列を指定します。None の場合、フォーマット済みのすべての列へのマッピングを含む dict が 1 つの引数として渡されます。
  • batched (bool、デフォルトはFalse) — functionにサンプルのバッチを提供します。
  • batch_size (int、任意、デフォルトは1000) — batched=Trueの場合、functionに渡すバッチあたりのサンプル数。 batch_size <= 0またはbatch_size == Noneの場合、functionにデータセット全体を単一のバッチとして渡します。
  • drop_last_batch (bool、デフォルトは False) — batch_size より小さい最後のバッチを、関数で処理する代わりに破棄するかどうか。
  • remove_columns ([List[str]]、任意、デフォルトはNone) — マッピング処理中に、選択した列を削除します。 列は、function の出力で例を更新する前に削除されます。つまり、function がremove_columns に含まれる名前の列を追加する場合、これらの列は保持されます。
  • features ([Features]、任意、デフォルトはNone) — 結果のデータセットの機能タイプ。
  • fn_kwargs (Dict、任意、デフォルト None) — function に渡すキーワード引数。

イテラブルなデータセット内のすべての例(個別またはバッチ単位で)に関数を適用して、それらを更新します。 関数がすでに存在するカラムを返す場合、そのカラムは上書きされます。 関数は、データセットをイテレーションする際に、例に対してオンザフライで適用されます。

batched パラメータで、関数をバッチ処理にするかどうかを指定できます:

  • Falseの場合、関数は1つの例を受け取り、1つの例を返す必要があります。 例は辞書であり、例えば{"text": "Hello there !"}です。
  • True かつ batch_size が 1 の場合、この関数は 1 つのサンプルのバッチを入力として受け取り、1 つ以上のサンプルを含むバッチを返すことができます。 バッチは辞書です。例えば、1 つのサンプルのバッチは {“text”: [“Hello there !”]} のようになります。
  • True かつ batch_size が n > 1 の場合、この関数は n 個のサンプルのバッチを入力として受け取り、n 個のサンプルを含むバッチ、または任意の数のサンプルを含むバッチを返すことができます。 最後のバッチは n 個未満のサンプルを含む場合があります。 バッチは辞書です。例えば、n 個のサンプルのバッチは {"text": ["Hello there !"] * n} のようになります。

関数が非同期の場合、mapは最大1,000回の同時呼び出しで、関数を並列に実行します。 同時に実行できる操作の最大数を設定したい場合は、関数内でasyncio.Semaphoreを使用することをお勧めします。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> def add_prefix(example):
...     example["text"] = "Review: " + example["text"]
...     return example
>>> ds = ds.map(add_prefix)
>>> list(ds.take(3))
[{'label': 1,
 'text': 'Review: the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'Review: the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'Review: effective but too-tepid biopic'}]

rename_column

< >

( original_column_name: strnew_column_name: str ) → IterableDataset

パラメータ

  • original_column_name (str) — リネームする列の名前。
  • new_column_name (str) — 列の新しい名前。

戻り値

IterableDataset

列名が変更されたデータセットのコピー。

データセット内のカラム名を変更し、元のカラムに関連付けられた特徴量を新しいカラム名の下に移動します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> next(iter(ds))
{'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}
>>> ds = ds.rename_column("text", "movie_review")
>>> next(iter(ds))
{'label': 1,
 'movie_review': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}

フィルタ

< >

( function: typing.Optional[typing.Callable] = Nonewith_indices = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = None )

パラメータ

  • function (Callable) — 次のいずれかのシグネチャを持つ Callable:
    • function(example: Dict[str, Any]) -> bool がwith_indices=False, batched=Falseの場合
    • function(example: Dict[str, Any], indices: int) -> bool は、with_indices=True, batched=False の場合
    • with_indices=False, batched=True の場合、function(example: Dict[str, List]) -> List[bool]
    • function(example: Dict[str, List], indices: List[int]) -> List[bool] がwith_indices=True, batched=Trueの場合

    関数が非同期の場合、filterは関数を並列で実行します。 関数が指定されていない場合、常にTrueを返す関数lambda x: Trueがデフォルトとして使用されます。

  • with_indices (bool、デフォルトはFalse) — functionにインデックスの例を提供します。この場合、functionのシグネチャはdef function(example, idx): ...である必要があります。
  • input_columns (str または List[str]、省略可) — function に位置引数として渡す列を指定します。None の場合、フォーマット済みのすべての列へのマッピングを含む dict が 1 つの引数として渡されます。
  • batched (bool、デフォルトはFalse) — functionにサンプルのバッチを提供します。
  • batch_size (int、任意、デフォルト 1000) — batched=True の場合、function に渡されるバッチあたりのサンプル数。
  • fn_kwargs (Dict、任意、デフォルト None) — function に渡すキーワード引数。

フィルタ関数をすべての要素に適用し、フィルタ関数に合致する例のみを含むようにデータセットを絞り込みます。 フィルタリングは、データセットを反復処理する際にオンザフライで実行されます。

関数が非同期の場合、filterは最大1000回の同時呼び出し(設定可能)まで、関数を並列で実行します。 同時に実行できる操作の最大数を設定したい場合は、関数内でasyncio.Semaphoreを使用することをお勧めします。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> ds = ds.filter(lambda x: x["label"] == 0)
>>> list(ds.take(3))
[{'label': 0, 'movie_review': 'simplistic , silly and tedious .'},
 {'label': 0,
 'movie_review': "it's so laddish and juvenile , only teenage boys could possibly find it funny ."},
 {'label': 0,
 'movie_review': 'exploitative and largely devoid of the depth or sophistication that would make watching such a graphic treatment of the crimes bearable .'}]

シャッフル

< >

( seed = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonebuffer_size: int = 1000max_buffer_input_shards: int = 10 )

パラメータ

  • seed (int、任意、デフォルトはNone) — データセットのシャッフルに使用されるランダムシードです。 シャッフルバッファからのサンプリングおよびデータシャードのシャッフルにも使用されます。
  • generator (numpy.random.Generator, 任意) — データセットの行の置換を計算するために使用する Numpy ランダム Generator。 generator=None(デフォルト)の場合、np.random.default_rng(NumPy のデフォルト BitGenerator (PCG64))を使用します。
  • buffer_size (int, デフォルトは 1000) — バッファのサイズです。
  • max_buffer_input_shards (int、デフォルトは10) — バッファに一度に供給するシャードの最大数。

このデータセットの要素をランダムにシャッフルします。

このデータセットは、buffer_size個の要素でバッファを埋め、その後、このバッファから要素をランダムにサンプリングし、選択された要素を新しい要素で置き換えます。完全なシャッフルを行うには、データセット全体のサイズ以上であるバッファサイズが必要です。

例えば、データセットに10,000個の要素が含まれているがbuffer_sizeが1000に設定されている場合、shuffleは最初にバッファ内の最初の1000個の要素からランダムに1つを選択します。要素が選択されると、そのバッファ内のスペースは次の(つまり1,001番目の)要素で置き換えられ、1000個の要素からなるバッファが維持されます。

データセットが複数のシャードで構成されている場合、バッファは一度に最大max_buffer_input_shards個のシャードを使用して埋められ、シャードの順序もシャッフルされます。これにより、シャッフルの品質が大幅に向上します。入力シャードは各ノードおよびワーカー内でインターリーブされ、並列データ読み込みのために利用可能なシャード数が維持されます。

ただし、skip() または take() を使用して順序が固定されている場合、シャードの順序は変更されず、バッファを埋めるために一度に1つのシャードのみが使用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> list(ds.take(3))
[{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
 'label': 1},
 {'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .',
 'label': 1},
 {'text': 'effective but too-tepid biopic', 'label': 1}]
>>> shuffled_ds = ds.shuffle(seed=42)
>>> list(shuffled_ds.take(3))
[{'text': "a sports movie with action that's exciting on the field and a story you care about off it .",
 'label': 1},
 {'text': 'at its best , the good girl is a refreshingly adult take on adultery . . .',
 'label': 1},
 {'text': "sam jones became a very lucky filmmaker the day wilco got dropped from their record label , proving that one man's ruin may be another's fortune .",
 'label': 1}]
>>> resharded_ds = ds.reshard()  # useful to shard Parquet datasets by row group instead of by file, improving shuffling quality on dataset with one or few files.
>>> shuffled_resharded_ds = resharded_ds.shuffle(seed=42)
>>> list(shuffled_resharded_ds.take(3))
[{'text': 'this mistaken-identity picture is so film-culture referential that the final product is a ghost .',
 'label': 0},
 {'text': 'woody allen used to ridicule movies like hollywood ending . now he makes them .',
 'label': 0},
 {'text': "not only is undercover brother as funny , if not more so , than both austin powers films , but it's also one of the smarter , savvier spoofs to come along in some time .",
 'label': 1}]

バッチ

< >

( batch_size: typing.Optional[int] = Noneby_column: typing.Union[str, list[str], NoneType] = Nonedrop_last_batch: bool = False )

パラメータ

  • batch_size (int, 任意) — 各バッチに含まれるサンプル数。
  • by_column (Union[str, list[str], (省略可能)— 例をバッチにまとめるために使用する列。 その列の値が同じ連続する例は、同じバッチにグループ化されます。 複数の列でバッチングしたい場合は、列のリストを指定することもできます。 列によるバッチングの場合、batch_size は、グループ化またはスライシングするバッチのサイズを制御するためにのみ使用されます。

    4.9.0で追加

  • drop_last_batch (bool、デフォルトはFalse) — 不完全な最後のバッチを破棄するかどうか。

データセットからサンプルをバッチにグループ化します。

例:

固定バッチサイズ:

>>> ds = load_dataset("some_dataset", streaming=True, split="train")
>>> batched_ds = ds.batch(batch_size=32)

「my_column」の値が同一である連続するサンプルのバッチ:

>>> ds = load_dataset("some_dataset", streaming=True, split="train")
>>> batched_ds = ds.batch(by_column="my_column")

スキップ

< >

( n: int )

パラメータ

  • n (int) — スキップする要素の数。

最初のn個の要素をスキップする新しいIterableDatasetを作成します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> list(ds.take(3))
[{'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'effective but too-tepid biopic'}]
>>> ds = ds.skip(1)
>>> list(ds.take(3))
[{'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'effective but too-tepid biopic'},
 {'label': 1,
 'text': 'if you sometimes like to go to the movies to have fun , wasabi is a good place to start .'}]

take

< >

( n: int )

パラメータ

  • n (int) — 取得する要素の数。

最初のn要素のみを含む新しいIterableDatasetを作成します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> small_ds = ds.take(2)
>>> list(small_ds)
[{'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'}]

シャード

< >

( num_shards: intindex: intcontiguous: bool = True )

パラメータ

  • num_shards (int) — データセットを分割するシャードの数。
  • index (int) — 選択して返すシャードを指定します。
  • contiguous — (bool、デフォルトはTrue): シャードのインデックスとして連続したブロックを選択するかどうか。

num_shards個に分割したデータセット分割から、index番目のシャードを返します。

これは決定論的にシャード化されます。dataset.shard(n, i) はデータセットを連続するチャンクに分割するため、処理後に簡単に元の順序で結合できます。dataset.num_shards % n == l の場合、最初の l 個のデータセットはそれぞれ (dataset.num_shards // n) + 1 個のシャードを持ち、残りのデータセットは (dataset.num_shards // n) 個のシャードを持ちます。datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)]) は、元のデータセットと同じ順序を持つデータセットを返します。特に、dataset.shard(dataset.num_shards, i) は 1 個のシャードを持つデータセットを返します。

注: dataset.num_shards であるデータセットのシャード数以下である必要があります。

On the other hand, dataset.shard(n, i, contiguous=False) contains all the shards of the dataset whose index mod n = i.

shuffle のようなランダム化演算子を使用する前に、必ずシャード化してください。 シャード化演算子は、データセットのパイプラインの早い段階で使用するのが望ましいです。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("fancyzhx/amazon_polarity", split="train", streaming=True)
>>> ds
IterableDataset({
    features: ['label', 'title', 'content'],
    num_shards: 4
})
>>> ds.shard(num_shards=2, index=0)
IterableDataset({
    features: ['label', 'title', 'content'],
    num_shards: 2
})

reshard

< >

( )

可能な場合は、データセットをリシャードします。つまり、現在のシャードをさらに多くのシャードに分割します。 これによりシャードの数が増加し、結果として得られるデータセットは num_shards >= previous_num_shards となります。 どのシャードもさらに分割できない場合、等号が成立する可能性があります。

リシャーディングの仕組みは、データセットのファイル形式によって異なります:

  • Parquet: ファイル単位ではなく、行グループ単位でシャード化
  • Vortex: ファイルごとではなく、連続するチャンクの範囲ごとにシャードを作成します(各シャードは約64MBのファイルデータに対応します)
  • その他: 未実装(コントリビューション大歓迎!)

shuffle のようなランダム化演算子を使用する前に、必ずreshard/shardを実行してください。 shard演算子は、データセットのパイプラインの早い段階で使用するのが望ましいです。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("fancyzhx/amazon_polarity", split="train", streaming=True)
>>> ds
IterableDataset({
    features: ['label', 'title', 'content'],
    num_shards: 4
})
>>> ds.reshard()
IterableDataset({
    features: ['label', 'title', 'content'],
    num_shards: 3600
})

repeat

< >

( num_times: typing.Optional[int] )

パラメータ

  • num_times (int) または (None) — データセットを繰り返す回数。None の場合、データセットは無限に繰り返されます。

num_times 回、元のデータセットを繰り返す新しい IterableDataset を作成します。

空のインプットは、num_timesがNoneの場合でも処理を終了します。

N.B. shuffleをrepeatの後に呼び出すことの影響は、バッファサイズに大きく依存します。 buffer_sizeが1の場合、シャッフル後も同じイテレーション内で重複したデータを見ることはありません: ds.repeat(n).shuffle(seed=42, buffer_size=1)はds.shuffle(seed=42, buffer_size=1).repeat(n)と同等であり、各イテレーション内のシャードの順序のみをシャッフルします。 バッファサイズが>= (データセット内のサンプル数 * num_times)の場合、繰り返しされたデータの完全なシャッフルが得られ、つまり同じイテレーション内で重複を観察できます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> ds = ds.take(2).repeat(2)
>>> list(ds)
[{'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'effective but too-tepid biopic'},
 {'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'effective but too-tepid biopic'}]

to_csv

< >

( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_csv_kwargs ) → int

パラメータ

  • path_or_buf (PathLike または FileOrBuffer) — ファイルへのパス(例: file.csv)、リモート URI(例: hf://datasets/username/my_dataset_name/data.csv)、または、指定された形式でデータセットが保存される BinaryIO です。
  • batch_size (int, 任意) — メモリに読み込み、一度に書き込むバッチのサイズです。 デフォルトは datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • storage_options (dict, 任意) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。
  • **to_csv_kwargs (追加のキーワード引数) — pandas の pandas.DataFrame.to_csv に渡すパラメータ。 パラメータ index は、指定されていない場合、デフォルトで False になります。 インデックスを書き出したい場合は、index=True を渡し、かつ index_label を渡してインデックス列の名前を設定してください。

戻り値

int

書き込まれた文字数またはバイト数。

csvにデータセットをエクスポートします。

これは、データセットを反復処理し、書き込む前に完全にメモリに読み込む処理です。

例:

>>> ds.to_csv("path/to/dataset/directory")

to_pandas

< >

( batch_size: typing.Optional[int] = Nonebatched: bool = False )

パラメータ

  • batch_size (int, 省略可) — batched が True の場合のバッチサイズ(行数)です。 デフォルト値は datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • batched (bool) — True に設定すると、batch_size 行のバッチとしてデータセットを生成するジェネレーターを返します。デフォルトは False(一度にデータセット全体を返します)。

pandas.DataFrame としてデータセットを返します。大規模なデータセットの場合は、ジェネレーターを返すこともできます。

例:

>>> ds.to_pandas()

to_dict

< >

( batch_size: typing.Optional[int] = Nonebatched: bool = False )

パラメータ

  • batch_size (int, 省略可) — batched が True の場合のバッチサイズ(行数)です。 デフォルト値は datasets.config.DEFAULT_MAX_BATCH_SIZE です。

Pythonのdictとしてデータセットを返します。大規模なデータセットの場合は、ジェネレーターを返すこともできます。

例:

>>> ds.to_dict()

to_json

< >

( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**to_json_kwargs ) → int

パラメータ

  • path_or_buf (PathLike または FileOrBuffer) — ファイルへのパス(例: file.json)、リモート URI(例: hf://datasets/username/my_dataset_name/data.json)、または、指定された形式でデータセットが保存される BinaryIO です。
  • batch_size (int, 任意) — メモリに読み込み、一度に書き込むバッチのサイズです。 デフォルトは datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • storage_options (dict, 任意) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。
  • **to_json_kwargs (additional keyword arguments) — Parameters to pass to pandas’s pandas.DataFrame.to_json. Default arguments are lines=True and orient="records". The parameter indexdefaults toFalseiforientis“split”or“table”. If you would like to write the index, pass index=True`.

戻り値

int

書き込まれた文字数またはバイト数。

JSON LinesまたはJSONにデータセットをエクスポートします。

これは、データセットを反復処理し、書き込む前に完全にメモリに読み込む処理です。

デフォルトの出力形式はJSON Linesです。 JSONにエクスポートするには、lines=False引数と希望するorientを渡します。

例:

>>> ds.to_json("path/to/dataset/directory/filename.jsonl")
>>> num_shards = dataset.num_shards
>>> for index in range(num_shards):
...     shard = dataset.shard(index, num_shards)
...     shard.to_json(f"path/of/my/dataset/data-{index:05d}.jsonl")

to_parquet

< >

( path_or_buf: typing.Union[str, bytes, os.PathLike, typing.BinaryIO]batch_size: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**parquet_writer_kwargs ) → int

パラメータ

  • path_or_buf (PathLike または FileOrBuffer) — ファイルへのパス(例: file.parquet)、リモート URI(例: hf://datasets/username/my_dataset_name/data.parquet)、または、指定された形式でデータセットが保存される BinaryIO。
  • batch_size (int, 任意) — メモリに読み込み、一度に書き込むバッチのサイズです。 デフォルトは datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • storage_options (dict, 省略可) — ファイルシステムバックエンドに渡すキー/値のペア(該当する場合)。

    2.19.0で追加

  • **parquet_writer_kwargs (追加のキーワード引数) — PyArrowのpyarrow.parquet.ParquetWriterに渡すパラメータ。

戻り値

int

書き込まれた文字数またはバイト数。

データセットをparquetにエクスポートします

例:

>>> ds.to_parquet("path/to/dataset/directory")
>>> num_shards = dataset.num_shards
>>> for index in range(num_shards):
...     shard = dataset.shard(index, num_shards)
...     shard.to_parquet(f"path/of/my/dataset/data-{index:05d}.parquet")

to_sql

< >

( name: strcon: typing.Union[str, ForwardRef('sqlalchemy.engine.Connection'), ForwardRef('sqlalchemy.engine.Engine'), ForwardRef('sqlite3.Connection')]batch_size: typing.Optional[int] = None**sql_writer_kwargs ) → int

パラメータ

  • name (str) — SQLテーブルの名前。
  • con (str または sqlite3.Connection または sqlalchemy.engine.Connection または sqlalchemy.engine.Connection) — データベースに書き込むために使用するURI文字列、またはSQLite3/SQLAlchemyの接続オブジェクト。
  • batch_size (int, 任意) — メモリに読み込み、一度に書き込むバッチのサイズです。 デフォルトは datasets.config.DEFAULT_MAX_BATCH_SIZE です。
  • **sql_writer_kwargs (追加のキーワード引数) — pandas の pandas.DataFrame.to_sql に渡すパラメータ。 パラメータ index は、指定がない場合、デフォルトで False になります。 インデックスを書き込みたい場合は、index=True を渡し、index_label を渡してインデックス列の名前も設定してください。

戻り値

int

書き込まれたレコードの数。

データセットをSQLデータベースにエクスポートします。

例:

>>> # con provided as a connection URI string
>>> ds.to_sql("data", "sqlite:///my_own_db.sql")
>>> # con provided as a sqlite3 connection object
>>> import sqlite3
>>> con = sqlite3.connect("my_own_db.sql")
>>> with con:
...     ds.to_sql("data", con)

push_to_hub

< >

( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonesplit: typing.Optional[str] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[int] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )

パラメータ

  • repo_id (str) — プッシュ先リポジトリの ID。以下の形式で指定します: <user>/<dataset_name> または <org>/<dataset_name>. また、 <dataset_name>, も受け付けます。この場合、ログイン中のユーザーのネームスペースがデフォルトとして使用されます。

    バケット内の場所である場合もあります。例: buckets/<user_or_org>/<bucket_name>/...

  • config_name (str、デフォルトは “default”) — データセットの設定名(またはサブセット)です。デフォルトは “default” です。
  • set_default (bool, 省略可) — この設定をデフォルトとして設定するかどうか。設定しない場合、デフォルト設定は “default” という名前のものになります。
  • split (str, 任意) — そのデータセットに割り当てられるスプリットの名前です。デフォルトはself.splitです。
  • data_dir (str, 任意) — アップロードするデータファイルを含むディレクトリ名。“default”と異なる場合はconfig_nameが、それ以外の場合は“data”がデフォルト値です。
  • commit_message (str, 任意) — プッシュ時にコミットするメッセージ。デフォルトは"Upload dataset"です。
  • commit_description (str, 省略可) — 作成されるコミットの説明です。 PR が作成される場合(create_pr が True の場合)には、PR の説明も含まれます。
  • private (bool、省略可) — リポジトリを非公開にするかどうか。None(デフォルト)の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。
  • token (str, 任意) — Hugging Face Hub 用の任意の認証トークンです。トークンが渡されない場合、hf auth login でログインした際にローカルに保存されたトークンがデフォルトとして使用されます。トークンが渡されず、かつユーザーがログインしていない場合は、エラーが発生します。
  • revision (str, 任意) — アップロードしたファイルをプッシュするブランチです。デフォルトでは"main"ブランチになります。
  • create_pr (bool、省略可、デフォルトはFalse) — アップロードしたファイルを含むPRを作成するか、直接コミットするかを指定します。
  • max_shard_size (int または str、省略可) — ハブにアップロードするデータセットのシャードの最大サイズをオプションで指定します。文字列で指定する場合は、数字の後に単位("5MB" など)を付ける必要があります。指定しない場合、シャード数はこのデータセットの .num_shards がデフォルトとして使用されます。
  • num_shards (int, 省略可) — 書き出すシャードの数です。max_shard_size が指定され、num_shards が指定されていない場合、シャード数はmax_shard_sizeから推定されます。このデータセットの.num_shardsよりも大きい値を指定できます。その場合、各入力シャードのサンプルをラウンドロビン方式で複数の出力シャードに書き込むことで、入力シャードが複数の出力シャードに分散されます。
  • embed_external_files (bool, デフォルトは True) — シャードにファイルのバイト列を埋め込むかどうか。具体的には、プッシュ前に以下の型のフィールドに対して次の処理を行います。
    • AudioおよびImage: ローカルパス情報を削除し、ファイルの内容をParquetファイルに埋め込みます。
  • num_proc (int、任意、デフォルトはNone) — データセットの準備とアップロード時のプロセス数です。 データセットが多数のサンプルや変換で構成されている場合に役立ちます。 HF への高速アップロード用の Rust クライアントである hf_xet と連携するために、“spawn” コンテキストを使用します。 マルチプロセッシングはデフォルトで無効です。

Parquet データセットとしてハブにプッシュします。 データセットは HTTP リクエストを使用してプッシュされるため、git または git-lfs のインストールは不要です。

生成される Parquet ファイルは、デフォルトで自己完結型です。データセットに Image、Audio または Video データが含まれている場合、Parquet ファイルには画像や音声ファイルのバイトが保存されます。 embed_external_files を False に設定することで、これを無効にできます。

例:

>>> dataset.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset.push_to_hub("<organization>/<dataset_id>", num_shards=1024)

データセットに複数のスプリット(例:train/validation/test)がある場合:

>>> train_dataset.push_to_hub("<organization>/<dataset_id>", split="train")
>>> val_dataset.push_to_hub("<organization>/<dataset_id>", split="validation")
>>> # later
>>> dataset = load_dataset("<organization>/<dataset_id>")
>>> train_dataset = dataset["train"]
>>> val_dataset = dataset["validation"]

データセットに新しい設定(またはサブセット)を追加したい場合(データセットに複数のタスク/バージョン/言語がある場合など):

>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")

load_state_dict

< >

( state_dict: dict )

Load the state_dict of the dataset. The iteration will restart at the next example from when the state was saved.

再開すると、チェックポイントが保存された時点から正確に再開されますが、以下の2つの場合を除きます。

  1. shuffle buffersからのexamplesは、再開時に失われ、バッファは新しいデータで再充填されます
  2. .with_format(arrow)とバッチ化された.map()の組み合わせでは、1つのバッチがスキップされる可能性があります。

例:

>>> from datasets import Dataset, concatenate_datasets
>>> ds = Dataset.from_dict({"a": range(6)}).to_iterable_dataset(num_shards=3)
>>> for idx, example in enumerate(ds):
...     print(example)
...     if idx == 2:
...         state_dict = ds.state_dict()
...         print("checkpoint")
...         break
>>> ds.load_state_dict(state_dict)
>>> print(f"restart from checkpoint")
>>> for example in ds:
...     print(example)

以下を返します:

{'a': 0}
{'a': 1}
{'a': 2}
checkpoint
restart from checkpoint
{'a': 3}
{'a': 4}
{'a': 5}
>>> from torchdata.stateful_dataloader import StatefulDataLoader
>>> ds = load_dataset("deepmind/code_contests", streaming=True, split="train")
>>> dataloader = StatefulDataLoader(ds, batch_size=32, num_workers=4)
>>> # checkpoint
>>> state_dict = dataloader.state_dict()  # uses ds.state_dict() under the hood
>>> # resume from checkpoint
>>> dataloader.load_state_dict(state_dict)  # uses ds.load_state_dict() under the hood

state_dict

< >

( ) → dict

戻り値

dict

データセットの現在の state_dict を取得します。 これは、最後に生成されたエピソードの状態に対応しています。

再開すると、チェックポイントが保存された時点から正確に再開されますが、以下の2つの場合を除きます。

  1. shuffle buffersからのexamplesは、再開時に失われ、バッファは新しいデータで再充填されます
  2. .with_format(arrow)とバッチ化された.map()の組み合わせでは、1つのバッチがスキップされる可能性があります。

例:

>>> from datasets import Dataset, concatenate_datasets
>>> ds = Dataset.from_dict({"a": range(6)}).to_iterable_dataset(num_shards=3)
>>> for idx, example in enumerate(ds):
...     print(example)
...     if idx == 2:
...         state_dict = ds.state_dict()
...         print("checkpoint")
...         break
>>> ds.load_state_dict(state_dict)
>>> print(f"restart from checkpoint")
>>> for example in ds:
...     print(example)

以下を返します:

{'a': 0}
{'a': 1}
{'a': 2}
checkpoint
restart from checkpoint
{'a': 3}
{'a': 4}
{'a': 5}
>>> from torchdata.stateful_dataloader import StatefulDataLoader
>>> ds = load_dataset("deepmind/code_contests", streaming=True, split="train")
>>> dataloader = StatefulDataLoader(ds, batch_size=32, num_workers=4)
>>> # checkpoint
>>> state_dict = dataloader.state_dict()  # uses ds.state_dict() under the hood
>>> # resume from checkpoint
>>> dataloader.load_state_dict(state_dict)  # uses ds.load_state_dict() under the hood

情報

< >

( )

データセット内のすべてのメタデータを含むDatasetInfoオブジェクト。

分割

< >

( )

名前付きデータセット分割に対応するNamedSplitオブジェクト。

builder_name

< >

( )

引用

< >

( )

config_name

< >

( )

dataset_size

< >

( )

説明

< >

( )

download_checksums

< >

( )

download_size

< >

( )

機能

< >

( )

ホームページ

< >

( )

ライセンス

< >

( )

size_in_bytes

< >

( )

supervised_keys

< >

( )

バージョン

< >

( )

from_csv

< >

( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = False**kwargs )

パラメータ

  • path_or_paths (path-like または path-like のリスト) — CSV ファイルのパス。
  • split (NamedSplit、任意) — データセットに割り当てられる分割名。
  • features (Features、任意) — データセットの機能です。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • **kwargs (追加のキーワード引数) — pandas.read_csvに渡すキーワード引数。

CSVファイルからIterableDatasetを作成します。

例:

>>> ds = IterableDataset.from_csv('path/to/dataset.csv')

from_json

< >

( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = Falsefield: typing.Optional[str] = None**kwargs )

パラメータ

  • path_or_paths (path-like または path-like のリスト) — JSON ファイルまたは JSON Lines ファイルのパスです。
  • split (NamedSplit、任意) — データセットに割り当てられる分割名。
  • features (Features、任意) — データセットの機能です。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • field (str, 省略可) — データセットが含まれる JSON ファイルのフィールド名。
  • **kwargs (追加のキーワード引数) — JsonConfigに渡すキーワード引数。

JSONまたはJSON LinesファイルからIterableDatasetを作成します。

例:

>>> ds = IterableDataset.from_json('path/to/dataset.json')

from_parquet

< >

( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = Falsecolumns: typing.Optional[list[str]] = Nonefilters: typing.Union[pyarrow._compute.Expression, list[tuple], list[list[tuple]], NoneType] = Nonefragment_scan_options: typing.Optional[pyarrow._dataset_parquet.ParquetFragmentScanOptions] = Noneon_bad_files: typing.Literal['error', 'warn', 'skip'] = 'error'**kwargs )

パラメータ

  • path_or_paths (path-like または path-like のリスト) — Parquet ファイルのパス。
  • split (NamedSplit, 任意) — データセットに割り当てられる分割名。
  • features (Features、任意) — データセットの機能です。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • columns (List[str]、任意) — None 以外の場合、ファイルから読み込まれるのはこれらのカラムのみです。 カラム名はネストされたフィールドのプレフィックスとして指定でき、例えば ‘a’ を指定すると ‘a.b’、‘a.c’、‘a.d.e’ が選択されます。
  • filters (Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]], 省略可能) — フィルタに一致する行のみを返します。 可能であれば、データソース内で見つかるパーティション情報や内部メタデータ(例: Parquet の統計情報)を活用するために、述語がプッシュダウンされます。 それ以外の場合は、RecordBatches をロードしてから、それらを yield する前にフィルタリングを行います。
  • fragment_scan_options (pyarrow.dataset.ParquetFragmentScanOptions, 省略可) — Parquet フラグメントのスキャンに特化したオプション。 バッファリングやキャッシュの設定に特に役立ちます。

    4.2.0で追加

  • on_bad_files (Literal["error", "warn", "skip"], 省略可能, デフォルトは “error”)— 不正なファイル(読み取れないファイル)を検出した場合の動作を指定します。許可される値は次のとおりです:
    • ‘error’、不正なファイルに遭遇した際に例外を発生させます。
    • ‘warn’、不良なファイルを検出したら警告を出力し、そのファイルをスキップします。
    • ‘skip’、不良ファイルを検出しても例外を発生させたり警告を出したりせずにスキップします。

    4.2.0で追加

  • **kwargs (追加のキーワード引数) — ParquetConfigに渡すキーワード引数。

ParquetファイルからIterableDatasetを作成します。

例:

>>> ds = IterableDataset.from_parquet('path/to/dataset.parquet')

カラムのサブセットを読み込む:

>>> ds = IterableDataset.from_parquet('path/to/dataset.parquet', columns=["col_0", "col_1"])

データを効率的にフィルタリングし、場合によってはファイル全体や行グループ全体をスキップできます:

>>> filters = [("col_0", "==", 0)]
>>> ds = IterableDataset.from_parquet(parquet_files_list, filters=filters)

from_text

< >

( path_or_paths: typing.Union[str, bytes, os.PathLike, list[typing.Union[str, bytes, os.PathLike]]]split: typing.Optional[datasets.splits.NamedSplit] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonekeep_in_memory: bool = Falsekeep_linebreaks: bool = Falsesample_by: typing.Literal['line', 'paragraph', 'document'] = 'line'**kwargs )

パラメータ

  • path_or_paths (path-like または path-like のリスト) — テキストファイルのパス。
  • split (NamedSplit, 任意) — データセットに割り当てられる分割名。
  • features (Features、任意) — データセットの機能です。
  • keep_in_memory (bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。
  • keep_linebreaks — (bool、デフォルトは False): 改行を保持するかどうか。
  • sample_by (Literal["line", "paragraph", "document"]、デフォルトは “line”) — データを行、段落、または文書単位で読み込むかどうかを指定します。 デフォルトでは、データセットの1行 = 1行です。
  • **kwargs (追加のキーワード引数) — TextConfigに渡すキーワード引数。

テキストファイルからIterableDatasetを作成します。

例:

>>> ds = IterableDataset.from_text('path/to/dataset.txt')

class datasets.IterableColumn

< >

( source: typing.Union[ForwardRef('IterableDataset'), ForwardRef('IterableColumn')]column_name: str )

IterableDatasetの特定の列に対するイテラブルです。

例:

datasetの“text”列のテキストを反復処理します:

for text in dataset["text"]:
    ...

ネストされたカラムでも動作します:

for source in dataset["metadata"]["source"]:
    ...

IterableDatasetDict

キーに分割名(例: ‘train’、‘test’)、値にIterableDatasetオブジェクトを持つ辞書。

クラス datasets.IterableDatasetDict

< >

( )

map

< >

( function: typing.Optional[typing.Callable] = Nonewith_indices: bool = Falsewith_split: bool = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: int = 1000drop_last_batch: bool = Falseremove_columns: typing.Union[str, list[str], NoneType] = Nonefn_kwargs: typing.Optional[dict] = None )

パラメータ

  • function (Callable, 省略可, デフォルトは None) — データセットを反復処理する際に、サンプルに対してオンザフライで適用される関数。 次のいずれかのシグネチャを持つ必要があります:
    • batched=False かつ with_indices=False の場合、function(example: Dict[str, Any]) -> Dict[str, Any]
    • batched=False かつ with_indices=True の場合、function(example: Dict[str, Any], idx: int) -> Dict[str, Any]
    • batched=True かつ with_indices=False の場合、function(batch: Dict[str, list]) -> Dict[str, list]
    • function(batch: Dict[str, list], indices: list[int]) -> Dict[str, list] は、batched=True かつ with_indices=True の場合

    高度な用途では、関数はpyarrow.Tableを返すこともできます。 関数が非同期の場合、mapは関数を並列で実行します。 さらに、関数が何も返さない(None)場合、mapは関数を実行し、データセットを変更せずに返します。 関数が指定されない場合、恒等関数lambda x: xがデフォルトとして使用されます。

  • with_indices (bool、デフォルトはFalse) — functionにインデックスの例を提供します。この場合、functionのシグネチャはdef function(example, idx[, rank]): ...である必要があります。
  • input_columns ([Union[str, list[str]]]、任意、デフォルトはNone) — functionに位置引数として渡す列です。Noneの場合、フォーマット済みのすべての列へのマッピングを含む辞書が1つの引数として渡されます。
  • batched (bool、デフォルトはFalse) — functionにサンプルのバッチを提供します。
  • batch_size (int、任意、デフォルトは1000) — batched=Trueの場合、functionに渡されるバッチあたりのサンプル数。
  • drop_last_batch (bool、デフォルトは False) — batch_size より小さい最後のバッチを、関数で処理する代わりに破棄するかどうか。
  • remove_columns ([list[str]]、任意、デフォルトはNone) — マッピング処理中に、選択した列を削除します。 列は、function の出力で例を更新する前に削除されます。つまり、function がremove_columns に含まれる名前の列を追加する場合、これらの列は保持されます。
  • fn_kwargs (Dict、任意、デフォルトはNone) — functionに渡すキーワード引数

イテラブルなデータセット内のすべての例(個別またはバッチ単位で)に関数を適用して、それらを更新します。 関数がすでに存在するカラムを返す場合、そのカラムは上書きされます。 関数は、データセットをイテレーションする際に、例に対してオンザフライで適用されます。 変換は、データセット辞書内のすべてのデータセットに適用されます。

batched パラメータで、関数をバッチ処理にするかどうかを指定できます:

  • Falseの場合、関数は1つの例を受け取り、1つの例を返す必要があります。 例は辞書であり、例えば{"text": "Hello there !"}です。
  • True かつ batch_size が 1 の場合、この関数は 1 つのサンプルのバッチを入力として受け取り、1 つ以上のサンプルを含むバッチを返すことができます。 バッチは辞書であり、例えば 1 つのサンプルのバッチは {"text": ["Hello there !"]} のようになります。
  • True かつ batch_size が n > 1 の場合、この関数は n 個のサンプルのバッチを入力として受け取り、n 個のサンプルを含むバッチ、または任意の数のサンプルを含むバッチを返すことができます。 最後のバッチは n 個未満のサンプルを含む場合があります。 バッチは辞書です。例えば、n 個のサンプルのバッチは {"text": ["Hello there !"] * n} のようになります。

関数が非同期の場合、mapは最大1,000回の同時呼び出しで、関数を並列に実行します。 同時に実行できる操作の最大数を設定したい場合は、関数内でasyncio.Semaphoreを使用することをお勧めします。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> def add_prefix(example):
...     example["text"] = "Review: " + example["text"]
...     return example
>>> ds = ds.map(add_prefix)
>>> next(iter(ds["train"]))
{'label': 1,
 'text': 'Review: the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}

フィルタ

< >

( function: typing.Optional[typing.Callable] = Nonewith_indices = Falseinput_columns: typing.Union[str, list[str], NoneType] = Nonebatched: bool = Falsebatch_size: typing.Optional[int] = 1000fn_kwargs: typing.Optional[dict] = None )

パラメータ

  • function (Callable) — 次のいずれかのシグネチャを持つ Callable:
    • function(example: Dict[str, Any]) -> bool がwith_indices=False, batched=Falseの場合
    • function(example: Dict[str, Any], indices: int) -> bool は、with_indices=True, batched=False の場合
    • with_indices=False, batched=True の場合、function(example: Dict[str, list]) -> list[bool]
    • function(example: Dict[str, list], indices: list[int]) -> list[bool] がwith_indices=True, batched=Trueの場合

    関数が指定されていない場合、常に True を返す関数 lambda x: True がデフォルトとして使用されます。

  • with_indices (bool、デフォルトはFalse) — functionにインデックスの例を提供します。この場合、functionのシグネチャはdef function(example, idx): ...である必要があります。
  • input_columns (str または list[str]、省略可) — function に位置引数として渡す列を指定します。None の場合、フォーマット済みのすべての列へのマッピングを含む dict が 1 つの引数として渡されます。
  • batched (bool、デフォルトはFalse) — functionにサンプルのバッチを提供します
  • batch_size (int、任意、デフォルトは1000) — batched=Trueの場合、functionに渡されるバッチあたりのサンプル数。
  • fn_kwargs (Dict、任意、デフォルトはNone) — functionに渡すキーワード引数

…のすべての要素にフィルタ関数を適用し、フィルタ関数に合致するサンプルのみを含むようにデータセットを絞り込みます。 フィルタリングは、データセットを反復処理する際にオンザフライで実行されます。 フィルタリングは、データセット辞書のすべてのデータセットに適用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.filter(lambda x: x["label"] == 0)
>>> list(ds["train"].take(3))
[{'label': 0, 'text': 'Review: simplistic , silly and tedious .'},
 {'label': 0,
 'text': "Review: it's so laddish and juvenile , only teenage boys could possibly find it funny ."},
 {'label': 0,
 'text': 'Review: exploitative and largely devoid of the depth or sophistication that would make watching such a graphic treatment of the crimes bearable .'}]

シャッフル

< >

( seed = Nonegenerator: typing.Optional[numpy.random._generator.Generator] = Nonebuffer_size: int = 1000max_buffer_input_shards: int = 10 )

パラメータ

  • seed (int、任意、デフォルトはNone) — データセットのシャッフルに使用されるランダムシードです。 シャッフルバッファからのサンプリングおよびデータシャードのシャッフルにも使用されます。
  • generator (numpy.random.Generator, 任意) — データセットの行の置換を計算するために使用する Numpy ランダム Generator。 generator=None(デフォルト)の場合、np.random.default_rng(NumPy のデフォルト BitGenerator (PCG64))を使用します。
  • buffer_size (int, デフォルトは 1000) — バッファのサイズです。
  • max_buffer_input_shards (int、デフォルトは10) — バッファに一度に供給するシャードの最大数。

このデータセットの要素をランダムにシャッフルします。 シャッフルは、データセット辞書のすべてのデータセットに適用されます。

このデータセットは、バッファに個の要素を格納し、その後、このバッファから要素をランダムにサンプリングします。選択された要素は新しい要素で置き換えられます。完全なシャッフルを行うには、データセット全体のサイズ以上であるバッファサイズが必要です。

例えば、データセットに10,000個の要素が含まれているがbuffer_sizeが1000に設定されている場合、shuffleは最初にバッファ内の最初の1000個の要素からランダムに1つを選択します。要素が選択されると、そのバッファ内のスペースは次の(つまり1,001番目の)要素で置き換えられ、1000個の要素からなるバッファが維持されます。

データセットが複数のシャードで構成されている場合、シャードの順序もshuffleされます。 ただし、skip()またはtake()を使用して順序が固定されている場合は、シャードの順序は変更されません。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> list(ds["train"].take(3))
[{'label': 1,
 'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'},
 {'label': 1,
 'text': 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'},
 {'label': 1, 'text': 'effective but too-tepid biopic'}]
>>> ds = ds.shuffle(seed=42)
>>> list(ds["train"].take(3))
[{'label': 1,
 'text': "a sports movie with action that's exciting on the field and a story you care about off it ."},
 {'label': 1,
 'text': 'at its best , the good girl is a refreshingly adult take on adultery . . .'},
 {'label': 1,
 'text': "sam jones became a very lucky filmmaker the day wilco got dropped from their record label , proving that one man's ruin may be another's fortune ."}]

with_format

< >

( type: typing.Optional[str] = None )

パラメータ

  • type (str, 省略可能) — [None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'] から選択した出力タイプ。 None は Python オブジェクトを返すことを意味します(デフォルト)。

指定された形式のデータセットを返します。

例:

>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation", streaming=True)
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
>>> ds = ds.map(lambda x: tokenizer(x['text'], truncation=True, padding=True), batched=True)
>>> ds = ds.with_format("torch")
>>> next(iter(ds))
{'text': 'compassionately explores the seemingly irreconcilable situation between conservative christian parents and their estranged gay and lesbian children .',
 'label': tensor(1),
 'input_ids': tensor([  101, 18027, 16310, 16001,  1103,  9321,   178, 11604,  7235,  6617,
        1742,  2165,  2820,  1206,  6588, 22572, 12937,  1811,  2153,  1105,
        1147, 12890, 19587,  6463,  1105, 15026,  1482,   119,   102,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
            0,     0,     0,     0]),
 'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
 'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])}

キャスト

< >

( features: Features ) → IterableDatasetDict

パラメータ

  • features (Features) — データセットをキャストする新しい特徴量です。 特徴量のフィールド名は、現在の列名と一致する必要があります。 また、データ型も、ある型から別の型へ変換可能である必要があります。 string <-> ClassLabel のような非自明な変換を行う場合は、map を使用して Dataset を更新してください。

キャストされた特徴量を持つデータセットのコピー。

データセットを新しい特徴量のセットにキャストします。 型キャストは、データセット辞書のすべてのデータセットに適用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
 'text': Value('string')}
>>> new_features = ds["train"].features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
 'text': Value('large_string')}

cast_column

< >

( column: strfeature: typing.Union[dict, list, tuple, datasets.features.features.Value, datasets.features.features.ClassLabel, datasets.features.translation.Translation, datasets.features.translation.TranslationVariableLanguages, datasets.features.features.LargeList, datasets.features.features.List, datasets.features.features.Array2D, datasets.features.features.Array3D, datasets.features.features.Array4D, datasets.features.features.Array5D, datasets.features.audio.Audio, datasets.features.image.Image, datasets.features.mesh.Mesh, datasets.features.video.Video, datasets.features.pdf.Pdf, datasets.features.nifti.Nifti, datasets.features.bio_sequence.BioSequence, datasets.features.bio_structure.BioStructure] )

パラメータ

  • column (str) — 列名。
  • feature (Feature) — ターゲットとなる特徴量です。

カラムをデコード用のフィーチャーにキャストします。 型キャストは、データセット辞書のすべてのデータセットに適用されます。

例:

>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
 'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
 'text': Value('string')}

remove_columns

< >

( column_names: typing.Union[str, list[str]] ) → IterableDatasetDict

パラメータ

  • column_names (Union[str, list[str]]) — 削除するカラムの名前。

削除するカラムを含まない、データセットオブジェクトのコピー。

…データセットから1つ以上のカラムを削除し、それに関連するフィーチャーも削除します。 削除は、データセットを反復処理する際に、各サンプルに対してオンザフライで実行されます。 削除は、データセット辞書のすべてのデータセットに適用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.remove_columns("label")
>>> next(iter(ds["train"]))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}

rename_column

< >

( original_column_name: strnew_column_name: str ) → IterableDatasetDict

パラメータ

  • original_column_name (str) — リネームする列の名前。
  • new_column_name (str) — 列の新しい名前。

列名が変更されたデータセットのコピー。

…の列名を変更し、元の列に関連付けられた特徴量を新しい列名の下に移動します。 このリネームは、…辞書のすべての…に適用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.rename_column("text", "movie_review")
>>> next(iter(ds["train"]))
{'label': 1,
 'movie_review': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}

rename_columns

< >

( column_mapping: dict ) → IterableDatasetDict

パラメータ

  • column_mapping (Dict[str, str]) — 列を新しい名前に変更するためのマッピングです。

列名が変更されたデータセットのコピー

…データセット内の複数の列の名前を変更し、元の列に関連する特徴量を新しい列名の下に移動します。 この名前の変更は、データセット辞書のすべてのデータセットに適用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.rename_columns({"text": "movie_review", "label": "rating"})
>>> next(iter(ds["train"]))
{'movie_review': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
 'rating': 1}

select_columns

< >

( column_names: typing.Union[str, list[str]] ) → IterableDatasetDict

パラメータ

  • column_names (Union[str, list[str]]) — 保持するカラムの名前。

選択した列のみを含む、データセットオブジェクトのコピー。

データセット内の1つ以上のカラムと、それに関連する特徴量を選択します。この選択は、データセットを反復処理する際に、各サンプルに対してオンザフライで実行されます。選択は、データセット辞書内のすべてのデータセットに適用されます。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds = ds.select("text")
>>> next(iter(ds["train"]))
{'text': 'the rock is destined to be the 21st century's new " conan " and that he's going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}

push_to_hub

< >

( repo_id: strconfig_name: str = 'default'set_default: typing.Optional[bool] = Nonedata_dir: typing.Optional[str] = Nonecommit_message: typing.Optional[str] = Nonecommit_description: typing.Optional[str] = Noneprivate: typing.Optional[bool] = Nonetoken: typing.Optional[str] = Nonerevision: typing.Optional[str] = Nonecreate_pr: typing.Optional[bool] = Falsemax_shard_size: typing.Union[str, int, NoneType] = Nonenum_shards: typing.Optional[dict[str, int]] = Noneembed_external_files: bool = Truenum_proc: typing.Optional[int] = None )

パラメータ

  • repo_id (str) — プッシュ先リポジトリの ID。以下の形式で指定します: <user>/<dataset_name> または <org>/<dataset_name>. また、 <dataset_name>, も受け付けます。この場合、ログイン中のユーザーのネームスペースがデフォルトとして使用されます。

    バケット内の場所である場合もあります。例: buckets/<user_or_org>/<bucket_name>/...

  • config_name (str) — データセットの設定名。デフォルト値は “default” です。
  • set_default (bool, 省略可) — この設定をデフォルトとして設定するかどうか。設定しない場合、デフォルト設定は “default” という名前のものになります。
  • data_dir (str, 省略可) — アップロードするデータファイルを含むディレクトリ名。 config_name が “default” と異なる場合はその値、そうでない場合は “data” がデフォルトです。

    2.17.0で追加

  • commit_message (str, 任意) — プッシュ時にコミットするメッセージ。デフォルトは"Upload dataset"です。
  • commit_description (str, 省略可) — 作成されるコミットの説明。PR が作成される場合(create_pr が True の場合)は、PR の説明にもなります。

    2.16.0で追加

  • private (bool、省略可) — リポジトリを非公開にするかどうか。None(デフォルト)の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。
  • token (str, 任意) — Hugging Face Hub 用の任意の認証トークンです。トークンが渡されない場合、hf auth login でログインした際にローカルに保存されたトークンがデフォルトとして使用されます。トークンが渡されず、かつユーザーがログインしていない場合は、エラーが発生します。
  • revision (str, 任意) — アップロードしたファイルをプッシュするブランチです。デフォルトでは"main"ブランチになります。
  • create_pr (bool、省略可、デフォルトはFalse) — アップロードしたファイルを含むPRを作成するか、直接コミットするかを指定します。
  • max_shard_size (int または str、任意) — ハブにアップロードするデータセットのシャードの最大サイズをオプションで指定します。文字列で指定する場合は、数字の後に単位("500MB" や "1GB" など)を続ける必要があります。指定しない場合、各スプリットはデータセット本来のシャード数を維持します。
  • num_shards (Dict[str, int], 省略可) — 書き出すシャードの数。辞書を使用して、各スプリットごとに異なるnum_shardsを定義できます。 max_shard_sizeが指定され、かつあるスプリットのnum_shardsが指定されていない場合、そのスプリットのシャード数はmax_shard_sizeから推定されます。
  • embed_external_files (bool, デフォルトは True) — シャードにファイルのバイト列を埋め込むかどうか。具体的には、プッシュの前に、以下の型のフィールドに対して次の処理を行います。
    • AudioおよびImageは、ローカルパス情報を削除し、ファイルの内容をParquetファイルに埋め込みます。
  • num_proc (int, 省略可能, デフォルトは None) — データセットの準備とアップロード時のプロセス数。 データセットが多数のサンプルや埋め込むメディアファイルで構成されている場合に役立ちます。 hf_xet(HF への高速アップロード用の Rust クライアント)と連携するために「spawn」コンテキストを使用します。 デフォルトではマルチプロセッシングは無効です。

    4.0.0で追加

IterableDatasetDict を Parquet データセットとしてハブにプッシュします。 IterableDatasetDict は HTTP リクエストを使用してプッシュされるため、git や git-lfs のインストールは不要です。

各データセットの分割は独立してプッシュされます。プッシュされたデータセットは、元の分割名を保持します。

生成されるParquetファイルは、デフォルトで自己完結型です。データセットにImageまたはAudioデータが含まれている場合、Parquetファイルには画像や音声ファイルのバイトが保存されます。 embed_external_filesをFalseに設定することで、これを無効にできます。

例:

>>> dataset_dict.push_to_hub("<organization>/<dataset_id>")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", private=True)
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", max_shard_size="1GB")
>>> dataset_dict.push_to_hub("<organization>/<dataset_id>", num_shards={"train": 1024, "test": 8})

データセットに新しい設定(またはサブセット)を追加したい場合(データセットに複数のタスク/バージョン/言語がある場合など):

>>> english_dataset.push_to_hub("<organization>/<dataset_id>", "en")
>>> french_dataset.push_to_hub("<organization>/<dataset_id>", "fr")
>>> # later
>>> english_dataset = load_dataset("<organization>/<dataset_id>", "en")
>>> french_dataset = load_dataset("<organization>/<dataset_id>", "fr")

機能

class datasets.Features

< >

( *args**kwargs )

データセットの内部構造を定義する特別な辞書です。

dict[str, FieldType] 型の辞書でインスタンス化します。ここで、キーは希望する列名、値はその列の型です。

FieldTypeは、以下のいずれかになります。

  • Value機能は、int64やstringなどの単一のデータ型値を指定します。
  • ClassLabel 特徴は、ラベルを関連付けられる事前定義されたクラスセットを指定し、データセット内では整数として保存されます。
  • Pythonのdictは、サブフィールドからサブフィーチャーへのマッピングを含む複合フィーチャーを指定します。 任意の形で、ネストされたフィールドのネストされたフィールドを持つことができます。
  • ListまたはLargeListは、すべて同じ特徴量タイプを持つサブ特徴量のシーケンスを含む複合特徴量を指定します。
  • 多次元配列用のArray2D、Array3D、Array4DまたはArray5D機能。
  • Audio 機能は、オーディオファイルへの絶対パス、またはオーディオファイルへの相対パス(“path” キー)とそのバイト内容(“bytes” キー)を含む辞書を保存します。 この機能は、デコーダーを使用してオーディオを遅延読み込みします。
  • 画像ファイルへの絶対パス、np.ndarrayオブジェクト、PIL.Image.Imageオブジェクト、または画像ファイルへの相対パス(“path”キー)とそのバイト内容(“bytes”キー)を含む辞書を格納するためのImage機能。この機能は画像データを抽出します。
  • Video機能は、動画ファイルへの絶対パス、torchcodec.decoders.VideoDecoderオブジェクト、または動画ファイルへの相対パス(“path”キー)とそのバイト内容(“bytes”キー)を含む辞書を保存します。この機能は、デコーダーを使用して動画を遅延読み込みします。
  • PDFファイルへの絶対パスを保存するためのPdf機能、pdfplumber.pdf.PDFオブジェクト、またはPDFファイルへの相対パス(“path”キー)とそのバイト内容(“bytes”キー)を含む辞書。この機能は、PDFリーダーを使用してPDFを遅延読み込みします。
  • Niftiは、NIfTI神経画像ファイルへの絶対パス、nibabel.Nifti1Imageオブジェクト、またはNIfTIファイルへの相対パス(“path”キー)とそのバイト内容(“bytes”キー)を含む辞書を格納するための機能です。この機能は、nibabelを使用してNIfTIファイルを遅延読み込みします。
  • 機械翻訳に固有のTranslationまたはTranslationVariableLanguages機能。
  • Json 機能は、混合型や任意の型を含む非構造化データを保存するために使用します。内部では

コピー

< >

( )

Featuresのディープコピーを作成します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> copy_of_features = ds.features.copy()
>>> copy_of_features
{'label': ClassLabel(names=['neg', 'pos']),
 'text': Value('string')}

decode_batch

< >

( batch: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )

パラメータ

  • batch (dict[str, list[Any]]) — Datasetのバッチデータです。
  • token_per_repo_id (dict, 任意) — Hub上のプライベートリポジトリから音声ファイルや画像ファイルにアクセスしてデコードするには、repo_id (str) -> token (bool または str) の辞書を渡すことができます。

カスタム機能デコーディングでバッチをデコードします。

decode_column

< >

( column: listcolumn_name: strtoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )

パラメータ

  • column (list[Any]) — Datasetの列データ。
  • column_name (str) — Datasetの列名。

カスタム機能デコーディングでカラムをデコードします。

decode_example

< >

( example: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )

パラメータ

  • example (dict[str, Any]) — データセットの行データです。
  • token_per_repo_id (dict, 任意) — Hub上のプライベートリポジトリから音声ファイルや画像ファイルにアクセスしてデコードするには、repo_id (str) -> token (bool or str) という辞書を渡すことができます。

カスタム機能デコードを用いたデコードの例。

encode_batch

< >

( batch )

パラメータ

  • batch (dict[str, list[Any]]) — Dataset のバッチ内のデータ。

バッチをArrow用の形式にエンコードします。

encode_column

< >

( columncolumn_name: str )

パラメータ

  • column (list[Any]) — Dataset のカラム内のデータ。
  • column_name (str) — Datasetの列名。

カラムをArrow用の形式にエンコードします。

encode_example

< >

( example )

パラメータ

  • example (dict[str, Any]) — Dataset の行のデータ。

例をArrow用の形式にエンコードします。

flatten

< >

( max_depth = 16 ) → Features

戻り値

機能

フラット化された特徴量。

特徴をフラットにします。すべての辞書型カラムは削除され、その中に含まれるすべてのサブフィールドに置き換えられます。新しいフィールドは、元のカラム名とサブフィールド名を<original>.<subfield>のように連結することで命名されます。

カラムにネストされた辞書が含まれている場合、下位のサブフィールド名もすべて連結されて新しいカラムが形成されます: <original>.<subfield>.<subsubfield> など。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("rajpurkar/squad", split="train")
>>> ds.features.flatten()
{'answers.answer_start': List(Value('int32'), id=None),
 'answers.text': List(Value('string'), id=None),
 'context': Value('string'),
 'id': Value('string'),
 'question': Value('string'),
 'title': Value('string')}

from_arrow_schema

< >

( pa_schema: Schema )

パラメータ

  • pa_schema (pyarrow.Schema) — Arrow スキーマ。

Arrow スキーマからFeaturesを構築します。 Hugging Face Datasets の機能に関するスキーマのメタデータもチェックします。 NULL 不可フィールドはサポートされておらず、NULL 可に設定されます。

また、pa.dictionary はサポートされておらず、代わりにその基底型が使用されます。 そのため、datasets は DictionaryArray オブジェクトを実際の値に変換します。

from_dict

< >

( dic ) → Features

パラメータ

  • dic (dict[str, Any]) — Pythonの辞書。

戻り値

機能

dict から Features を構築します。

デシリアライズされた辞書からネストされたフィーチャーオブジェクトを再生成します。 フィーチャーの FieldType のデータクラス名を推定するために、_type キーを使用します。

シリアライズされた JSON 辞書から特徴を定義するための便利なコンストラクタ構文を可能にします。この関数は、JSON オブジェクトにダンプされた [DatasetInfo] をデシリアライズする際に特に使用されます。これは [Features.from_arrow_schema] の類似機能として機能し、再帰的なフィールドごとのインスタンス化を処理しますが、pyarrow へのマッピングは不要です。ただし、[Value] が自動的に実行する pyarrow のプリミティブ dtype のマッピングを利用する点は除きます。

例:

>>> Features.from_dict({'_type': {'dtype': 'string', 'id': None, '_type': 'Value'}})
{'_type': Value('string')}

reorder_fields_as

< >

( other: Features )

パラメータ

  • other ([Features]) — アラインメントの対象となる他の [Features]。

他の [Features] と同じフィールド順になるよう、Features のフィールドを並べ替えてください。

フィールドの順序は重要であり、これは基盤となるarrowデータに影響するためです。 フィールドの順序を変更することで、基盤となるarrowデータ型を一致させることができます。

例:

>>> from datasets import Features, List, Value
>>> # let's say we have two features with a different order of nested fields (for a and b for example)
>>> f1 = Features({"root": {"a": Value("string"), "b": Value("string")}})
>>> f2 = Features({"root": {"b": Value("string"), "a": Value("string")}})
>>> assert f1.type != f2.type
>>> # re-ordering keeps the base structure (here List is defined at the root level), but makes the fields order match
>>> f1.reorder_fields_as(f2)
{'root': List({'b': Value('string'), 'a': Value('string')})}
>>> assert f1.reorder_fields_as(f2).type == f2.type

スカラー

class datasets.Value

< >

( dtype: strid: typing.Optional[str] = None )

パラメータ

  • dtype (str) — データ型の名前。

特定のデータ型のスカラー特徴量値。

Valueの可能なdtypeは以下の通りです:

  • null
  • bool
  • int8
  • int16
  • int32
  • int64
  • uint8
  • uint16
  • uint32
  • uint64
  • float16
  • float32(別名 float)
  • float64(別名 double)
  • time32[(s|ms)]
  • time64[(us|ns)]
  • timestamp[(s|ms|us|ns)]
  • timestamp[(s|ms|us|ns), tz=(tzstring)]
  • date32
  • date64
  • duration[(s|ms|us|ns)]
  • decimal128(precision, scale)
  • decimal256(precision, scale)
  • binary
  • large_binary
  • binary_view
  • string
  • large_string
  • string_view

例:

>>> from datasets import Features
>>> features = Features({'stars': Value('int32')})
>>> features
{'stars': Value('int32')}

class datasets.ClassLabel

< >

( num_classes: dataclasses.InitVar[typing.Optional[int]] = Nonenames: list = Nonenames_file: dataclasses.InitVar[typing.Optional[str]] = Noneid: typing.Optional[str] = None )

パラメータ

  • num_classes (int, 任意) — クラス数。すべてのラベルは num_classes 未満である必要があります。
  • names (list of str, 任意) — 整数クラス用の文字列名です。 名前が提供された順序は保持されます。
  • names_file (str, 任意) — 整数クラスの名前を1行ずつ記載したファイルへのパス。

整数クラスラベル用のフィーチャータイプ。

ClassLabelを定義するには3つの方法があり、それぞれが3つの引数に対応しています:

  • num_classes: 0 から (num_classes-1) までのラベルを作成します。
  • names: ラベル文字列のリスト。
  • names_file: ラベルのリストを含むファイル。

内部では、ラベルは整数として保存されます。 不明または欠損しているラベルを表すには、-1 を使用できます。

例:

>>> from datasets import Features, ClassLabel
>>> features = Features({'label': ClassLabel(num_classes=3, names=['bad', 'ok', 'good'])})
>>> features
{'label': ClassLabel(names=['bad', 'ok', 'good'])}

cast_storage

< >

( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.IntegerArray] ) → pa.Int64Array

パラメータ

  • storage (Union[pa.StringArray, pa.IntegerArray]) — キャストする PyArrow 配列。

戻り値

pa.Int64Array

ClassLabelアローストレージ型内の配列。

Arrow配列をClassLabelのarrowストレージ型にキャストします。 ClassLabelのpyarrowストレージ型に変換できるArrow型は以下の通りです:

  • pa.string()
  • pa.int()

int2str

< >

( values: typing.Union[int, collections.abc.Iterable] )

integer => クラス名のstringへの変換。

不明/欠損ラベルについて: 負の整数を渡すとValueErrorが発生します。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> ds.features["label"].int2str(0)
'neg'

str2int

< >

( values: typing.Union[str, collections.abc.Iterable] )

変換クラス名 string => integer。

例:

>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> ds.features["label"].str2int('neg')
0

複合

class datasets.LargeList

< >

( feature: typing.Anyid: typing.Optional[str] = None )

パラメータ

  • feature (FeatureType) — 大きなリスト内の各アイテムの子機能データ型。

子要素の機能データ型で構成される大規模なリストデータの機能タイプ。

pyarrow.LargeListTypeによってサポートされており、これはpyarrow.ListTypeと同様ですが、オフセットが32ビットではなく64ビットである点が異なります。

class datasets.List

< >

( feature: typing.Anylength: int = -1id: typing.Optional[str] = None )

パラメータ

  • feature (FeatureType) — 大きなリスト内の各アイテムの子機能データ型。
  • length (任意の int、デフォルトは -1) — リストの長さが固定されている場合の長さです。 デフォルトは -1 で、任意の長さを意味します。

子要素の機能データ型で構成される大規模なリストデータの機能タイプ。

pyarrow.ListTypeによってサポートされており、32ビットのオフセットまたは固定長を使用します。

クラス datasets.Sequence

< >

( feature = Nonelength = -1**kwargs )

パラメータ

  • feature (FeatureType) — 大きなリスト内の各アイテムの子機能データ型。
  • length (任意の int、デフォルトは -1) — リストの長さが固定されている場合の長さです。 デフォルトは -1 で、任意の長さを意味します。

Sequenceは、内部の辞書型特徴量をリストの辞書に自動的に変換するユーティリティです。この動作はTensorFlow Datasetsライブラリとの互換性レイヤーとして実装されていますが、一部のケースでは不要な場合があります。この動作を望まない場合は、Sequenceの代わりにListまたはLargeListを使用できます。

翻訳

class datasets.Translation

< >

( languages: listid: typing.Optional[str] = None )

パラメータ

  • languages (dict) — 各サンプルについて、文字列の言語コードを文字列の翻訳にマッピングする辞書。

Featureは、例ごとに固定された言語での翻訳に使用します。 ここでは、tfdsとの互換性のために使用します。

例:

>>> # At construction time:
>>> datasets.features.Translation(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
...         'en': 'the cat',
...         'fr': 'le chat',
...         'de': 'die katze'
... }

flatten

< >

( )

Translation機能を辞書にフラット化します。

class datasets.TranslationVariableLanguages

< >

( languages: typing.Optional[list] = Nonenum_languages: typing.Optional[int] = Noneid: typing.Optional[str] = None ) →

  • language or translation (variable-length 1D tf.Tensor of tf.string)

パラメータ

  • languages (dict) — 各サンプルについて、文字列の言語コードを1つ以上の文字列の翻訳に対応させる辞書です。 存在する言語はサンプルによって異なる場合があります。

戻り値

  • languageまたはtranslation(tf.string型の可変長1次元tf.Tensor)

昇順にソートされた言語コード、または言語コードと整合するようにソートされたプレーンテキストの翻訳。

Featureは、例ごとに異なる言語を持つ翻訳に使用します。 ここでは、tfdsとの互換性のために使用します。

例:

>>> # At construction time:
>>> datasets.features.TranslationVariableLanguages(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
...         'en': 'the cat',
...         'fr': ['le chat', 'la chatte,']
...         'de': 'die katze'
... }
>>> # Tensor returned :
>>> {
...         'language': ['en', 'de', 'fr', 'fr'],
...         'translation': ['the cat', 'die katze', 'la chatte', 'le chat'],
... }

flatten

< >

( )

TranslationVariableLanguages 機能を辞書にフラット化します。

配列

class datasets.Array2D

< >

( shape: tupledtype: strid: typing.Optional[str] = None )

パラメータ

  • shape (tuple) — 各次元のサイズ。
  • dtype (str) — データ型の名前。

2次元の配列を作成します。

例:

>>> from datasets import Features
>>> features = Features({'x': Array2D(shape=(1, 3), dtype='int32')})

class datasets.Array3D

< >

( shape: tupledtype: strid: typing.Optional[str] = None )

パラメータ

  • shape (tuple) — 各次元のサイズ。
  • dtype (str) — データ型の名前。

三次元配列を作成します。

例:

>>> from datasets import Features
>>> features = Features({'x': Array3D(shape=(1, 2, 3), dtype='int32')})

class datasets.Array4D

< >

( shape: tupledtype: strid: typing.Optional[str] = None )

パラメータ

  • shape (tuple) — 各次元のサイズ。
  • dtype (str) — データ型の名前。

4次元の配列を作成します。

例:

>>> from datasets import Features
>>> features = Features({'x': Array4D(shape=(1, 2, 2, 3), dtype='int32')})

class datasets.Array5D

< >

( shape: tupledtype: strid: typing.Optional[str] = None )

パラメータ

  • shape (tuple) — 各次元のサイズ。
  • dtype (str) — データ型の名前。

5次元の配列を作成します。

例:

>>> from datasets import Features
>>> features = Features({'x': Array5D(shape=(1, 2, 2, 3, 3), dtype='int32')})

オーディオ

class datasets.Audio

< >

( sampling_rate: typing.Optional[int] = Nonedecode: bool = Truenum_channels: typing.Optional[int] = Nonestream_index: typing.Optional[int] = Noneid: typing.Optional[str] = None )

パラメータ

  • sampling_rate (int, 任意) — ターゲットのサンプリングレート。None の場合、ネイティブのサンプリングレートが使用されます。
  • num_channels (int, 省略可) — サンプルの希望するチャネル数。デフォルトでは、ソースのチャネル数が使用されます。 オーディオデコードは、形状が (num_channels, num_samples) のサンプルを返します。 現在 None (ソースのチャネル数、デフォルト 1 (モノラル 2 (ステレオ) チャネルがサポートされています。 num_channels 引数は torchcodec.decoders.AudioDecoder.

    4.4.0で追加

  • decode (bool、デフォルトはTrue) — オーディオデータをデコードするかどうか。Falseの場合、{"path": audio_path, "bytes": audio_bytes}形式の元の辞書を返します。
  • stream_index (int, 省略可能) — ファイルから使用するストリーミングインデックスです。None の場合、“ベスト”インデックスがデフォルトで選択されます。

Featureは、音声ファイルから音声データを抽出するためのAudioです。

入力: Audio機能は以下を入力として受け入れます:

  • str: 音声ファイルへの絶対パス(つまり、ランダムアクセスが許可されています)。

  • pathlib.Path: 音声ファイルへのパス(つまり、ランダムアクセスが許可されています)。

  • dictで、キーは以下の通りです:

    • path: アーカイブファイルに対する音声ファイルの相対パスを示す文字列。
    • bytes: 音声ファイルのバイト内容。

    これは、音声ファイルを埋め込んでいるparquetファイルやwebdatasetファイルに対して有用です。

  • dictで、キーは以下の通りです:

    • array: 音声サンプルを含む配列
    • sampling_rate: 音声サンプルのサンプリングレートに対応する整数。
  • torchcodec.decoders.AudioDecoder: torchcodecのオーディオデコーダーオブジェクト。

出力: Audio featuresはtorchcodec.decoders.AudioDecoderオブジェクトとしてデータを出力し、追加のキーが含まれます:

  • array: 音声サンプルを含む配列
  • sampling_rate: 音声サンプルのサンプリングレートに対応する整数。

例:

>>> from datasets import load_dataset, Audio
>>> ds = load_dataset("PolyAI/minds14", name="en-US", split="train")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=44100, num_channels=2))
>>> ds[0]["audio"]
<datasets.features._torchcodec.AudioDecoder object at 0x11642b6a0>
>>> audio = ds[0]["audio"]
>>> audio.get_samples_played_in_range(0, 10)
AudioSamples:
    data (shape): torch.Size([2, 110592])
    pts_seconds: 0.0
    duration_seconds: 2.507755102040816
    sample_rate: 44100

cast_storage

< >

( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray

パラメータ

  • storage (Union[pa.StringArray, pa.StructArray]) — キャスト対象の PyArrow 配列。

戻り値

pa.StructArray

Audioのarrowストレージ型における配列、すなわち pa.struct({"bytes": pa.binary(), "path": pa.string()})

Arrow配列をAudioのarrowストレージ型にキャストします。 Audioのpyarrowストレージ型に変換できるArrow型は以下の通りです:

  • pa.string() - “path”データを含む必要があります
  • pa.binary() - 音声バイトを含む必要があります
  • pa.struct({"bytes": pa.binary()})
  • pa.struct({"path": pa.string()})
  • pa.struct({"bytes": pa.binary(), "path": pa.string()}) - 順序は重要ではありません

decode_example

< >

( value: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )

パラメータ

  • value (dict) — 以下のキーを持つ辞書です:
    • path: 相対的なオーディオファイルパスを含む文字列。
    • bytes: 音声ファイルのバイト数。
  • token_per_repo_id (dict, 任意) — Hub上のプライベートリポジトリから音声ファイルにアクセスしてデコードするには、リポジトリID (str) -> トークン (bool または str) の辞書を渡すことができます。

デコード例のオーディオファイルをオーディオデータに変換します。

embed_storage

< >

( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray

パラメータ

  • storage (pa.StructArray) — 埋め込む PyArrow 配列。
  • token_per_repo_id (dict, 任意) — ファイルのバイトを取得するための、repo_id からトークンへの辞書。
  • local_files (bool, デフォルトは True) — ローカルファイルのデータを配列に埋め込むかどうか

    4.8.5で追加

  • remote_files (bool, デフォルトは True) — 配列にリモートファイルのデータを埋め込むかどうか。例: `hf://` や `https://` で始まるパスを持つファイル

    4.8.5で追加

戻り値

pa.StructArray

Audioのarrowストレージ型における配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})です。

オーディオファイルをArrow配列に埋め込みます。

encode_example

< >

( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('AudioDecoder')] ) → dict

パラメータ

  • value (str, bytes,bytearray,dict, AudioDecoder) — Audio 機能への入力として渡されるデータ。

戻り値

dict

例をArrow用の形式にエンコードします。

flatten

< >

( )

デコード可能な状態の場合、エラーを発生させます。それ以外の場合は、特徴量を辞書にフラット化します。

画像

class datasets.Image

< >

( mode: typing.Optional[str] = Nonedecode: bool = Trueid: typing.Optional[str] = None )

パラメータ

  • mode (str, 任意) — 画像をコンバートするモード。None の場合、画像のネイティブモードが使用されます。
  • decode (bool、デフォルトはTrue) — 画像データをデコードするかどうか。Falseの場合、{"path": image_path, "bytes": image_bytes}形式の基底辞書を返します。

画像ファイルから画像データを読み込むためのFeature。

入力: Image機能は以下を入力として受け入れます:

  • str: 画像ファイルへの絶対パス(つまり、ランダムアクセスが許可されています)。

  • pathlib.Path: 画像ファイルへのパス(つまり、ランダムアクセスが許可されています)。

  • dictで、キーは以下の通りです:

    • path: アーカイブファイルに対する画像ファイルの相対パスを示す文字列。
    • bytes: 画像ファイルのバイト数。

    これは、画像ファイルを埋め込んでいるparquetファイルやwebdatasetファイルに対して有用です。

  • np.ndarray: 画像を表すNumPy配列。

  • PIL.Image.Image: PIL画像オブジェクト。

出力: Image featuresは出力データをPIL.Image.Imageオブジェクトとして出力します。

例:

>>> from datasets import load_dataset, Image
>>> ds = load_dataset("AI-Lab-Makerere/beans", split="train")
>>> ds.features["image"]
Image(decode=True, id=None)
>>> ds[0]["image"]
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=500x500 at 0x15E52E7F0>
>>> ds = ds.cast_column('image', Image(decode=False))
{'bytes': None,
 'path': '/root/.cache/huggingface/datasets/downloads/extracted/b0a21163f78769a2cf11f58dfc767fb458fc7cea5c05dccc0144a2c0f0bc1292/train/healthy/healthy_train.85.jpg'}

cast_storage

< >

( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray

パラメータ

  • storage (Union[pa.StringArray, pa.StructArray, pa.ListArray]) — キャスト対象の PyArrow 配列。

戻り値

pa.StructArray

Image arrowストレージ型内の配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})。

Arrow配列をImageのarrowストレージ型にキャストします。 Imageのpyarrowストレージ型に変換できるArrow型は以下の通りです:

  • pa.string() - “path”データを含む必要があります
  • pa.large_string() - “path”データを含む必要があります(可能な場合は文字列にキャストされます)
  • pa.binary() - 画像のバイト列を含まなければなりません
  • pa.struct({"bytes": pa.binary()})
  • pa.struct({"path": pa.string()})
  • pa.struct({"bytes": pa.binary(), "path": pa.string()}) - 順序は重要ではありません
  • pa.list(*) - 画像配列データを含む必要があります

decode_example

< >

( value: dicttoken_per_repo_id = None )

パラメータ

  • value (str または dict) — 絶対パスの画像ファイルパスを示す文字列、または以下のキーを持つ辞書:
    • path: 絶対パスまたは相対パスの画像ファイルパスを含む文字列。
    • bytes: 画像ファイルのバイト列。
  • token_per_repo_id (dict, 任意) — Hub上のプライベートリポジトリから画像ファイルにアクセスしてデコードするには、repo_id (str) -> token (bool または str) の辞書を渡すことができます。

例の画像ファイルを画像データにデコードします。

embed_storage

< >

( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray

パラメータ

  • storage (pa.StructArray) — 埋め込む PyArrow 配列。
  • token_per_repo_id (dict, 任意) — ファイルのバイトを取得するための、repo_id からトークンへの辞書。
  • local_files (bool, デフォルトは True) — ローカルファイルのデータを配列に埋め込むかどうか

    4.8.5で追加

  • remote_files (bool, デフォルトは True) — 配列にリモートファイルのデータを埋め込むかどうか。例: `hf://` や `https://` で始まるパスを持つファイル

    4.8.5で追加

戻り値

pa.StructArray

Image arrowストレージ型内の配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})。

画像ファイルをArrow配列に埋め込みます。

encode_example

< >

( value: typing.Union[str, bytes, bytearray, dict, numpy.ndarray, ForwardRef('PIL.Image.Image')] )

パラメータ

  • value (str、np.ndarray、PIL.Image.Imageまたはdict) — Image featureに渡される入力データです。

例をArrow用の形式にエンコードします。

flatten

< >

( )

デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。

動画

class datasets.Video

< >

( decode: bool = Truestream_index: typing.Optional[int] = Nonedimension_order: typing.Literal['NCHW', 'NHWC'] = 'NCHW'num_ffmpeg_threads: int = 1device: typing.Union[str, ForwardRef('torch.device'), NoneType] = 'cpu'seek_mode: typing.Literal['exact', 'approximate'] = 'exact'id: typing.Optional[str] = None )

パラメータ

  • decode (bool、デフォルトはTrue) — 動画データをデコードするかどうか。Falseの場合、{"path": video_path, "bytes": video_bytes}形式の基底辞書を返します。
  • stream_index (int, 省略可能) — ファイルから使用するストリーミングインデックスです。None の場合、“ベスト”インデックスがデフォルトで選択されます。
  • dimension_order (str, デフォルトは NCHW) — デコードされたフレームの次元の順序です。 N はバッチサイズ、C はチャネル数、 H はフレームの高さ、W はフレームの幅です。
  • num_ffmpeg_threads (int, デフォルトは 1) — 動画のデコードに使用するスレッド数です。(1に設定することを推奨します)
  • device (str または torch.device、デフォルトは cpu) — 動画のデコードに使用するデバイス。
  • seek_mode (str、デフォルトはexact) — フレームアクセスが「exact」か「approximate」かを決定します。 exact は、フレーム i を要求すると常にフレーム i が返されることを保証しますが、そのためにはファイルの初期スキャンが必要です。 approximate はファイルのスキャンを回避するため高速ですが、ファイルのメタデータを使用して i の位置を推定するため、精度が低くなります。 詳細はこちら

Featureは、動画ファイルから動画データを読み取るためのVideoです。

入力: Video機能は以下を入力として受け入れます:

  • str: 動画ファイルへの絶対パス(つまり、ランダムアクセスが許可されています)。

  • pathlib.Path: 動画ファイルへのパス(つまり、ランダムアクセスが許可されています)。

  • dictで、キーは以下の通りです:

    • path: データセットリポジトリ内の動画ファイルの相対パスを示す文字列。
    • bytes: 動画ファイルのバイト数。

    parquetファイルやwebdatasetファイルなど、動画ファイルを埋め込んでいるファイルに対して有用です。

  • torchcodec.decoders.VideoDecoder: torchcodecのビデオデコーダーオブジェクト。

出力: The Video features は出力データをtorchcodec.decoders.VideoDecoderオブジェクトとして提供します。

例:

>>> from datasets import Dataset, Video
>>> ds = Dataset.from_dict({"video":["path/to/Screen Recording.mov"]}).cast_column("video", Video())
>>> ds.features["video"]
Video(decode=True, id=None)
>>> ds[0]["video"]
<torchcodec.decoders._video_decoder.VideoDecoder object at 0x14a61e080>
>>> video = ds[0]["video"]
>>> video.get_frames_in_range(0, 10)
FrameBatch:
data (shape): torch.Size([10, 3, 50, 66])
pts_seconds: tensor([0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333,
        0.4333], dtype=torch.float64)
duration_seconds: tensor([0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167,
        0.0167], dtype=torch.float64)
>>> ds.cast_column('video', Video(decode=False))[0]["video]
{'bytes': None,
 'path': 'path/to/Screen Recording.mov'}

cast_storage

< >

( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray

パラメータ

  • storage (Union[pa.StringArray, pa.StructArray, pa.ListArray]) — キャスト対象の PyArrow 配列。

戻り値

pa.StructArray

Video arrowストレージ型内の配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})。

Arrow配列をVideoのarrowストレージ型にキャストします。 Videoのpyarrowストレージ型に変換できるArrow型は以下の通りです:

  • pa.string() - “path”データを含む必要があります
  • pa.binary() - 動画のバイト列を含まなければなりません
  • pa.struct({"bytes": pa.binary()})
  • pa.struct({"path": pa.string()})
  • pa.struct({"bytes": pa.binary(), "path": pa.string()}) - 順序は重要ではありません
  • pa.list(*) - 動画の配列データを含む必要があります

decode_example

< >

( value: typing.Union[str, datasets.features.video.Example]token_per_repo_id: typing.Optional[dict[str, typing.Union[bool, str]]] = None )

パラメータ

  • value (str または dict) — 絶対パスの動画ファイルパスを示す文字列、または以下のキーを持つ辞書:
    • path: 絶対パスまたは相対パスの動画ファイルパスを示す文字列。
    • bytes: 動画ファイルのバイト列。
  • token_per_repo_id (dict, 任意) — Hub上のプライベートリポジトリから動画ファイルにアクセスしてデコードするには、repo_id (str) -> token (bool または str) の辞書を渡すことができます。

デコード例の動画ファイルを動画データに変換します。

embed_storage

< >

( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray

パラメータ

  • storage (pa.StructArray) — 埋め込む PyArrow 配列。
  • token_per_repo_id (dict, 任意) — ファイルのバイトを取得するための、repo_id からトークンへの辞書。
  • local_files (bool, デフォルトは True) — ローカルファイルのデータを配列に埋め込むかどうか

    4.8.5で追加

  • remote_files (bool, デフォルトは True) — 配列にリモートファイルのデータを埋め込むかどうか。例: `hf://` や `https://` で始まるパスを持つファイル

    4.8.5で追加

戻り値

pa.StructArray

Video arrowストレージ型内の配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})。

画像ファイルをArrow配列に埋め込みます。

encode_example

< >

( value: typing.Union[str, bytes, bytearray, datasets.features.video.Example, numpy.ndarray, ForwardRef('VideoDecoder')] )

パラメータ

  • value (str、np.ndarray、bytes、bytearray、VideoDecoder または dict) — Video feature に渡される入力データです。

例をArrow用の形式にエンコードします。

flatten

< >

( )

デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。

メッシュ

class datasets.Mesh

< >

( decode: bool = Trueid: typing.Optional[str] = None )

パラメータ

  • decode (bool、デフォルトは True) — メッシュデータをデコードするかどうかを指定します。False の場合、{"path": mesh_path, "bytes": mesh_bytes} の形式で基となる辞書を返します。メッシュのデコードには trimesh が使用され、.glb、.gltf、.ply、および .stl ファイルをサポートしています。

Feature を使用して、ファイルから3Dメッシュデータを読み取ります。

入力: Mesh機能は以下を入力として受け入れます:

  • str: メッシュファイルへの絶対パス(つまり、ランダムアクセスが許可されています)。

  • pathlib.Path: メッシュファイルへのパス(つまり、ランダムアクセスが許可されています)。

  • dictで、キーは以下の通りです:

    • path: アーカイブファイルに対するメッシュファイルの相対パスを示す文字列。
    • bytes: メッシュファイルのバイト数。

    メッシュファイルを埋め込んでいるparquetファイルやwebdatasetファイルに対して、この機能は有用です。

  • trimesh.Trimeshまたはtrimesh.Scene: 3Dメッシュまたはシーンオブジェクト。

出力: Mesh機能は、データをtrimesh.Trimeshまたはtrimesh.Sceneオブジェクトとして出力します。

cast_storage

< >

( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray

パラメータ

  • storage (Union[pa.StringArray, pa.StructArray]) — キャスト対象の PyArrow 配列。

戻り値

pa.StructArray

Mesh arrowストレージ型内の配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})。

Arrow配列をMeshのarrowストレージ型にキャストします。 Meshのpyarrowストレージ型に変換できるArrow型は以下の通りです:

  • pa.string() - “path”データを含む必要があります
  • pa.large_string() - “path”データを含む必要があります(可能な場合は文字列にキャストされます)
  • pa.binary() - メッシュのバイト列を含まなければなりません
  • pa.struct({"bytes": pa.binary()})
  • pa.struct({"path": pa.string()})
  • pa.struct({"bytes": pa.binary(), "path": pa.string()}) - 順序は重要ではありません

decode_example

< >

( value: dicttoken_per_repo_id = None )

パラメータ

  • value (dict) — 以下のキーを持つ辞書です:
    • path: メッシュファイルの絶対パスまたは相対パスを示す文字列。
    • bytes: メッシュファイルのバイト列。
  • token_per_repo_id (dict, 任意) — Hub上のプライベートリポジトリからメッシュファイルにアクセスしてデコードするには、repo_id (str) -> token (bool または str) の辞書を渡すことができます。

デコード例のメッシュファイルをデコードします。

embed_storage

< >

( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray

パラメータ

  • storage (pa.StructArray) — 埋め込む PyArrow 配列。
  • token_per_repo_id (dict, 任意) — ファイルのバイトを取得するための、repo_id からトークンへの辞書。
  • local_files (bool、デフォルトはTrue) — ローカルファイルのデータを配列に埋め込むかどうかを指定します。
  • remote_files (bool、デフォルトはTrue) — 配列にリモートファイルのデータを埋め込むかどうかを指定します。

戻り値

pa.StructArray

Mesh arrowストレージ型内の配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})。

メッシュファイルをArrow配列に埋め込みます。

encode_example

< >

( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('trimesh.Trimesh'), ForwardRef('trimesh.Scene')] )

パラメータ

  • value (str、bytes、dict、trimesh.Trimesh、または trimesh.Scene) — Mesh 機能への入力として渡されるデータ。

例をArrow用の形式にエンコードします。

flatten

< >

( )

デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。

Json

class datasets.Json

< >

( decode: bool = Trueid: typing.Optional[str] = None )

JSONオブジェクトの機能タイプ。

内部では、オブジェクトはJSONエンコードされた文字列として保存されます。

例:

>>> from datasets import Features, Json
>>> features = Features({'json': Json()})
>>> features
{'json': Json()}
>>> from datasets import Dataset, Features, Json, List
>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, features=features)
>>> # OR
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, on_mixed_types="use_json")
>>> ds.features
{'a': List(Json())}
>>> ds[0]
{'a': [{'b': 0}, {'c': 0}]}
>>> def f(x):
...     for y in x["a"]:
...         y["d"] = "foo"
...     return x
>>> ds = ds.map(f)
>>> ds.features
>>> ds[0]
{'a': [{'b': 0, 'd': 'foo'}, {'c': 0, 'd': 'foo'}]}

cast_storage

< >

( storage: Array ) → pa.JsonArray

パラメータ

  • storage (Union[pa.StringArray, pa.IntegerArray]) — キャストする PyArrow 配列。

戻り値

pa.JsonArray

Jsonアローストレージ型内の配列。

Arrow配列をJsonのArrowストレージ型にキャストします。

Pdf

class datasets.Pdf

< >

( decode: bool = Trueid: typing.Optional[str] = None )

パラメータ

  • decode (bool、デフォルトはTrue) — pdf デコードを行うかどうか。Falseの場合、{"path": pdf_path, "bytes": pdf_bytes}形式の基底辞書を返します。

実験的。 PDFファイルからPDFドキュメントを読み込むためのFeature。

入力: Pdf機能は以下を入力として受け入れます:

  • str: PDFファイルへの絶対パス(つまり、ランダムアクセスが許可されています)。

  • pathlib.Path: PDFファイルへのパス(つまり、ランダムアクセスが許可されています)。

  • dictで、キーは以下の通りです:

    • path: データセットリポジトリ内の PDF ファイルの相対パスを示す文字列。
    • bytes: PDFファイルのバイト列。 シーケンシャルアクセスを行うアーカイブファイルに便利です。
  • pdfplumber.pdf.PDF: pdfplumberのPDFオブジェクト。

例:

>>> from datasets import Dataset, Pdf
>>> ds = Dataset.from_dict({"pdf": ["path/to/pdf/file.pdf"]}).cast_column("pdf", Pdf())
>>> ds.features["pdf"]
Pdf(decode=True, id=None)
>>> ds[0]["pdf"]
<pdfplumber.pdf.PDF object at 0x7f8a1c2d8f40>
>>> ds = ds.cast_column("pdf", Pdf(decode=False))
>>> ds[0]["pdf"]
{'bytes': None,
'path': 'path/to/pdf/file.pdf'}

cast_storage

< >

( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray

パラメータ

  • storage (Union[pa.StringArray, pa.StructArray, pa.ListArray]) — キャスト対象の PyArrow 配列。

戻り値

pa.StructArray

Pdf アローストレージ型内の配列、すなわち pa.struct({"bytes": pa.binary(), "path": pa.string()})。

Arrow配列をPdf arrowストレージ型にキャストします。 Pdf pyarrowストレージ型に変換できるArrow型は以下の通りです:

  • pa.string() - “path”データを含む必要があります
  • pa.binary() - 画像のバイト列を含まなければなりません
  • pa.struct({"bytes": pa.binary()})
  • pa.struct({"path": pa.string()})
  • pa.struct({"bytes": pa.binary(), "path": pa.string()}) - 順序は重要ではありません
  • pa.list(*) - pdf配列データを含む必要があります

decode_example

< >

( value: dicttoken_per_repo_id = None )

パラメータ

  • value (str または dict) — 絶対パスの PDF ファイルパスを示す文字列、または以下のキーを持つ辞書:
    • path: 絶対パスまたは相対パスのPDFファイルパスを含む文字列。
    • bytes: PDFファイルのバイト列。
  • token_per_repo_id (dict, 任意) — Hub上のプライベートリポジトリからPDFファイルにアクセスしてデコードするには、 repo_id (str) -> token (bool または str) の形式の辞書を渡すことができます。

PDFファイルのデコード例をPDFデータに変換します。

embed_storage

< >

( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray

パラメータ

  • storage (pa.StructArray) — 埋め込む PyArrow 配列。
  • token_per_repo_id (dict, 任意) — ファイルのバイトを取得するための、repo_id からトークンへの辞書。
  • local_files (bool, デフォルトは True) — ローカルファイルのデータを配列に埋め込むかどうか

    4.8.5で追加

  • remote_files (bool, デフォルトは True) — 配列にリモートファイルのデータを埋め込むかどうか。例: `hf://` や `https://` で始まるパスを持つファイル

    4.8.5で追加

戻り値

pa.StructArray

PDF アローストレージ型における配列、すなわち pa.struct({"bytes": pa.binary(), "path": pa.string()})。

PDFファイルをArrow配列に埋め込みます。

encode_example

< >

( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('pdfplumber.pdf.PDF')] )

パラメータ

  • value (str、bytes、pdfplumber.pdf.PDF または dict) — Pdf 機能への入力として渡されるデータ。

例をArrow用の形式にエンコードします。

flatten

< >

( )

デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。

Nifti

class datasets.Nifti

< >

( decode: bool = Trueid: typing.Optional[str] = None )

パラメータ

  • decode (bool、デフォルトはTrue) — NIfTI データをデコードするかどうか。False の場合、バイト列を含む文字列が返されます。サンプルのデコード時には decode=False はサポートされていません。

実験的。 NIfTI 神経画像ファイルを読み取るための Nifti Feature。

入力: Nifti機能は、以下を入力として受け入れます:

  • str: NIfTIファイルへの絶対パス(つまり、ランダムアクセスが許可されています)。

  • pathlib.Path: NIfTIファイルへのパス(つまり、ランダムアクセスが許可されています)。

  • dictで、キーは以下の通りです:

    • path: データセットリポジトリ内の NIfTI ファイルの相対パスを示す文字列。
    • bytes: NIfTIファイルのバイト列。 シーケンシャルアクセスを行うアーカイブファイルに便利です。
  • nibabelの画像オブジェクト(例: nibabel.nifti1.Nifti1Image)。

例:

>>> from datasets import Dataset, Nifti
>>> ds = Dataset.from_dict({"nifti": ["path/to/file.nii.gz"]}).cast_column("nifti", Nifti())
>>> ds.features["nifti"]
Nifti(decode=True, id=None)
>>> ds[0]["nifti"]
<nibabel.nifti1.Nifti1Image object at 0x7f8a1c2d8f40>
>>> ds = ds.cast_column("nifti", Nifti(decode=False))
>>> ds[0]["nifti"]
{'bytes': None,
'path': 'path/to/file.nii.gz'}

cast_storage

< >

( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.BinaryArray] ) → pa.StructArray

パラメータ

  • storage (Union[pa.StringArray, pa.StructArray, pa.BinaryArray]) — キャスト対象の PyArrow 配列。

戻り値

pa.StructArray

Nifti アローストレージ型内の配列、すなわち pa.struct({"bytes": pa.binary(), "path": pa.string()})。

Arrow配列をNifti arrowストレージ型にキャストします。 Nifti pyarrowストレージ型に変換できるArrow型は以下の通りです:

  • pa.string() - “path”データを含む必要があります
  • pa.binary() - NIfTIバイト列を含む必要があります
  • pa.struct({"bytes": pa.binary()})
  • pa.struct({"path": pa.string()})
  • pa.struct({"bytes": pa.binary(), "path": pa.string()}) - 順序は重要ではありません

decode_example

< >

( value: dicttoken_per_repo_id = None )

パラメータ

  • value (str または dict) — 絶対パスの NIfTI ファイルパスを示す文字列、または以下のキーを持つ辞書:
    • path: 絶対パスまたは相対パスの NIfTI ファイルパスを示す文字列。
    • bytes: NIfTIファイルのバイト列。
  • token_per_repo_id (dict, 任意) — Hub上のプライベートリポジトリからNIfTIファイルにアクセスしてデコードするには、repo_id (str) -> token (bool または str) の辞書を渡すことができます。

NIfTIファイルのデコード例をnibabelのイメージオブジェクトに変換します。

embed_storage

< >

( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray

パラメータ

  • storage (pa.StructArray) — 埋め込む PyArrow 配列。
  • token_per_repo_id (dict, 任意) — ファイルのバイトを取得するための、repo_id からトークンへの辞書。
  • local_files (bool, デフォルトは True) — ローカルファイルのデータを配列に埋め込むかどうか

    4.8.5で追加

  • remote_files (bool, デフォルトは True) — 配列にリモートファイルのデータを埋め込むかどうか。例: `hf://` や `https://` で始まるパスを持つファイル

    4.8.5で追加

戻り値

pa.StructArray

NifTIのarrowストレージ型における配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})です。

NifTIファイルをArrow配列に埋め込みます。

encode_example

< >

( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('nib.Nifti1Image')] )

パラメータ

  • value (str、bytes、nibabel.Nifti1Image または dict) — Nifti 特徴に渡される入力データ。

例をArrow用の形式にエンコードします。

flatten

< >

( )

デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。

BioSequence

class datasets.BioSequence

< >

( format: str = 'fasta'decode: bool = Trueid: typing.Optional[str] = None )

パラメータ

  • format (str, デフォルトは "fasta") — Bio.SeqIO によって解釈されるシーケンス形式の名前です。一般的な値は "fasta"、"fastq"、"genbank" です。
  • decode (bool、デフォルトはTrue) — シーケンスデータをデコードするかどうか。Falseの場合、{"path": path, "bytes": bytes}形式の元の辞書を返します。

実験的。 シーケンスファイルから生物学的シーケンスレコードを読み取るための BioSequence Feature。

シーケンスファイルには、残基の識別子とアノテーションを伴う1つ以上のレコードが含まれます。FASTA、FASTQ、GenBankはこのレベルでは同じ構造であり、使用されるパーサーだけが異なります。そのため、formatは型ではなくパーサーを選択します。

入力: BioSequence機能は、以下を入力として受け入れます:

  • str: シーケンスファイルへの絶対パス(つまり、ランダムアクセスが許可されています)。

  • pathlib.Path: シーケンスファイルへのパス(つまり、ランダムアクセスが許可されています)。

  • dictで、キーは以下の通りです:

    • path: データセットリポジトリ内のシーケンスファイルの相対パスを示す文字列。
    • bytes: シーケンスファイルのバイト列。 シーケンシャルアクセスを行うアーカイブファイルに便利です。
  • Bio.SeqRecord.SeqRecord: biopythonのシーケンスレコード。

例:

>>> from datasets import Dataset, BioSequence
>>> ds = Dataset.from_dict({"seq": ["path/to/sequences.fasta"]}).cast_column("seq", BioSequence())
>>> ds.features["seq"]
BioSequence(format='fasta', decode=True)
>>> ds[0]["seq"]
SeqRecord(seq=Seq('ACGT'), id='seq1', name='seq1', description='seq1', dbxrefs=[])
>>> ds = ds.cast_column("seq", BioSequence(decode=False))
>>> ds[0]["seq"]
{'bytes': None,
'path': 'path/to/sequences.fasta'}

cast_storage

< >

( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray

パラメータ

  • storage (Union[pa.StringArray, pa.StructArray]) — キャスト対象の PyArrow 配列。

戻り値

pa.StructArray

BioSequenceのarrowストレージ型における配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})です。

Arrow配列をBioSequenceのarrowストレージ型にキャストします。 BioSequenceのpyarrowストレージ型に変換できるArrow型は以下の通りです:

  • pa.string() - “path”データを含む必要があります
  • pa.binary() - ファイルのバイト列を含まなければなりません
  • pa.struct({"bytes": pa.binary()})
  • pa.struct({"path": pa.string()})
  • pa.struct({"bytes": pa.binary(), "path": pa.string()}) - 順序は重要ではありません

decode_example

< >

( value: dicttoken_per_repo_id = None )

パラメータ

  • value (str または dict) — 絶対パスの文字列、または以下のキーを持つ辞書:
    • path: 絶対パスまたは相対パスの文字列。
    • bytes: ファイルのバイト列。
  • token_per_repo_id (dict, 任意) — Hub 上のプライベートリポジトリからファイルにアクセスしてデコードするには、repo_id (str) -> token (bool または str) の辞書を渡すことができます。

Decode example sequence file into a biopython record.

ファイルには複数のレコードが含まれる場合があります。1行が1レコードに相当するため、ここでは最初のレコードが返されます。1レコードごとに1行ずつ展開するには、パッケージに同梱されているシーケンスローダーを使用してください。

embed_storage

< >

( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray

パラメータ

  • storage (pa.StructArray) — 埋め込む PyArrow 配列。
  • token_per_repo_id (dict, 任意) — ファイルのバイトを取得するための、repo_id からトークンへの辞書。
  • local_files (bool、デフォルトはTrue) — ローカルファイルのデータを配列に埋め込むかどうかを指定します。
  • remote_files (bool、デフォルトはTrue) — 配列にリモートファイルのデータを埋め込むかどうかを指定します。

戻り値

pa.StructArray

BioSequenceのarrowストレージ型内の配列。

シーケンスファイルをArrow配列に埋め込みます。

encode_example

< >

( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('SeqRecord')] )

パラメータ

  • value (str、bytes、Bio.SeqRecord.SeqRecord または dict) — BioSequence 機能にインプットとして渡されるデータです。

例をArrow用の形式にエンコードします。

flatten

< >

( )

デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。

BioStructure

class datasets.BioStructure

< >

( format: str = 'pdb'decode: bool = Trueid: typing.Optional[str] = None )

パラメータ

  • format (str, デフォルトは "pdb") — 構造の形式。"pdb" または "mmcif" のいずれかです。
  • decode (bool、デフォルトはTrue) — 構造データをデコードするかどうか。Falseの場合、{"path": path, "bytes": bytes}形式の基底辞書を返します。

実験的。 BioStructureのFeatureは、構造ファイルから高分子構造を読み込むためのものです。

構造ファイルには、分子の原子の三次元座標が、チェーンと残基にグループ化されて格納されています。PDBとmmCIFは同じオブジェクトを記述しており、使用されるパーサーの違いのみです。そのため、formatは型ではなくパーサーを選択します。

入力: BioStructure機能は、以下を入力として受け入れます:

  • str: 構造ファイルへの絶対パス(つまり、ランダムアクセスが許可されています)。

  • pathlib.Path: 構造ファイルへのパス(つまり、ランダムアクセスが許可されています)。

  • dictで、キーは以下の通りです:

    • path: データセットリポジトリ内の構造ファイルの相対パスを示す文字列。
    • bytes: 構造ファイルのバイト列。 シーケンシャルアクセスを行うアーカイブファイルに便利です。
  • Bio.PDB.Structure.Structure: biopythonの構造。

例:

>>> from datasets import Dataset, BioStructure
>>> ds = Dataset.from_dict({"st": ["path/to/1abc.pdb"]}).cast_column("st", BioStructure())
>>> ds.features["st"]
BioStructure(format='pdb', decode=True)
>>> ds[0]["st"]
<Structure id=1abc>
>>> ds = ds.cast_column("st", BioStructure(decode=False))
>>> ds[0]["st"]
{'bytes': None,
'path': 'path/to/1abc.pdb'}

cast_storage

< >

( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray

パラメータ

  • storage (Union[pa.StringArray, pa.StructArray]) — キャスト対象の PyArrow 配列。

戻り値

pa.StructArray

BioStructureのarrowストレージ型における配列、すなわちpa.struct({"bytes": pa.binary(), "path": pa.string()})です。

Arrow配列をBioStructureのarrowストレージ型にキャストします。 BioStructureのpyarrowストレージ型に変換できるArrow型は以下の通りです:

  • pa.string() - “path”データを含む必要があります
  • pa.binary() - ファイルのバイト列を含まなければなりません
  • pa.struct({"bytes": pa.binary()})
  • pa.struct({"path": pa.string()})
  • pa.struct({"bytes": pa.binary(), "path": pa.string()}) - 順序は重要ではありません

decode_example

< >

( value: dicttoken_per_repo_id = None )

パラメータ

  • value (str または dict) — 絶対パスの文字列、または以下のキーを持つ辞書:
    • path: 絶対パスまたは相対パスの文字列。
    • bytes: ファイルのバイト列。
  • token_per_repo_id (dict, 任意) — Hub 上のプライベートリポジトリからファイルにアクセスしてデコードするには、repo_id (str) -> token (bool または str) の辞書を渡すことができます。

Decode example structure fileをBiopythonの構造に変換します。

embed_storage

< >

( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray

パラメータ

  • storage (pa.StructArray) — 埋め込む PyArrow 配列。
  • token_per_repo_id (dict, 任意) — ファイルのバイトを取得するための、repo_id からトークンへの辞書。
  • local_files (bool、デフォルトはTrue) — ローカルファイルのデータを配列に埋め込むかどうかを指定します。
  • remote_files (bool、デフォルトはTrue) — 配列にリモートファイルのデータを埋め込むかどうかを指定します。

戻り値

pa.StructArray

BioStructureのarrowストレージ型における配列。

構造ファイルをArrow配列に埋め込みます。

encode_example

< >

( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('Structure')] )

パラメータ

  • value (str、bytes、Bio.PDB.Structure.Structure または dict) — BioStructure 特徴にインプットとして渡されるデータ。

例をArrow用の形式にエンコードします。

flatten

< >

( )

デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。

ファイルシステム

datasets.filesystems.is_remote_filesystem

< >

( fs: AbstractFileSystem )

パラメータ

  • fs (fsspec.spec.AbstractFileSystem) — Pythonic なファイルシステムのための抽象的なスーパークラスです。例えば fsspec.filesystem('file') や s3fs.S3FileSystem などです。

fsがリモートファイルシステムかどうかを確認します。

指紋

class datasets.fingerprint.Hasher

< >

( )

Pythonオブジェクトを入力として受け入れるハッシャー。

Update on GitHub