Datasets documentation
主要クラス
主要クラス
DatasetInfo
class datasets.DatasetInfo
< source >( 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
< source >( dataset_info_dir: strstorage_options: typing.Optional[dict] = None )
dataset_info_dir内のJSONファイルからDatasetInfoを作成します。
この関数は、DatasetInfoの動的に生成されるすべてのフィールド(num_examples、hash、作成時刻など)を更新します。
これにより、以前のすべてのメタデータが上書きされます。
write_to_directory
< source >( dataset_info_dirpretty_print = Falsestorage_options: typing.Optional[dict] = None )
DatasetInfoとライセンス(存在する場合)をJSONファイルとしてdataset_info_dirに書き出します。
データセット
ベースクラスDatasetは、Apache ArrowテーブルをバックエンドとするDatasetを実装しています。
クラス datasets.Dataset
< source >( 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
< source >( 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 )
Datasetにカラムを追加します。
1.7で追加
add_item
< source >( item: dictnew_fingerprint: typing.Optional[str] = None )
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
< source >( filename: strinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_filename: typing.Optional[str] = Nonein_memory: bool = False )
filename の Arrow テーブルをバックエンドとする Dataset をインスタンス化します。
from_buffer
< source >( buffer: Bufferinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_buffer: typing.Optional[pyarrow.lib.Buffer] = None )
Arrowバッファをバックエンドに持つDatasetをインスタンス化します。
from_pandas
< source >( 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.
from_dict
< source >( 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
< source >( 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
< source >( 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を返します。
データセットの基盤となる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]]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'}]データセットの列数。
データセットの行数(Dataset.len()と同じ)。
データセットの列の名前。
データセットの形状(列数、行数)。
flatten
< source >( new_fingerprint: typing.Optional[str] = Nonemax_depth = 16 ) → Dataset
テーブルをフラットにします。 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
})キャスト
< source >( 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
< source >( 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 )
デコード用にカラムを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
< source >( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset
データセットから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
< source >( original_column_name: strnew_column_name: strnew_fingerprint: typing.Optional[str] = None ) → Dataset
データセット内のカラム名を変更し、元のカラムに関連付けられた特徴量を新しいカラム名の下に移動します。
rename_columns
< source >( column_mapping: dictnew_fingerprint: typing.Optional[str] = None ) → Dataset
データセット内の複数の列の名前を変更し、元の列に関連する特徴量を新しい列名の下に移動します。
select_columns
< source >( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset
データセット内の1つ以上のカラムと、それに関連する特徴量を選択します。
class_encode_column
< source >( 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')}データセットの行数。
iter
< source >( batch_size: intdrop_last_batch: bool = False )
サイズがbatch_sizeのバッチを反復します。
[~datasets.Dataset.set_format] でフォーマットが設定されている場合、選択されたフォーマットで各行が返されます。
formatted_as
< source >( 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
< source >( 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
< source >( 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])}__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
< source >( 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
< source >( 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])}列(文字列名で)または行(整数インデックス、インデックスの反復可能オブジェクト、またはブール値で)をインデックス付けするために使用できます。
現在使用中のキャッシュファイルがある場合はそれを除き、データセットのキャッシュディレクトリ内のすべてのキャッシュファイルを削除します。
このコマンドを実行する際は、他のプロセスが別のキャッシュファイルを使用していないことに注意してください。
map
< source >( 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 tomap()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): Ifcache_file_nameis 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, ifcache_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)フィルタ
< source >( 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を使用することをお勧めします。
select
< source >( 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の場合、以前のフィンガープリントと変換引数のハッシュを使用して、新しいフィンガープリントが計算されます。
インデックスのリスト/配列に従って行を選択し、新しいデータセットを作成します。
sort
< source >( 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またはlast1.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]シャッフル
< source >( 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最初の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 .'}]最初の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
< source >( 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
})
})シャード
< source >( 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 のようなランダム化演算子を使用する前に、必ずシャード化してください。
シャード化演算子は、データセットのパイプラインの早い段階で使用するのが望ましいです。
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
< source >( 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.
push_to_hub
< source >( 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) — シャードにファイルのバイト列を埋め込むかどうか。具体的には、プッシュ前に以下の型のフィールドに対して次の処理を行います。 - 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
< source >( 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()のデータはすべてarrowファイルに保存されます。 パスやURLを保存する場合は、Value(“string”)型を使用してください。
load_from_disk
< source >( 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_pathがデータセットのディレクトリパスである場合、要求されたデータセットです。dataset_pathがデータセットディレクトリのパスである場合、各スプリットを含むdatasets.DatasetDictが返されます。
以前にsave_to_diskを使用して保存されたデータセットを、データセットディレクトリから、またはfsspec.spec.AbstractFileSystemの任意の実装によるファイルシステムから読み込みます。
flatten_indices
< source >( 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
< source >( 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にデータセットをエクスポートします
to_pandas
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
pandas.DataFrame としてデータセットを返します。大規模なデータセットの場合は、ジェネレーターを返すこともできます。
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Pythonのdictとしてデータセットを返します。大規模なデータセットの場合は、ジェネレーターを返すこともできます。
to_json
< source >( 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 arelines=Trueand `orient=“records”.2.11.0 で変更
orientが"split"または"table"の場合、パラメータindexのデフォルト値はFalseになります。インデックスを書き込みたい場合は、
index=Trueを渡してください。
戻り値
int
書き込まれた文字数またはバイト数。
JSON LinesまたはJSONにデータセットをエクスポートします。
デフォルトの出力形式はJSON Linesです。
JSONにエクスポートするには、lines=False引数と希望するorientを渡します。
to_parquet
< source >( 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にエクスポートします
to_sql
< source >( 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データベースにエクスポートします。
to_iterable_dataset
< source >( 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()
>>> 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:
... passPyTorchの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:
... passPyTorchの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:
... passPyTorch 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:
... passadd_faiss_index
< source >( 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
< source >( 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
< source >( index_name: strfile: typing.Union[str, pathlib.PurePath]storage_options: typing.Optional[dict] = None )
FaissIndexをディスクに保存します。
load_faiss_index
< source >( 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
< source >( 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
< source >( 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を使用して既存のテキストインデックスを読み込み、高速な検索を実現します。
添付されているすべてのインデックスのcolindex_nameumns/識別子をリスト表示します。
アタッチされたすべてのインデックスのindex_name/識別子をリスト表示します。
指定されたカラムを持つインデックスを削除します。
検索
< source >( 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
< source >( 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
< source >( 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
< source >( 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オブジェクト。
from_csv
< source >( 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を返します。
from_json
< source >( 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を返します。
from_parquet
< source >( 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を返します。
from_text
< source >( 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を返します。
from_sql
< source >( 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
< source >( label2id: dictlabel_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
< source >( dsets: listinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneaxis: int = 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.
datasets.interleave_datasets
< source >( 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個のサンプルが含まれます。 - 与えられた確率に基づき、一部のデータセットの訪問確率が非常に低い場合、結果として得られるデータセットはサンプル数が増加します。
- 確率が指定されていない場合、結果のデータセットには
戻り値
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
< source >( 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"のみサポートしています。
戻り値
ランク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を設定してください。
データセットにトランスフォームを適用すると、データはキャッシュファイルに保存されます。 このキャッシュ機構により、すでに計算済みの既存のキャッシュファイルを再読み込みできます。
各transform後に更新されるデータセットのフィンガープリントを用いてキャッシュファイルに名前が付けられるため、データセットの再読み込みが可能です。
無効にすると、ライブラリはデータセットにトランスフォームを適用する際に、キャッシュされたデータセットファイルを再読み込みしなくなります。 より正確には、キャッシュが無効化されている場合:
- cacheファイルは常に再作成されます
- cache filesは、セッションが閉じられた際に削除される一時ディレクトリに書き込まれます
- cacheファイルは、データセットのフィンガープリントではなく、ランダムなハッシュを使用して命名されます
- 変換されたデータセットを保存するにはsave_to_disk()を使用してください。そうしないと、セッションが閉じられた際に削除されます。
- caching は load_dataset() には影響しません。データセットを最初から再生成したい場合は、load_dataset() の
download_modeパラメータを使用してください。
データセットにトランスフォームを適用すると、データはキャッシュファイルに保存されます。 このキャッシュ機構により、すでに計算済みの既存のキャッシュファイルを再読み込みできます。
各transform後に更新されるデータセットのフィンガープリントを用いてキャッシュファイルに名前が付けられるため、データセットの再読み込みが可能です。
無効にすると、ライブラリはデータセットにトランスフォームを適用する際に、キャッシュされたデータセットファイルを再読み込みしなくなります。 より正確には、キャッシュが無効化されている場合:
- cacheファイルは常に再作成されます
- cache filesは、セッションが閉じられた際に削除される一時ディレクトリに書き込まれます
- cacheファイルは、データセットのフィンガープリントではなく、ランダムなハッシュを使用して命名されます
- 変換されたデータセットを保存するにはsave_to_disk()を使用してください。そうしないと、セッションが閉じられた際に削除されます。
- caching は load_dataset() には影響しません。データセットを最初から再生成したい場合は、load_dataset() の
download_modeパラメータを使用してください。
データセットにトランスフォームを適用すると、データはキャッシュファイルに保存されます。 このキャッシュ機構により、すでに計算済みの既存のキャッシュファイルを再読み込みできます。
各transform後に更新されるデータセットのフィンガープリントを用いてキャッシュファイルに名前が付けられるため、データセットの再読み込みが可能です。
無効にすると、ライブラリはデータセットにトランスフォームを適用する際に、キャッシュされたデータセットファイルを再読み込みしなくなります。 より正確には、キャッシュが無効化されている場合:
- cacheファイルは常に再作成されます
- cache filesは、セッションが閉じられた際に削除される一時ディレクトリに書き込まれます
- cacheファイルは、データセットのフィンガープリントではなく、ランダムなハッシュを使用して命名されます
- 変換されたデータセットを保存するには、save_to_disk()を使用してください。そうしないと、セッションが閉じられた際に削除されます。
- caching は load_dataset() には影響しません。データセットを最初から再生成したい場合は、load_dataset() の
download_modeパラメータを使用してください。
class datasets.Column
< source >( source: typing.Union[ForwardRef('Dataset'), ForwardRef('Column')]column_name: str )
Datasetの特定の列に対するイテラブル。
例:
DatasetDict
分割名(例: ‘train’、‘test’)をキーとし、Datasetオブジェクトを値とする辞書です。
map や filter などのデータセット変換メソッドも備えており、すべての分割を一度に処理できます。
datasets.Dataset の変換メソッド(map、filter など)を持つ辞書(dict of str: datasets.Dataset)
各スプリットを裏付けるApache Arrowテーブル。
各スプリットを裏付ける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'}]}データセットの各分割における列数。
データセットの各分割における行数。
データセットの各スプリットにおけるカラム名。
データセットの各分割の形状(行数、列数)。
unique
< source >( column: str ) → Dict[str, list]
各スプリットについて、カラム内の一意の要素のリストを返します。
これは低レベルのバックエンドで実装されており、そのため非常に高速です。
データセットのキャッシュディレクトリ内のすべてのキャッシュファイルを、現在使用されているキャッシュファイルがある場合はそれを除いて削除します。 このコマンドを実行する際は、他のプロセスが他のキャッシュファイルを使用していないことに注意してください。
map
< source >( 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)フィルタ
< source >( 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
< source >( 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]シャッフル
< source >( 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)を開始するためのシードを指定できます。
set_format
< source >( 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'}__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
< source >( 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
< source >( 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
< source >( 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])}各スプリットの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
})
})キャスト
< source >( features: Features )
データセットを新しい特徴量のセットにキャストします。 この変換は、データセット辞書のすべてのデータセットに適用されます。
例:
>>> 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
< source >( column: strfeature )
デコード用にカラムを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
< source >( column_names: typing.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
< source >( original_column_name: strnew_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
< source >( column_mapping: dict ) → 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
< source >( column_names: typing.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
< source >( column: strinclude_nulls: bool = False )
与えられたカラムを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
< source >( 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) — シャードにファイルのバイト列を埋め込むかどうか。具体的には、プッシュの前に、以下の型のフィールドに対して次の処理を行います。 - 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
< source >( 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()のデータはすべてarrowファイルに保存されます。 パスやURLを保存する場合は、Value(“string”)型を使用してください。
load_from_disk
< source >( 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 で保存されたデータセットを読み込みます。
from_csv
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
パラメータ
- path_or_paths (
dictof path-like) — CSV ファイルのパスです。 - features (Features、任意) — データセットの機能です。
- cache_dir (str, 任意、デフォルトは
"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。 - keep_in_memory (
bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。 - **kwargs (追加のキーワード引数) —
pandas.read_csvに渡すキーワード引数。
CSVファイルからDatasetDictを作成します。
from_json
< source >( 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_parquet
< source >( 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 (
dictof 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_text
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
パラメータ
- path_or_paths (
dictof path-like) — テキストファイルのパスです。 - features (Features、任意) — データセットの機能です。
- cache_dir (
str、任意、デフォルトは"~/.cache/huggingface/datasets") — データをキャッシュするディレクトリ。 - keep_in_memory (
bool、デフォルトはFalse) — データをメモリ内にコピーするかどうか。 - **kwargs (追加のキーワード引数) —
TextConfigに渡すキーワード引数。
テキストファイルからDatasetDictを作成します。
IterableDataset
ベースクラス IterableDataset は、Python のジェネレーターによって裏付けられる反復可能な Dataset を実装しています。
class datasets.IterableDataset
< source >( 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。
filenameのArrowテーブルからIterableDatasetをインスタンス化します。
from_pandas
< source >( 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.
from_dict
< source >( 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
< source >( 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
< source >( 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 shardsremove_columns
< source >( column_names: typing.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
< source >( column_names: typing.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
< source >( 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
デコード用にカラムを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')}キャスト
< source >( features: Features ) → 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
< source >( 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
< source >( batch_size: intdrop_last_batch: bool = False )
サイズがbatch_sizeのバッチを反復します。
map
< source >( 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
< source >( original_column_name: strnew_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 .'}フィルタ
< source >( 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 .'}]シャッフル
< source >( 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}]バッチ
< source >( 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) — 不完全な最後のバッチを破棄するかどうか。
データセットからサンプルをバッチにグループ化します。
例:
最初の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 .'}]最初の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 .'}]シャード
< source >( num_shards: intindex: intcontiguous: 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
})可能な場合は、データセットをリシャードします。つまり、現在のシャードをさらに多くのシャードに分割します。 これによりシャードの数が増加し、結果として得られるデータセットは 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
< source >( num_times: typing.Optional[int] )
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
< source >( 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にデータセットをエクスポートします。
これは、データセットを反復処理し、書き込む前に完全にメモリに読み込む処理です。
to_pandas
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
pandas.DataFrame としてデータセットを返します。大規模なデータセットの場合は、ジェネレーターを返すこともできます。
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Pythonのdictとしてデータセットを返します。大規模なデータセットの場合は、ジェネレーターを返すこともできます。
to_json
< source >( 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 arelines=Trueandorient="records". The parameterindexdefaults toFalseiforientis“split”or“table”. If you would like to write the index, passindex=True`.
戻り値
int
書き込まれた文字数またはバイト数。
JSON LinesまたはJSONにデータセットをエクスポートします。
これは、データセットを反復処理し、書き込む前に完全にメモリに読み込む処理です。
デフォルトの出力形式はJSON Linesです。
JSONにエクスポートするには、lines=False引数と希望するorientを渡します。
to_parquet
< source >( 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にエクスポートします
to_sql
< source >( 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データベースにエクスポートします。
push_to_hub
< source >( 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) — シャードにファイルのバイト列を埋め込むかどうか。具体的には、プッシュ前に以下の型のフィールドに対して次の処理を行います。 - 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 the state_dict of the dataset. The iteration will restart at the next example from when the state was saved.
再開すると、チェックポイントが保存された時点から正確に再開されますが、以下の2つの場合を除きます。
- shuffle buffersからのexamplesは、再開時に失われ、バッファは新しいデータで再充填されます
.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)>>> 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 を取得します。 これは、最後に生成されたエピソードの状態に対応しています。
再開すると、チェックポイントが保存された時点から正確に再開されますが、以下の2つの場合を除きます。
- shuffle buffersからのexamplesは、再開時に失われ、バッファは新しいデータで再充填されます
.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)>>> 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オブジェクト。
from_csv
< source >( 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を作成します。
from_json
< source >( 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を作成します。
from_parquet
< source >( 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を作成します。
from_text
< source >( 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を作成します。
class datasets.IterableColumn
< source >( source: typing.Union[ForwardRef('IterableDataset'), ForwardRef('IterableColumn')]column_name: str )
IterableDatasetの特定の列に対するイテラブルです。
例:
IterableDatasetDict
キーに分割名(例: ‘train’、‘test’)、値にIterableDatasetオブジェクトを持つ辞書。
map
< source >( 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 .'}フィルタ
< source >( 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 .'}]シャッフル
< source >( 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
< source >( type: typing.Optional[str] = None )
指定された形式のデータセットを返します。
例:
>>> 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])}キャスト
< source >( features: Features ) → IterableDatasetDict
データセットを新しい特徴量のセットにキャストします。 型キャストは、データセット辞書のすべてのデータセットに適用されます。
例:
>>> 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
< source >( 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] )
カラムをデコード用のフィーチャーにキャストします。 型キャストは、データセット辞書のすべてのデータセットに適用されます。
例:
>>> 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
< source >( column_names: typing.Union[str, list[str]] ) → IterableDatasetDict
パラメータ
削除するカラムを含まない、データセットオブジェクトのコピー。
…データセットから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
< source >( original_column_name: strnew_column_name: str ) → IterableDatasetDict
パラメータ
列名が変更されたデータセットのコピー。
…の列名を変更し、元の列に関連付けられた特徴量を新しい列名の下に移動します。 このリネームは、…辞書のすべての…に適用されます。
例:
>>> 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 .'}…データセット内の複数の列の名前を変更し、元の列に関連する特徴量を新しい列名の下に移動します。 この名前の変更は、データセット辞書のすべてのデータセットに適用されます。
例:
>>> 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
< source >( column_names: typing.Union[str, list[str]] ) → IterableDatasetDict
パラメータ
選択した列のみを含む、データセットオブジェクトのコピー。
データセット内の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
< source >( 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) — シャードにファイルのバイト列を埋め込むかどうか。具体的には、プッシュの前に、以下の型のフィールドに対して次の処理を行います。 - 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")機能
データセットの内部構造を定義する特別な辞書です。
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のディープコピーを作成します。
decode_batch
< source >( batch: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
カスタム機能デコーディングでバッチをデコードします。
decode_column
< source >( column: listcolumn_name: strtoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
カスタム機能デコーディングでカラムをデコードします。
decode_example
< source >( example: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
カスタム機能デコードを用いたデコードの例。
バッチをArrow用の形式にエンコードします。
encode_column
< source >( columncolumn_name: str )
カラムをArrow用の形式にエンコードします。
例をArrow用の形式にエンコードします。
特徴をフラットにします。すべての辞書型カラムは削除され、その中に含まれるすべてのサブフィールドに置き換えられます。新しいフィールドは、元のカラム名とサブフィールド名を<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')}Arrow スキーマからFeaturesを構築します。 Hugging Face Datasets の機能に関するスキーマのメタデータもチェックします。 NULL 不可フィールドはサポートされておらず、NULL 可に設定されます。
また、pa.dictionary はサポートされておらず、代わりにその基底型が使用されます。 そのため、datasets は DictionaryArray オブジェクトを実際の値に変換します。
dict から Features を構築します。
デシリアライズされた辞書からネストされたフィーチャーオブジェクトを再生成します。 フィーチャーの FieldType のデータクラス名を推定するために、_type キーを使用します。
シリアライズされた JSON 辞書から特徴を定義するための便利なコンストラクタ構文を可能にします。この関数は、JSON オブジェクトにダンプされた [DatasetInfo] をデシリアライズする際に特に使用されます。これは [Features.from_arrow_schema] の類似機能として機能し、再帰的なフィールドごとのインスタンス化を処理しますが、pyarrow へのマッピングは不要です。ただし、[Value] が自動的に実行する pyarrow のプリミティブ dtype のマッピングを利用する点は除きます。
reorder_fields_as
< source >( other: 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
< source >( dtype: strid: typing.Optional[str] = None )
特定のデータ型のスカラー特徴量値。
Valueの可能なdtypeは以下の通りです:
nullboolint8int16int32int64uint8uint16uint32uint64float16float32(別名 float)float64(別名 double)time32[(s|ms)]time64[(us|ns)]timestamp[(s|ms|us|ns)]timestamp[(s|ms|us|ns), tz=(tzstring)]date32date64duration[(s|ms|us|ns)]decimal128(precision, scale)decimal256(precision, scale)binarylarge_binarybinary_viewstringlarge_stringstring_view
class datasets.ClassLabel
< source >( num_classes: dataclasses.InitVar[typing.Optional[int]] = Nonenames: list = Nonenames_file: dataclasses.InitVar[typing.Optional[str]] = Noneid: typing.Optional[str] = None )
整数クラスラベル用のフィーチャータイプ。
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
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.IntegerArray] ) → pa.Int64Array
Arrow配列をClassLabelのarrowストレージ型にキャストします。
ClassLabelのpyarrowストレージ型に変換できるArrow型は以下の通りです:
pa.string()pa.int()
integer => クラス名のstringへの変換。
不明/欠損ラベルについて: 負の整数を渡すとValueErrorが発生します。
変換クラス名 string => integer。
複合
class datasets.LargeList
< source >( feature: typing.Anyid: typing.Optional[str] = None )
子要素の機能データ型で構成される大規模なリストデータの機能タイプ。
pyarrow.LargeListTypeによってサポートされており、これはpyarrow.ListTypeと同様ですが、オフセットが32ビットではなく64ビットである点が異なります。
class datasets.List
< source >( feature: typing.Anylength: int = -1id: typing.Optional[str] = None )
子要素の機能データ型で構成される大規模なリストデータの機能タイプ。
pyarrow.ListTypeによってサポートされており、32ビットのオフセットまたは固定長を使用します。
クラス datasets.Sequence
< source >( feature = Nonelength = -1**kwargs )
Sequenceは、内部の辞書型特徴量をリストの辞書に自動的に変換するユーティリティです。この動作はTensorFlow Datasetsライブラリとの互換性レイヤーとして実装されていますが、一部のケースでは不要な場合があります。この動作を望まない場合は、Sequenceの代わりにListまたはLargeListを使用できます。
翻訳
class datasets.Translation
< source >( languages: listid: typing.Optional[str] = None )
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'
... }Translation機能を辞書にフラット化します。
class datasets.TranslationVariableLanguages
< source >( 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)
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'],
... }TranslationVariableLanguages 機能を辞書にフラット化します。
配列
class datasets.Array2D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
2次元の配列を作成します。
class datasets.Array3D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
三次元配列を作成します。
class datasets.Array4D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
4次元の配列を作成します。
class datasets.Array5D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
5次元の配列を作成します。
オーディオ
class datasets.Audio
< source >( 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: 44100cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
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
< source >( value: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
デコード例のオーディオファイルをオーディオデータに変換します。
embed_storage
< source >( 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
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('AudioDecoder')] ) → dict
例をArrow用の形式にエンコードします。
デコード可能な状態の場合、エラーを発生させます。それ以外の場合は、特徴量を辞書にフラット化します。
画像
class datasets.Image
< source >( mode: typing.Optional[str] = Nonedecode: bool = Trueid: typing.Optional[str] = None )
画像ファイルから画像データを読み込むための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
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray
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
< source >( value: dicttoken_per_repo_id = None )
例の画像ファイルを画像データにデコードします。
embed_storage
< source >( 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
< source >( value: typing.Union[str, bytes, bytearray, dict, numpy.ndarray, ForwardRef('PIL.Image.Image')] )
例をArrow用の形式にエンコードします。
デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。
動画
class datasets.Video
< source >( 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
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray
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
< source >( value: typing.Union[str, datasets.features.video.Example]token_per_repo_id: typing.Optional[dict[str, typing.Union[bool, str]]] = None )
デコード例の動画ファイルを動画データに変換します。
embed_storage
< source >( 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
< source >( value: typing.Union[str, bytes, bytearray, datasets.features.video.Example, numpy.ndarray, ForwardRef('VideoDecoder')] )
例をArrow用の形式にエンコードします。
デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。
メッシュ
class datasets.Mesh
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Feature を使用して、ファイルから3Dメッシュデータを読み取ります。
入力: Mesh機能は以下を入力として受け入れます:
str: メッシュファイルへの絶対パス(つまり、ランダムアクセスが許可されています)。pathlib.Path: メッシュファイルへのパス(つまり、ランダムアクセスが許可されています)。dictで、キーは以下の通りです:path: アーカイブファイルに対するメッシュファイルの相対パスを示す文字列。bytes: メッシュファイルのバイト数。
メッシュファイルを埋め込んでいるparquetファイルやwebdatasetファイルに対して、この機能は有用です。
trimesh.Trimeshまたはtrimesh.Scene: 3Dメッシュまたはシーンオブジェクト。
出力: Mesh機能は、データをtrimesh.Trimeshまたはtrimesh.Sceneオブジェクトとして出力します。
cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
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
< source >( value: dicttoken_per_repo_id = None )
デコード例のメッシュファイルをデコードします。
embed_storage
< source >( 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
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('trimesh.Trimesh'), ForwardRef('trimesh.Scene')] )
例をArrow用の形式にエンコードします。
デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。
Json
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
< source >( storage: Array ) → pa.JsonArray
Arrow配列をJsonのArrowストレージ型にキャストします。
class datasets.Pdf
< source >( decode: bool = Trueid: typing.Optional[str] = None )
実験的。 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
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.ListArray] ) → pa.StructArray
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
< source >( value: dicttoken_per_repo_id = None )
PDFファイルのデコード例をPDFデータに変換します。
embed_storage
< source >( 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
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('pdfplumber.pdf.PDF')] )
例をArrow用の形式にエンコードします。
デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。
Nifti
class datasets.Nifti
< source >( decode: bool = Trueid: typing.Optional[str] = None )
実験的。 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
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray, pyarrow.lib.BinaryArray] ) → pa.StructArray
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
< source >( value: dicttoken_per_repo_id = None )
NIfTIファイルのデコード例をnibabelのイメージオブジェクトに変換します。
embed_storage
< source >( 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
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('nib.Nifti1Image')] )
例をArrow用の形式にエンコードします。
デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。
BioSequence
class datasets.BioSequence
< source >( format: str = 'fasta'decode: bool = Trueid: typing.Optional[str] = None )
実験的。 シーケンスファイルから生物学的シーケンスレコードを読み取るための 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
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
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
< source >( value: dicttoken_per_repo_id = None )
Decode example sequence file into a biopython record.
ファイルには複数のレコードが含まれる場合があります。1行が1レコードに相当するため、ここでは最初のレコードが返されます。1レコードごとに1行ずつ展開するには、パッケージに同梱されているシーケンスローダーを使用してください。
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
シーケンスファイルをArrow配列に埋め込みます。
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('SeqRecord')] )
例をArrow用の形式にエンコードします。
デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。
BioStructure
class datasets.BioStructure
< source >( format: str = 'pdb'decode: bool = Trueid: typing.Optional[str] = None )
実験的。 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
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
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
< source >( value: dicttoken_per_repo_id = None )
Decode example structure fileをBiopythonの構造に変換します。
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
構造ファイルをArrow配列に埋め込みます。
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('Structure')] )
例をArrow用の形式にエンコードします。
デコード可能な状態の場合、特徴量そのものを返し、それ以外の場合は特徴量を辞書にフラット化します。
ファイルシステム
datasets.filesystems.is_remote_filesystem
< source >( fs: AbstractFileSystem )
fsがリモートファイルシステムかどうかを確認します。
指紋
Pythonオブジェクトを入力として受け入れるハッシャー。