Datasets documentation
Основные классы
Основные классы
DatasetInfo
класс 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 )
Создайте DatasetInfo из JSON-файла в dataset_info_dir.
Эта функция обновляет все динамически сгенерированные поля (num_examples, hash, time of creation,…) объекта DatasetInfo.
Это перезапишет все предыдущие метаданные.
write_to_directory
< source >( dataset_info_dirpretty_print = Falsestorage_options: typing.Optional[dict] = None )
Запишите DatasetInfo и лицензию (если она есть) в виде файлов JSON в dataset_info_dir.
Набор данных
Базовый класс Dataset реализует Dataset, основанный на таблице Apache Arrow.
класс 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.
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 (
str) — Имя файла набора данных. - info (
DatasetInfo, необязательный) — Информация о наборе данных, например описание, цитирование и т. д. - split (
NamedSplit, необязательный) — Имя разбиения набора данных. - indices_filename (
str, необязательный) — Имена файлов индексов. - in_memory (
bool, по умолчаниюFalse) — Скопировать ли данные в оперативную память.
Создайте экземпляр Dataset, основанный на таблице Arrow с именем файла filename.
from_buffer
< source >( buffer: Bufferinfo: typing.Optional[datasets.info.DatasetInfo] = Nonesplit: typing.Optional[datasets.splits.NamedSplit] = Noneindices_buffer: typing.Optional[pyarrow.lib.Buffer] = None )
Создайте экземпляр Dataset, использующего буфер Arrow.
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) — Dataframe, содержащий набор данных. - features (Features, необязательный) — Особенности набора данных.
- info (
DatasetInfo, необязательный) — Информация о наборе данных, например описание, цитирование и т. д. - split (
NamedSplit, необязательный) — Имя разбиения набора данных. - preserve_index (
bool, необязательный) — Определяет, следует ли сохранять индекс в виде дополнительного столбца в результирующем Dataset. Значение по умолчаниюNoneсохраняет индекс как столбец, за исключениемRangeIndex, который хранится только в метаданных. Используйтеpreserve_index=True, чтобы принудительно сохранить его в виде столбца.
Преобразуйте pandas.DataFrame в pyarrow.Table, чтобы создать Dataset.
Типы столбцов в результирующей таблице Arrow выводятся из dtypes pandas.Series в DataFrame. В случае Series, не являющихся объектами, NumPy dtype преобразуется в соответствующий ему тип Arrow. В случае object необходимо угадать тип данных, анализируя Python-объекты в этой Series.
Обратите внимание, что Series с типом данных object не всегда содержат достаточно информации для однозначного определения соответствующего типа Arrow. Если тип не удаётся вывести, например, если длина DataFrame равна 0 или Series содержит только объекты None/nan, тип устанавливается в null. Этого поведения можно избежать, явно создав признаки и передав их в эту функцию.
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.
Примеры:
Создайте датасет из словаря, содержащего один список на каждый столбец:
>>> 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)Датасеты основаны на Arrow, который является столбчатым форматом, поэтому ожидается, что каждый пример имеет одинаковый тип и подтипы, а словари — одинаковые ключи и типы значений. При загрузке датасета возникает ошибка, если типы полей не совпадают, а отсутствующие поля в словарях заполняются значением None, чтобы все словари имели одинаковые ключи и типы значений.
Чтобы избежать этого и разрешить смешанные типы без ошибок, вы можете использовать on_mixed_types="use_json" или указать features= с типом Json:
>>> 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, optional) — Информация о наборе данных, например, описание, цитирование и т. д. - split (
NamedSplit, optional) — Имя сплита набора данных. - 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.
Примеры:
Создайте датасет из списка, содержащего примеры:
>>> 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)Датасеты основаны на Arrow, который является столбчатым форматом, поэтому ожидается, что каждый пример имеет одинаковый тип и подтипы, а словари — одинаковые ключи и типы значений. При загрузке датасета возникает ошибка, если типы полей не совпадают, а отсутствующие поля в словарях заполняются значением None, чтобы все словари имели одинаковые ключи и типы значений.
Чтобы избежать этого и разрешить смешанные типы без ошибок, вы можете использовать on_mixed_types="use_json" или указать features= с типом Json:
>>> 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больше одного, то все значения списков вgen_kwargsдолжны иметь одинаковую длину. Эти значения будут распределены между вызовами генератора. Количество шардов будет равно минимальному значению между самым коротким списком вgen_kwargsиnum_proc.Добавлено в 2.7.0
- split (NamedSplit, по умолчанию
Split.TRAIN) — Имя сплита, которое будет присвоено набору данных.Добавлено в 2.21.0
- fingerprint (
str, необязательный) — Отпечаток, который будет использоваться для генерации идентификатора набора данных. По умолчаниюfingerprintгенерируется путём хеширования функции-генератора и всех аргументов, что может быть медленным, если используются крупные объекты, такие как модели ИИ.Добавлено в 4.3.0
- **kwargs (дополнительные именованные аргументы) —
Именованные аргументы, передаваемые в :
GeneratorConfig.
Создание Dataset из генератора.
Загрузите данные из генератора, закэшируйте их на диске в формате Arrow и верните Dataset из данных Arrow на диске, отображённых в память.
Таблица 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()).
Имена столбцов в наборе данных.
Форма набора данных (количество столбцов, количество строк).
уникальный
< source >( column: str ) → list
Параметры
- column (
str) — Имя столбца (список всех имён столбцов — column_names).
Возвращает
list
Список уникальных элементов в указанном столбце.
Возвращает список уникальных элементов в столбце.
Это реализовано в низкоуровневом бэкенде и, как следствие, работает очень быстро.
flatten
< source >( new_fingerprint: typing.Optional[str] = Nonemax_depth = 16 ) → Dataset
Разверните таблицу. Каждый столбец со структурой (struct) разворачивается в один столбец на каждое поле структуры. Остальные столбцы остаются без изменений.
Пример:
>>> 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
})cast
< 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) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполнении 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 )
Преобразование столбца в признак для декодирования.
Пример:
>>> 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
Параметры
- column_names (
Union[str, List[str]]) — Имя столбца (столбцов), который нужно удалить. - new_fingerprint (
str, необязательный) — Новый отпечаток набора данных после преобразования. ЕслиNone, новый отпечаток вычисляется с помощью хэша предыдущего отпечатка и аргументов преобразования.
Возвращает
Копия объекта набора данных без удаляемых столбцов.
Удалите одну или несколько колонок в наборе данных, а также связанные с ними признаки.
Также можно удалить столбец с помощью map() и remove_columns, но данный метод не копирует данные оставшихся столбцов и поэтому работает быстрее.
Пример:
>>> 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
Параметры
- original_column_name (
str) — Имя переименовываемой колонки. - new_column_name (
str) — Новое имя столбца. - new_fingerprint (
str, необязательный) — Новый отпечаток набора данных после преобразования. ЕслиNone, новый отпечаток вычисляется с помощью хэша предыдущего отпечатка и аргументов преобразования.
Возвращает
Копия набора данных с переименованной колонкой.
Переименовать столбец в наборе данных и переместить признаки, связанные с исходным столбцом, под новым именем столбца.
rename_columns
< source >( column_mapping: dictnew_fingerprint: typing.Optional[str] = None ) → Dataset
Параметры
- column_mapping (
Dict[str, str]) — Сопоставление столбцов с новыми именами - new_fingerprint (
str, необязательный) — Новый отпечаток набора данных после преобразования. ЕслиNone, новый отпечаток вычисляется с помощью хэша предыдущего отпечатка и аргументов преобразования.
Возвращает
Копия набора данных с переименованными столбцами
Переименуйте несколько столбцов в наборе данных и переместите признаки, связанные с исходными столбцами, под новые имена столбцов.
select_columns
< source >( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset
Параметры
- column_names (
Union[str, List[str]]) — Имя столбца (столбцов), который нужно сохранить. - new_fingerprint (
str, необязательный) — Новый отпечаток набора данных после преобразования. ЕслиNone, новый отпечаток вычисляется с помощью хэша предыдущего отпечатка и аргументов преобразования.
Возвращает
Копия объекта набора данных, содержащая только выбранные столбцы.
Выберите одну или несколько колонок в наборе данных и связанные с ними признаки.
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')}Количество строк в наборе данных.
Переберите примеры.
Если форматирование установлено с помощью Dataset.set_format(), строки будут возвращаться в выбранном формате.
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__ (тип и столбцы). Форматирование данных выполняется на лету.
Формат type (например, “numpy”) используется для форматирования батчей при использовании __getitem__.
Также можно использовать пользовательские трансформации для форматирования с помощью set_transform().
Возможно вызвать map() после вызова set_format. Поскольку 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], необязательный) — Столбцы, которые нужно отформатировать в выводе. Если указано, входная партия преобразования содержит только эти столбцы. - output_all_columns (
bool, по умолчаниюFalse) — Сохранять в выводе также неформатированные столбцы (в виде объектов Python). Если установлено в True, остальные неформатированные столбцы сохраняются вместе с результатом преобразования.
Используйте этот трансформ для задания формата возврата __getitem__. Трансформ применяется на лету к батчам при вызове __getitem__.
Как и в случае с 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__ (тип и столбцы). Форматирование данных выполняется на лету.
Формат type (например, “numpy”) используется для форматирования батчей при использовании __getitem__.
Также можно использовать пользовательские преобразования для форматирования с помощью 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) — Столбцы, которые нужно отформатировать в выводе. Если указано, входная партия данных для преобразования содержит только эти столбцы. - output_all_columns (
bool, по умолчаниюFalse) — Сохранять в выводе также неформатированные столбцы (в виде объектов Python). Если установлено вTrue, остальные неформатированные столбцы сохраняются вместе с результатом преобразования.
Используйте этот трансформ для задания формата возврата __getitem__. Трансформ применяется на лету к батчам при вызове __getitem__.
Как и 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=Falsefunction(example: Dict[str, Any], *extra_args) -> Dict[str, Any]еслиbatched=Falseиwith_indices=Trueи/илиwith_rank=True(по одному дополнительному аргументу для каждого)function(batch: Dict[str, List]) -> Dict[str, List]еслиbatched=Trueиwith_indices=Falseиwith_rank=Falsefunction(batch: Dict[str, List], *extra_args) -> Dict[str, List]еслиbatched=Trueиwith_indices=Trueи/илиwith_rank=True(один дополнительный аргумент для каждого)
Для расширенного использования функция также может возвращать
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с соответствием всех отформатированных столбцов. - batched (
bool, по умолчаниюFalse) — Передавать вfunctionпакет примеров. - batch_size (
int, необязательный, по умолчанию1000) — Количество примеров в каждой партии, передаваемой вfunction, еслиbatched=True. Если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) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполненииmap. - features (
Optional[datasets.Features], по умолчаниюNone) — Использовать конкретный объект Features для хранения файла кэша вместо автоматически сгенерированного. - disable_nullable (
bool, по умолчаниюFalse) — Запрещает использование значений null в таблице. - fn_kwargs (
Dict, необязательный, по умолчаниюNone) — Параметры с ключами, передаваемые вfunction. - num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов для использования при многопроцессной обработке. Если значение равно None или 0, многопроцессная обработка не используется, и операция выполняется в основном процессе. Если значение больше 1, для параллельной обработки данных используются один или несколько рабочих процессов. Примечание: функция, передаваемая в map(), должна быть сериализуемой (picklable), чтобы многопроцессная обработка работала корректно (то есть предпочтительнее использовать функции, определенные на верхнем уровне модуля, а не внутри другой функции или класса).- Если
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:
- If batched is
False, then the function takes 1 example in and should return 1 example. An example is a dictionary, e.g.{"text": "Hello there !"}. - If batched is
Trueandbatch_sizeis 1, then the function takes a batch of 1 example as input and can return a batch with 1 or more examples. A batch is a dictionary, e.g. a batch of 1 example is{"text": ["Hello there !"]}. - Если
Trueиbatch_sizeравноn > 1, функция принимает на вход батч изnпримеров и может вернуть батч изnпримеров или произвольного количества примеров. Обратите внимание, что в последнем батче может быть меньшеnпримеров. Батч — это словарь, например, батч изnпримеров — это{"text": ["Hello there !"] * n}.
Если функция асинхронная, то map будет выполнять её параллельно, с максимумом в тысячу одновременных вызовов.
Рекомендуется использовать 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) — Вызываемый объект с одной из следующих сигнатур:function(example: Dict[str, Any]) -> boolеслиbatched=Falseиwith_indices=Falseиwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> bool, еслиbatched=Falseиwith_indices=Trueи/илиwith_rank=True(по одному дополнительному аргументу для каждого)function(batch: Dict[str, List]) -> List[bool]еслиbatched=Trueиwith_indices=Falseиwith_rank=Falsefunction(batch: Dict[str, List], *extra_args) -> List[bool], еслиbatched=Trueиwith_indices=Trueи/илиwith_rank=True(по одному дополнительному аргументу для каждого)
Если функция асинхронная, то
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с соответствием всем отформатированным столбцам. - batched (
bool, по умолчаниюFalse) — Передавать вfunctionпакет примеров. - batch_size (
int, необязательный, по умолчанию1000) — Количество примеров в каждой партии, передаваемой вfunction, еслиbatched = True. Еслиbatched = False, вfunctionпередаётся по одному примеру на партию. Если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) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполненииmap. - fn_kwargs (
dict, необязательный) — Параметры с ключами, передаваемые вfunction. - num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов для использования при многопроцессорной обработке. Если значение равно None или 0, многопроцессорная обработка не используется, и операция выполняется в основном процессе. Если значение больше 1, для параллельной обработки данных используются один или несколько рабочих процессов. Примечание: функция, передаваемая в map(), должна быть сериализуемой (picklable), чтобы многопроцессорная обработка работала корректно (то есть предпочтительнее использовать функции, определенные на верхнем уровне модуля, а не внутри другой функции или класса).- Если
Noneили0, многопоточность не используется, и операция выполняется в основном процессе. - Если значение больше
1, для параллельной обработки данных используются один или несколько рабочих процессов. Примечание: функция, передаваемая вmap(), должна быть сериализуемой (picklable), чтобы многопроцессность работала корректно (то есть предпочтительнее использовать функции, определённые на верхнем уровне модуля, а не внутри другой функции или класса).
- Если
- suffix_template (
str) — Если указаноcache_file_name, этот суффикс будет добавлен в конец базового имени каждого файла. Например, еслиcache_file_nameравно"processed.arrow", аrank = 1иnum_proc = 4, то итоговый файл будет"processed_00001_of_00004.arrow"для суффикса по умолчанию (по умолчанию_{rank:05d}_of_{num_proc:05d}). - new_fingerprint (
str, необязательный) — Новый отпечаток набора данных после преобразования. ЕслиNone, новый отпечаток вычисляется с помощью хэша предыдущего отпечатка и аргументов преобразования. - desc (
str, необязательный, по умолчаниюNone) — Осмысленное описание, отображаемое рядом с индикатором прогресса во время фильтрации примеров.
Примените функцию фильтрации ко всем элементам таблицы партиями и обновите таблицу так, чтобы набор данных содержал только примеры, соответствующие функции фильтрации.
Если функция асинхронная, то filter будет выполнять её параллельно, с максимумом в тысячу одновременных вызовов (настраивается).
Рекомендуется использовать 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,ndarrayorSeries) — Диапазон, список или одномерный массив целочисленных индексов для индексирования. Если индексы соответствуют непрерывному диапазону, таблица Arrow просто нарезается. Однако передача списка индексов, которые не являются непрерывными, создает отображение индексов, что значительно менее эффективно, но все же быстрее, чем пересоздание таблицы Arrow из запрошенных строк. - keep_in_memory (
bool, по умолчаниюFalse) — Хранить отображение индексов в памяти, а не записывать его в файл кэша. - indices_cache_file_name (
str, необязательный, по умолчаниюNone) — Укажите имя пути для файла кэша. Используется для хранения соответствия индексов вместо автоматически сгенерированного имени файла кэша. - writer_batch_size (
int, по умолчанию1000) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполнении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, оно применяется к сортировке всех имён столбцов. В противном случае необходимо предоставить список значений bool с той же длиной и порядком, что и column_names. - null_placement (
str, по умолчаниюat_end) — Размещает значенияNoneв начале, если указаноat_startилиfirstили в конце, если указаноat_endилиlastДобавлено в 1.14.2
- keep_in_memory (
bool, по умолчаниюFalse) — Хранить отсортированные индексы в памяти, а не записывать их в файл кэша. - load_from_cache_file (
Optional[bool], по умолчаниюTrue, если кэширование включено) — Если можно определить файл кэша, содержащий отсортированные индексы, используйте его вместо повторного вычисления. - indices_cache_file_name (
str, необязательный, по умолчаниюNone) — Укажите имя пути для файла кэша. Используется для хранения отсортированных индексов вместо автоматически сгенерированного имени файла кэша. - writer_batch_size (
int, по умолчанию1000) — Количество строк на одну операцию записи для модуля записи кэш-файла. Более высокое значение приводит к меньшим кэш-файлам, более низкое — к меньшему потреблению временной памяти. - new_fingerprint (
str, необязательный, по умолчаниюNone) — Новый отпечаток набора данных после преобразования. ЕслиNone, новый отпечаток вычисляется с помощью хэша предыдущего отпечатка и аргументов преобразования
Создайте новый набор данных, отсортированный по одному или нескольким столбцам.
Пример:
>>> 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]shuffle
< 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, необязательный) — Значение seed для инициализации стандартного BitGenerator, еслиgenerator=None. Если указаноNone, то непредсказуемая энтропия будет получена из ОС. Если передано значение типаintилиarray_like[ints], оно будет передано в SeedSequence для вывода начального состояния BitGenerator. - generator (
numpy.random.Generator, необязательный) — Генератор случайных чисел Numpy, используемый для вычисления перестановки строк набора данных. Еслиgenerator=None(по умолчанию), используетсяnp.random.default_rng(генератор битов по умолчанию (PCG64) в NumPy). - keep_in_memory (
bool, по умолчаниюFalse) — Хранить перемешанные индексы в памяти, а не записывать их в файл кэша. - load_from_cache_file (
Optional[bool], по умолчаниюTrue, если кэширование включено) — Если можно определить файл кэша, содержащий перемешанные индексы, используйте его вместо повторного вычисления. - indices_cache_file_name (
str, необязательный) — Укажите имя пути для файла кэша. Используется для хранения перемешанных индексов вместо автоматически сгенерированного имени файла кэша. - writer_batch_size (
int, по умолчанию1000) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполненииmap. - new_fingerprint (
str, необязательный, по умолчаниюNone) — Новый отпечаток набора данных после преобразования. ЕслиNone, новый отпечаток вычисляется с помощью хэша предыдущего отпечатка и аргументов преобразования.
Создайте новый Dataset, в котором строки перемешаны.
В настоящее время перемешивание использует генераторы случайных чисел numpy. Вы можете передать экземпляр NumPy BitGenerator для использования или seed для инициализации генератора случайных чисел по умолчанию в 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пропустить
< source >( n: int )
Создайте новый Dataset, который пропускает первые n элементов.
Пример:
>>> 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 .'}]Создайте новый Dataset только с первыми n элементами.
Пример:
>>> 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также равноNone, оно будет установлено в0.25. - train_size (
Union[float, int, None], необязательный) — Размер обучающей выборки Еслиfloat, значение должно находиться в диапазоне от0.0до1.0и указывать долю датасета, включаемую в обучающую выборку. Еслиint, указывает абсолютное количество обучающих примеров. ЕслиNone, значение автоматически устанавливается как дополнение к размеру тестовой выборки. - shuffle (
bool, необязательный, по умолчаниюTrue) — Следует ли перемешивать данные перед разделением. - stratify_by_column (
str, необязательный, по умолчаниюNone) — Имя столбца с метками, используемого для стратифицированного разбиения данных. - seed (
int, необязательный) — Значение seed для инициализации стандартного BitGenerator, еслиgenerator=None. Если указаноNone, то непредсказуемая энтропия будет получена из ОС. Если передано значение типаintилиarray_like[ints], оно будет передано в SeedSequence для вывода начального состояния BitGenerator. - generator (
numpy.random.Generator, необязательный) — Генератор случайных чисел Numpy, используемый для вычисления перестановки строк набора данных. Еслиgenerator=None(по умолчанию), используетсяnp.random.default_rng(генератор битов по умолчанию (PCG64) в NumPy). - keep_in_memory (
bool, по умолчаниюFalse) — Хранить индексы разбиений в памяти, а не записывать их в файл кэша. - load_from_cache_file (
Optional[bool], по умолчаниюTrue, если кэширование включено) — Если можно определить файл кэша, содержащий индексы разбиений, используйте его вместо повторного вычисления. - train_cache_file_name (
str, необязательный) — Укажите имя пути для файла кэша. Используется для хранения индексов обучающей выборки вместо автоматически сгенерированного имени файла кэша. - test_cache_file_name (
str, необязательный) — Укажите имя пути для файла кэша. Используется для хранения индексов тестовой выборки вместо автоматически сгенерированного имени файла кэша. - writer_batch_size (
int, по умолчанию1000) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполненииmap. - train_new_fingerprint (
str, необязательный, по умолчаниюNone) — Новый отпечаток (fingerprint) обучающей выборки после преобразования. ЕслиNone, новый отпечаток вычисляется с помощью хэша предыдущего отпечатка и аргументов преобразования - test_new_fingerprint (
str, необязательный, по умолчаниюNone) — Новый отпечаток тестового набора данных после преобразования. ЕслиNone, новый отпечаток вычисляется с помощью хэша предыдущего отпечатка и аргументов преобразования
Возвращает словарь (datasets.DatasetDict) с двумя случайными подмножествами для обучения и тестирования (train и test — разбиения Dataset).
Разбиения создаются из набора данных в соответствии с параметрами test_size, train_size и shuffle.
Этот метод похож на train_test_split из scikit-learn.
Пример:
>>> 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
})
})shard
< 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) — Это касается только отображения индексов. Количество индексов на операцию записи для модуля записи файла кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений при обработке, а более низкое значение потребляет меньше временной памяти во время выполненияmap.
Возвращает index-й фрагмент из набора данных, разделённого на num_shards частей.
Это детерминированное разбиение на части. 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)]) возвращает набор данных с тем же порядком элементов, что и в исходном.
Примечание: n должно быть меньше или равно количеству элементов в наборе данных len(dataset).
С другой стороны, dataset.shard(n, i, contiguous=False) содержит все элементы набора данных, для которых индекс по модулю n = i.
Убедитесь, что операция разделения на шарды выполняется до применения любого оператора, использующего случайность (например, shuffle).
Лучше всего использовать оператор разделения на шарды на раннем этапе конвейера обработки данных.
Пример:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="validation")
>>> ds
Dataset({
features: ['text', 'label'],
num_rows: 1066
})
>>> ds = ds.shard(num_shards=2, index=0)
>>> ds
Dataset({
features: ['text', 'label'],
num_rows: 533
})repeat
< source >( num_times: int )
Создайте новый Dataset, который повторяет базовый набор данных num_times раз.
Как и в случае с itertools.repeat, повторение один раз просто возвращает полный набор данных.
Пример:
>>> 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. Можно использовать имена столбцов, создаваемыеcollate_fn, которые отсутствуют в исходном датасете. - shuffle(
bool, по умолчаниюFalse) — Перемешивает порядок элементов датасета при загрузке. РекомендуетсяTrueдля обучения,Falseдля валидации/оценки. - drop_remainder(
bool, по умолчаниюFalse) — Отбрасывает последний неполный батч при загрузке. Гарантирует, что все батчи, возвращаемые набором данных, будут иметь одинаковую длину по измерению батча. - collate_fn(
Callable, необязательный) — Функция или вызываемый объект (например,DataCollator), который объединяет списки образцов в батч. - collate_fn_args (
Dict, необязательный) — Необязательныйdictс аргументами по именам, которые передаются вcollate_fn. - label_cols (
List[str]илиstr, по умолчаниюNone) — Столбец(ы) набора данных, которые загружаются как метки. Обратите внимание, что многие модели вычисляют потерю самостоятельно, а не через Keras, в этом случае передача меток здесь необязательна, при условии что они присутствуют во входныхcolumns. - prefetch (
bool, по умолчаниюTrue) — Указывает, следует ли запускать загрузчик данных в отдельном потоке и поддерживать небольшой буфер батчей для обучения. Повышает производительность, позволяя загружать данные в фоне, пока модель обучается. - num_workers (
int, по умолчанию0) — Количество рабочих процессов для загрузки набора данных. - num_test_batches (
int, по умолчанию20) — Количество батчей, используемых для определения сигнатуры вывода набора данных. Чем больше это число, тем точнее будет сигнатура, но тем дольше займёт создание набора данных.
Создайте tf.data.Dataset на основе базового Dataset. Этот tf.data.Dataset будет загружать и формировать батчи из Dataset и подходит для передачи в методы, такие как model.fit() или model.predict(). Датасет будет возвращать dicts как для входных данных, так и для меток, если только dict не содержит единственный ключ, в этом случае вместо него возвращается «сырой» tf.Tensor.
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) — Идентификатор репозитория, в который выполняется загрузка, в следующем формате:<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, optional) — Имя сплита, которое будет присвоено этому набору данных. По умолчаниюself.split. - data_dir (
str, необязательный) — Имя каталога, который будет содержать загруженные файлы данных. По умолчанию используетсяconfig_name, если он отличается от «default», иначе «data».Добавлено в 2.17.0
- commit_message (
str, необязательный) — Сообщение для коммита при отправке. По умолчанию —"Upload dataset". - commit_description (
str, необязательный) — Описание коммита, который будет создан. Кроме того, описание PR, если PR будет создан (create_prравно True).Добавлено в 2.16.0
- private (
bool, optional) — Определяет, следует ли сделать репозиторий приватным. Если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) — Включает ли встраивание байтов файлов в шарды. В частности, перед push для полей типа: - num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов при подготовке и загрузке набора данных. Это полезно, если набор данных состоит из множества образцов или медиафайлов для встраивания. Использует контекст «spawn» для работы с hf_xet, rust-клиентом для быстрой загрузки на HF. Многопроцессорность по умолчанию отключена.Добавлено в 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 (
intorstr, необязательный, по умолчанию"500MB") — Максимальный размер фрагментов набора данных, сохраняемых в файловую систему. Если значение указано в виде строки, оно должно состоять из цифр, за которыми следует единица измерения (например,"50MB"). - num_shards (
int, необязательный) — Количество шардов для записи. По умолчанию количество шардов зависит отmax_shard_sizeиnum_proc.Добавлено в 2.8.0
- num_proc (
int, необязательный) — Количество процессов при загрузке и локальном создании набора данных. По умолчанию многопоточность отключена.Добавлено в 2.8.0
- storage_options (
dict, необязательный) — Пары ключ/значение, передаваемые в файловую систему, если она используется.Добавлено в 2.8.0
Сохраняет набор данных в каталог набора данных или в файловую систему с использованием любой реализации fsspec.spec.AbstractFileSystem.
Для данных Image, Audio и Video:
Все данные Image(), Audio() и Video() хранятся в файлах arrow. Если вы хотите хранить пути или URL, используйте тип Value(“string”).
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 или DatasetDict
- Если
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) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполнении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 )
Параметры
- batch_size (
int, необязательный) — Размер (количество строк) батчей, еслиbatchedравноTrue. По умолчанию —datasets.config.DEFAULT_MAX_BATCH_SIZE. - batched (
bool) — УстановитеTrue, чтобы вернуть генератор, выдающий датасет батчами поbatch_sizeстрок. По умолчаниюFalse(возвращает весь датасет сразу).
Возвращает набор данных в виде pandas.DataFrame. Также может возвращать генератор для больших наборов данных.
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Параметры
- batch_size (
int, необязательный) — размер (количество строк) батчей, еслиbatchedравноTrue. По умолчанию —datasets.config.DEFAULT_MAX_BATCH_SIZE. - batched (
bool) — УстановитеTrue, чтобы вернуть генератор, выдающий датасет батчами поbatch_sizeстрок. По умолчаниюFalse(возвращает весь датасет сразу).
Возвращает набор данных в виде словаря Python. Также может возвращать генератор для больших наборов данных.
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
Параметр
indexпо умолчанию принимает значениеFalse, еслиorientравен"split"или"table".Если вы хотите записать индекс, передайте
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, необязательный) — Размер батча, который загружается в память и записывается за один раз. По умолчанию настраивается на группы строк с максимальным размером в байтах без сжатия «100MB», определённым вdatasets.config.MAX_ROW_GROUP_SIZE. - storage_options (
dict, необязательный) — Пары ключ/значение, передаваемые в файловую систему, если она используется.Добавлено в 2.19.0
- **parquet_writer_kwargs (дополнительные именованные аргументы) —
Параметры для передачи в
pyarrow.parquet.ParquetWriterPyArrow.
Возвращает
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.IterableDataset из набора данных в стиле map datasets.Dataset. Это эквивалентно загрузке набора данных в режиме потоковой обработки с помощью datasets.load_dataset(), но значительно быстрее, поскольку данные передаются из локальных файлов.
В отличие от наборов данных map-style, итерируемые наборы данных являются ленивыми и допускают только итерацию (например, с помощью цикла for). Поскольку они читаются последовательно в циклах обучения, итерируемые наборы данных значительно быстрее наборов данных map-style. Все преобразования, применяемые к итерируемым наборам данных, такие как фильтрация или обработка, выполняются на лету при начале итерации по набору данных.
Тем не менее, перемешать итерируемое датасет можно с помощью 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:
... passС использованием PyTorch DataLoader:
>>> import torch
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.filter(filter_fn).map(process_fn)
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4) # will assign 64 / 4 = 16 shards to each worker to load, filter and process when you start iterating
>>> for example in ids:
... passС PyTorch DataLoader и перемешиванием:
>>> import torch
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.shuffle(buffer_size=10_000) # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4) # will assign 64 / 4 = 16 shards from the shuffled list of shards to each worker when you start iterating
>>> for example in ids:
... passВ распределённой конфигурации, такой как PyTorch DDP с PyTorch DataLoader и перемешиванием
>>> from datasets.distributed import split_dataset_by_node
>>> ids = ds.to_iterable_dataset(num_shards=512)
>>> ids = ids.shuffle(buffer_size=10_000, seed=42) # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> ids = split_dataset_by_node(ds, world_size=8, rank=0) # will keep only 512 / 8 = 64 shards from the shuffled lists of shards when you start iterating
>>> dataloader = torch.utils.data.DataLoader(ids, num_workers=4) # will assign 64 / 4 = 16 shards from this node's list of shards to each worker when you start iterating
>>> for example in ids:
... passС перемешиванием и несколькими эпохами:
>>> ids = ds.to_iterable_dataset(num_shards=64)
>>> ids = ids.shuffle(buffer_size=10_000, seed=42) # will shuffle the shards order and use a shuffle buffer when you start iterating
>>> for epoch in range(n_epochs):
... ids.set_epoch(epoch) # will use effective_seed = seed + epoch to shuffle the shards and for the shuffle buffer when you start iterating
... for example in ids:
... 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/идентификатор индекса. Этоindex_name, который используется для вызова get_nearest_examples() или search(). По умолчанию соответствуетcolumn. - device (
Union[int, List[int]], необязательный) — Если передано положительное целое число, это индекс используемого GPU. Если передано отрицательное целое число, используются все GPU. Если передан список положительных целых чисел, выполняется только на указанных GPU. По умолчанию используется CPU. - string_factory (
str, optional) — Передаётся в фабрику индексов 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) — Тип данных (dtype) индексируемых массивов numpy. По умолчаниюnp.float32.
Добавьте плотный индекс с помощью Faiss для быстрого поиска.
По умолчанию индекс строится по векторам указанной колонки.
Вы можете указать device, если хотите выполнять работу на GPU (device должен быть индексом GPU).
Подробнее о Faiss можно узнать здесь:
- Для string factory
Пример:
>>> 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для создания индекса Faiss будут использоватьсяexternal_arrays. - index_name (
str) —index_name/идентификатор индекса. Этоindex_name, который используется для вызова get_nearest_examples() или search(). - device (необязательный
Union[int, List[int]], optional) — Если передано положительное целое число, это индекс используемого GPU. Если передано отрицательное целое число, используются все GPU. Если передан список положительных целых чисел, выполняется только на указанных GPU. По умолчанию используется CPU. - string_factory (
str, optional) — Передаётся в фабрику индексов 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) — Тип данных (dtype) индексируемых массивов numpy. По умолчанию — np.float32.
Добавьте плотный индекс с помощью Faiss для быстрого поиска.
Индекс создаётся на основе векторов из external_arrays.
Вы можете указать device, если хотите выполнять работу на GPU (device должен быть индексом GPU).
Подробнее о Faiss можно узнать здесь:
- Для string factory
save_faiss_index
< source >( index_name: strfile: typing.Union[str, pathlib.PurePath]storage_options: typing.Optional[dict] = None )
Параметры
- index_name (
str) — Имя/идентификатор индекса. Это имя индекса, используемое для вызова.get_nearestили.search. - file (
str) — Путь к сериализованному индексу faiss на диске или удалённый URI (например,"s3://my-bucket/index.faiss"). - storage_options (
dict, необязательный) — Пары ключ/значение, передаваемые в файловую систему, если она используется.Добавлено в 2.11.0
Сохранить 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) — Имя/идентификатор индекса. Это имя индекса, используемое для вызова.get_nearestили.search. - 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 с диска.
Если вам требуется дополнительная настройка, вы можете получить доступ к объекту индекса faiss, выполнив .get_index(index_name).faiss_index, чтобы адаптировать его под свои задачи.
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, необязательный) — Клиент elasticsearch, используемый для создания индекса, если host и port равныNone. - 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, необязательный) — Клиент elasticsearch, используемый для создания индекса, если host и port равныNone. - es_index_config (
dict, необязательный) — Конфигурация индекса elasticsearch. Конфигурация по умолчанию:
Загрузите существующий текстовый индекс с помощью ElasticSearch для быстрого поиска.
Перечислите colindex_nameumns/идентификаторы всех подключенных индексов.
Перечислите index_name/идентификаторы всех подключенных индексов.
drop_index
< source >( index_name: str )
Удалите индекс с указанной колонкой.
поиск
< 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— текстовый индекс, или в виде массива numpy, еслиindex_name— векторный индекс. - 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— текстовый индекс, или в виде массива numpy, еслиindex_name— векторный индекс. - 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) — Имя/идентификатор индекса. - query (
Union[str, np.ndarray]) — Запрос в виде строки, еслиindex_name— текстовый индекс, или в виде массива numpy, еслиindex_name— векторный индекс. - 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— текстовый индекс, или в виде массива numpy, еслиindex_name— векторный индекс. - 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.
Читает файлы CSV, кэширует данные в формате Arrow на диске и возвращает Dataset из данных Arrow, отображённых в память, на диске.
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.
Прочитайте файлы JSON, закэшируйте данные в формате Arrow на диске и верните Dataset из данных Arrow, отображённых в память, на диске.
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 перед их возвратом. - 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.
Читает файлы Parquet, кэширует данные в формате Arrow на диске и возвращает Dataset из данных Arrow, отображённых в память, на диске.
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”) — Определяет, загружать ли данные построчно, по абзацам или по документам. По умолчанию одна строка в наборе данных соответствует одной строке текста. - **kwargs (дополнительные именованные аргументы) —
Именованные аргументы, передаваемые в
TextConfig.
Создание набора данных из текстового файла или файлов.
Прочитайте текстовые файлы, закэшируйте данные в формате Arrow на диске и верните Dataset из данных Arrow, отображенных в память, на диске.
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-запроса или таблицы базы данных.
Запросите базу данных SQL, закэшируйте данные в формате Arrow на диске и верните Dataset из данных Arrow на диске, отображённых в память.
Пример:
>>> # 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.
Это полезно, если вы хотите убедиться, что предсказанные моделью метки согласованы с набором данных.
Выравнивание выполняется с использованием названий меток в нижнем регистре.
Пример:
>>> # 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 )
Параметры
- dsets (
List[datasets.Dataset]илиList[datasets.IterableDataset]) — Список Datasets для конкатенации. - info (
DatasetInfo, необязательный) — Информация о наборе данных, например описание, цитирование и т. д. - split (
NamedSplit, необязательный) — Имя разбиения набора данных. - axis (
{0, 1}, по умолчанию0) — ось, по которой выполняется конкатенация, где0означает по строкам (вертикально), а1означает по столбцам (горизонтально).Добавлено в 1.6.0
Соедините несколько наборов данных (источников) в один набор данных.
Используйте axis=0 для вертикального объединения (по умолчанию) или axis=1 для горизонтального объединения.
Примечание для итерируемых наборов данных:
- if axis=0, the resulting dataset’s
num_shardsis the sum of each dataset’snum_shards. - if 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) — Если указано, новый набор данных формируется путём выборки примеров из одного источника за раз в соответствии с этими вероятностями. - seed (
int, необязательный, по умолчаниюNone) — Случайное зерно, используемое для выбора источника для каждого примера. - info (DatasetInfo, необязательный) —
Информация о наборе данных, например, описание, цитирование и т. д.
Добавлено в 2.4.0
- split (NamedSplit, необязательный) —
Имя сплита набора данных.
Добавлено в 2.4.0
- stopping_strategy (
str, по умолчаниюfirst_exhausted) — Сейчас предлагается три стратегии:first_exhausted,all_exhaustedиall_exhausted_without_replacement. По умолчаниюfirst_exhaustedявляется стратегией недообучения (undersampling), то есть формирование набора данных останавливается, как только один из наборов исчерпывает свои примеры. Если стратегия —all_exhausted, мы используем стратегию переобучения (oversampling), то есть формирование набора данных останавливается, как только каждый пример из каждого набора был добавлен хотя бы один раз. Если стратегия —all_exhausted_without_replacementмы гарантируем, что каждый пример в каждом наборе извлекается только один раз. Обратите внимание, что если стратегия —all_exhausted, размер чередующегося набора данных может стать огромным:- без вероятностей, в результирующем наборе данных будет
max_length_datasets*nb_datasetобразцов. - при заданных вероятностях итоговый набор данных будет содержать больше примеров, если у некоторых наборов данных вероятность выборки действительно низкая.
- без вероятностей, в результирующем наборе данных будет
Возвращает
Тип возвращаемого значения зависит от параметра datasets. Dataset, если на вход передан список Dataset, IterableDataset, если на вход передан список IterableDataset.
Переплетите несколько наборов данных (источников) в один набор данных. Новый набор данных формируется путём чередования источников для получения примеров.
Эту функцию можно использовать со списком объектов Dataset или со списком объектов IterableDataset.
- Если
probabilitiesравноNone(по умолчанию), новый набор данных формируется путём циклического перебора каждого источника для получения примеров. - Если
probabilitiesне равноNone, новый набор данных формируется путём получения примеров из случайного источника по одному согласно заданным вероятностям.
Результирующий датасет завершается, когда один из исходных датасетов исчерпывает примеры, за исключением случая, когда oversampling равно True, в котором случае результирующий датасет завершается, когда все датасеты исчерпали примеры хотя бы один раз.
Примечание для итерируемых наборов данных:
- Значение
num_shardsрезультирующего набора данных равно минимальному значениюnum_shardsсреди всех исходных наборов, что обеспечивает хорошую параллельность. Если в некоторых наборах данных очень мало шардов, вы можете использовать IterableDataset.reshard(). - В распределённой конфигурации или в рабочих процессах PyTorch DataLoader стратегия остановки применяется для каждого процесса. Поэтому стратегия “first_exhausted” для итерируемого набора данных с шардированием может сгенерировать меньше примеров в общей сложности (до 1 отсутствующего примера на поднабор данных на рабочий процесс).
Пример:
Для обычных наборов данных (map-style):
>>> 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.
Разделите набор данных для узла с рангом rank в пуле узлов размером world_size.
Для наборов данных в стиле карты:
Каждому узлу назначается фрагмент данных, например, узлу с рангом 0 выделяется первый фрагмент набора данных. Для максимизации пропускной способности загрузки данных фрагменты, по возможности, формируются из непрерывных данных на диске.
Для итерируемых наборов данных:
Стратегия разбиения strategy может принимать значения "auto", "shards" или "examples":
"shards": шарды равномерно распределяются по узлам"examples": каждый узел хранит 1 пример изworld_size, пропуская остальные примеры"auto"(по умолчанию): использует"shards", если количество шардов в наборе данных является делителемworld_size(то есть еслиdataset.num_shards % world_size == 0), что является наиболее оптимизированным вариантом. В противном случае использует"examples".
Если вы перемешиваете итерируемый набор данных в распределённой конфигурации, убедитесь, что вы задали фиксированное значение
seedв IterableDataset.shuffle(), чтобы на каждом узле использовался один и тот же перемешанный список шардов, и узел знал, какие шарды ему следует пропустить.
При применении трансформаций к набору данных результаты сохраняются в кэш-файлах. Механизм кэширования позволяет повторно загрузить существующий кэш-файл, если он уже был вычислен.
Повторная загрузка набора данных возможна, поскольку файлы кэша именуются на основе отпечатка (fingerprint) набора данных, который обновляется после каждого преобразования.
Если отключено, библиотека больше не будет перезагружать файлы кэшированных наборов данных при применении преобразований к наборам данных. Более точно, если кэширование отключено:
- файлы кэша всегда пересоздаются
- файлы кэша записываются во временный каталог, который удаляется при закрытии сессии
- файлы кэша получают имена на основе случайного хэша, а не отпечатка данных
- используйте save_to_disk(), чтобы сохранить преобразованный набор данных, иначе он будет удалён при закрытии сессии
- Кэширование не влияет на load_dataset(). Если вы хотите создать набор данных заново, используйте параметр
download_modeв load_dataset().
При применении трансформаций к набору данных результаты сохраняются в кэш-файлах. Механизм кэширования позволяет повторно загрузить существующий кэш-файл, если он уже был вычислен.
Повторная загрузка набора данных возможна, поскольку файлы кэша именуются на основе отпечатка (fingerprint) набора данных, который обновляется после каждого преобразования.
Если отключено, библиотека больше не будет перезагружать файлы кэшированных наборов данных при применении преобразований к наборам данных. Более точно, если кэширование отключено:
- файлы кэша всегда пересоздаются
- файлы кэша записываются во временный каталог, который удаляется при закрытии сессии
- файлы кэша получают имена на основе случайного хэша, а не отпечатка данных
- используйте save_to_disk(), чтобы сохранить преобразованный набор данных, иначе он будет удалён при закрытии сессии
- Кэширование не влияет на load_dataset(). Если вы хотите создать набор данных заново, используйте параметр
download_modeв load_dataset().
При применении трансформаций к набору данных результаты сохраняются в кэш-файлах. Механизм кэширования позволяет повторно загрузить существующий кэш-файл, если он уже был вычислен.
Повторная загрузка набора данных возможна, поскольку файлы кэша именуются на основе отпечатка (fingerprint) набора данных, который обновляется после каждого преобразования.
Если отключено, библиотека больше не будет перезагружать файлы кэшированных наборов данных при применении преобразований к наборам данных. Более точно, если кэширование отключено:
- файлы кэша всегда пересоздаются
- файлы кэша записываются во временный каталог, который удаляется при закрытии сессии
- файлы кэша получают имена на основе случайного хэша, а не отпечатка данных
- используйте save_to_disk(), чтобы сохранить преобразованный набор данных, иначе он будет удалён при закрытии сессии
- Кэширование не влияет на load_dataset(). Если вы хотите создать набор данных заново, используйте параметр
download_modeв load_dataset().
класс datasets.Column
< source >( source: typing.Union[ForwardRef('Dataset'), ForwardRef('Column')]column_name: str )
Итерируемый объект для конкретного столбца Dataset.
Пример:
DatasetDict
Словарь, в котором ключами являются имена разбиений (например, ‘train’, ‘test’), а значениями — объекты Dataset.
Также он содержит методы преобразования набора данных, такие как map или filter, для обработки всех разбиений сразу.
Словарь (dict со str: datasets.Dataset) с методами трансформации датасетов (map, filter и т. д.)
Таблицы 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'}]}Количество столбцов в каждом разбиении набора данных.
Количество строк в каждом разделе набора данных.
Имена столбцов в каждом разбиении набора данных.
Форма каждого разбиения набора данных (количество строк, количество столбцов).
уникальный
< source >( column: str ) → Dict[str, list]
Параметры
- column (
str) — имя столбца (список всех имён столбцов — column_names)
Возвращает
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) — с одним из следующих сигнатур:function(example: Dict[str, Any]) -> Dict[str, Any]еслиbatched=Falseиwith_indices=Falsefunction(example: Dict[str, Any], indices: int) -> Dict[str, Any]еслиbatched=Falseиwith_indices=Truefunction(batch: Dict[str, list]) -> Dict[str, list]еслиbatched=Trueиwith_indices=Falsefunction(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) — Передавать split процесса вfunction. Обратите внимание, что в этом случае подписьfunctionдолжна бытьdef function(example[, idx], split): .... - input_columns (
[Union[str, list[str]]], необязательный, по умолчаниюNone) — Столбцы, которые передаются вfunctionв качестве позиционных аргументов. ЕслиNone, в качестве одного аргумента передаётся словарь, отображающий все отформатированные столбцы. - batched (
bool, по умолчаниюFalse) — Передавать вfunctionпакет примеров. - batch_size (
int, необязательный, по умолчанию1000) — Количество примеров в каждой партии, передаваемых вfunction, еслиbatched=True. Если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для каждого набора данных в словаре наборов данных. - writer_batch_size (
int, по умолчанию1000) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполненииmap. - features (
[datasets.Features], необязательный, по умолчаниюNone) — Использовать конкретный Features для хранения файла кэша вместо автоматически сгенерированного. - disable_nullable (
bool, по умолчаниюFalse) — Запрещает использование значений null в таблице. - fn_kwargs (
Dict, необязательный, по умолчаниюNone) — Параметры с ключами, передаваемые вfunction - num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов для использования при многопроцессорной обработке. Если значение равно None или 0, многопроцессорная обработка не используется, и операция выполняется в основном процессе. Если значение больше 1, для параллельной обработки данных используются один или несколько рабочих процессов. Примечание: функция, передаваемая в map(), должна быть сериализуемой (picklable), чтобы многопроцессорная обработка работала корректно (то есть предпочтительнее использовать функции, определенные на верхнем уровне модуля, а не внутри другой функции или класса).- Если
Noneили0, многопоточность не используется, и операция выполняется в основном процессе. - Если значение больше
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
Примените функцию ко всем примерам в таблице (по отдельности или партиями) и обновите таблицу. Если ваша функция возвращает столбец, который уже существует, он будет перезаписан. Преобразование применяется ко всем наборам данных в словаре наборов данных.
Вы можете указать, должна ли функция обрабатываться батчами или нет, с помощью параметра batched:
- If batched is
False, then the function takes 1 example in and should return 1 example. An example is a dictionary, e.g.{"text": "Hello there !"}. - If batched is
Trueandbatch_sizeis 1, then the function takes a batch of 1 example as input and can return a batch with 1 or more examples. A batch is a dictionary, e.g. a batch of 1 example is{"text": ["Hello there !"]}. - Если
Trueиbatch_sizeравноn > 1, функция принимает на вход батч изnпримеров и может вернуть батч изnпримеров или произвольного количества примеров. Обратите внимание, что в последнем батче может быть меньшеnпримеров. Батч — это словарь, например, батч изnпримеров — это{"text": ["Hello there !"] * n}.
Если функция асинхронная, то map будет выполнять её параллельно, с максимумом в тысячу одновременных вызовов.
Рекомендуется использовать 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) — Вызываемый объект с одной из следующих сигнатур:function(example: Dict[str, Any]) -> boolеслиbatched=Falseиwith_indices=Falseиwith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> bool, еслиbatched=Falseиwith_indices=Trueи/илиwith_rank=True(по одному дополнительному аргументу для каждого)function(batch: Dict[str, list]) -> list[bool]еслиbatched=Trueиwith_indices=Falseиwith_rank=Falsefunction(batch: Dict[str, list], *extra_args) -> list[bool], еслиbatched=Trueиwith_indices=Trueи/илиwith_rank=True(по одному дополнительному аргументу для каждого)
Если функция не указана, по умолчанию используется функция, всегда возвращающая
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, в качестве одного аргумента передаётся словарь, отображающий все отформатированные столбцы. - batched (
bool, по умолчаниюFalse) — Передавать вfunctionпакет примеров. - batch_size (
int, необязательный, по умолчанию1000) — Количество примеров в каждой партии, передаваемой вfunction, еслиbatched=True. Если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для каждого набора данных в словаре наборов данных. - writer_batch_size (
int, по умолчанию1000) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполненииmap. - fn_kwargs (
Dict, необязательный, по умолчаниюNone) — Параметры с ключами, передаваемые вfunction - num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов для использования при многопроцессорной обработке. Если значение равно None или 0, многопроцессорная обработка не используется, и операция выполняется в основном процессе. Если значение больше 1, для параллельной обработки данных используются один или несколько рабочих процессов. Примечание: функция, передаваемая в map(), должна быть сериализуемой (picklable), чтобы многопроцессорная обработка работала корректно (то есть предпочтительнее использовать функции, определенные на верхнем уровне модуля, а не внутри другой функции или класса).- Если
Noneили0, многопоточность не используется, и операция выполняется в основном процессе. - Если значение больше
1, для параллельной обработки данных используются один или несколько рабочих процессов. Примечание: функция, передаваемая вmap(), должна быть сериализуемой (picklable), чтобы многопроцессность работала корректно (то есть предпочтительнее использовать функции, определённые на верхнем уровне модуля, а не внутри другой функции или класса).
- Если
- desc (
str, необязательный, по умолчаниюNone) — Осмысленное описание, отображаемое рядом с индикатором прогресса во время фильтрации примеров.
Примените функцию фильтра ко всем элементам таблицы партиями и обновите таблицу так, чтобы набор данных содержал только примеры, соответствующие функции фильтра. Преобразование применяется ко всем наборам данных в словаре наборов данных.
Пример:
>>> 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, оно применяется к сортировке всех имён столбцов. В противном случае необходимо предоставить список значений bool с той же длиной и порядком, что и column_names. - null_placement (
str, по умолчаниюat_end) — Размещает значенияNoneв начале, если указаноat_startилиfirst, или в конце, если указано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для каждого набора данных в словаре наборов данных. - writer_batch_size (
int, по умолчанию1000) — Количество строк на одну операцию записи для модуля записи кэш-файла. Более высокое значение приводит к меньшим кэш-файлам, более низкое — к меньшему потреблению временной памяти.
Создайте новый набор данных, отсортированный по одному или нескольким столбцам.
Пример:
>>> 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]shuffle
< 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, необязательный) — Значение seed для инициализации стандартного BitGenerator, еслиgenerator=None. Если указаноNone, то непредсказуемая энтропия будет получена из ОС. Если передано значение типаintилиarray_like[ints], оно будет передано в SeedSequence для вывода начального состояния BitGenerator. В словаре датасета можно указать по одномуseedдля каждого датасета. - seed (
int, необязательный) — Значение seed для инициализации стандартного BitGenerator, еслиgenerator=None. Псевдоним для seeds (выбрасываетсяValueError, если заданы оба параметра). - generators (
Dict[str, *optional*, np.random.Generator]) — Генератор случайных чисел Numpy, используемый для вычисления перестановки строк набора данных. Еслиgenerator=None(по умолчанию), используетсяnp.random.default_rng(генератор битов по умолчанию (PCG64) в NumPy). Необходимо указать одинgeneratorдля каждого набора данных в словаре наборов данных. - keep_in_memory (
bool, по умолчаниюFalse) — Держать датасет в памяти, а не записывать его в файл кэша. - load_from_cache_file (
Optional[bool], по умолчаниюTrue, если кэширование включено) — Если можно определить файл кэша, содержащий текущий результат вычислений изfunction, используйте его вместо повторного вычисления. - indices_cache_file_names (
Dict[str, str], необязательный) — Укажите имя пути для файла кэша. Используется для хранения соответствий индексов вместо автоматически сгенерированного имени файла кэша. Необходимо указать одноcache_file_nameдля каждого набора данных в словаре наборов данных. - writer_batch_size (
int, по умолчанию1000) — Количество строк на одну операцию записи для модуля записи в файл кэша. Это значение представляет собой хороший компромисс между использованием памяти во время обработки и скоростью обработки. Более высокое значение уменьшает количество обращений к данным, а более низкое значение потребляет меньше временной памяти при выполненииmap.
Создайте новый Dataset, в котором строки перемешаны.
Преобразование применяется ко всем наборам данных в словаре наборов данных.
В настоящее время перемешивание использует генераторы случайных чисел numpy. Вы можете передать экземпляр NumPy BitGenerator для использования или seed для инициализации генератора случайных чисел по умолчанию в 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__ (тип и столбцы).
Формат задаётся для каждого набора данных в словаре наборов данных.
Возможно вызвать map после вызова set_format. Поскольку 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__ (тип и столбцы). Форматирование данных выполняется на лету.
Формат type (например, “numpy”) используется для форматирования батчей при использовании __getitem__.
Формат устанавливается для каждого набора данных в словаре наборов данных.
Также можно использовать пользовательские преобразования для форматирования с помощью with_transform().
В отличие от set_format(), with_format возвращает новый объект DatasetDict с новыми объектами Dataset.
Пример:
>>> 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(). Функция форматирования — это вызываемый объект, который принимает батч (в виде словаря) на вход и возвращает батч. Эта функция применяется непосредственно перед возвратом объектов в__getitem__. - columns (
list[str], необязательный) — Столбцы, которые нужно отформатировать в выводе. Если указано, входная партия данных для преобразования содержит только эти столбцы. - output_all_columns (
bool, по умолчанию False) — Сохранять в выводе также неформатированные столбцы (как объекты Python). Если установлено вTrue, остальные неформатированные столбцы сохраняются вместе с результатом преобразования.
Используйте этот трансформ для установки формата возврата __getitem__. Трансформ применяется на лету к батчам при вызове __getitem__.
Трансформ устанавливается для каждого датасета в словаре датасетов
Как и set_format(), это можно сбросить с помощью reset_format().
В отличие от set_transform(), with_transform возвращает новый объект DatasetDict с новыми объектами Dataset.
Пример:
>>> 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 для каждого сплита (вложенные признаки также разворачиваются). Каждый столбец со структурированным типом (struct) разворачивается в один столбец на каждое поле структуры. Остальные столбцы остаются без изменений.
Пример:
>>> 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
})
})cast
< source >( features: Features )
Параметры
- features (Features) —
Новые признаки, к которым нужно привести набор данных.
Имена и порядок полей в features должны совпадать с текущими именами столбцов.
Тип данных также должен допускать преобразование из одного типа в другой.
Для нетривиальных преобразований, например
string<->ClassLabel, следует использовать map() для обновления набора данных.
Приведите набор данных к новому набору признаков. Преобразование применяется ко всем наборам данных в словаре наборов данных.
Пример:
>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes")
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds["train"].features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}cast_column
< source >( column: strfeature )
Преобразование столбца в признак для декодирования.
Пример:
>>> 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
Параметры
Возвращает
Копия объекта набора данных без удаляемых столбцов.
Удалите одну или несколько колонок из каждого сплита набора данных, а также связанные с ними признаки.
Преобразование применяется ко всем частям словаря набора данных.
Также можно удалить столбец с помощью map() и remove_columns, но данный метод не копирует данные оставшихся столбцов и поэтому работает быстрее.
Пример:
>>> 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 )
Переименование столбца в наборе данных и перемещение признаков, связанных с исходным столбцом, под новое имя столбца. Преобразование применяется ко всем наборам данных в словаре наборов данных.
Также можно переименовать столбец с помощью map() и remove_columns, но данный метод:
- отвечает за перемещение исходных признаков под новое имя столбца.
- не копирует данные в новый набор данных и поэтому работает значительно быстрее.
Пример:
>>> 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]] )
Выберите одну или несколько колонок из каждого сплита в наборе данных, а также связанные с ними признаки.
Преобразование применяется ко всем разделам словаря набора данных.
Пример:
>>> 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) — Идентификатор репозитория, в который выполняется загрузка, в следующем формате:<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, если PR будет создан (create_prравно True).Добавлено в 2.16.0
- private (
bool, optional) — Определяет, следует ли сделать репозиторий приватным. Если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) — Включает ли встраивание байтов файлов в шарды. В частности, перед push для полей типа: - num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов при подготовке и загрузке набора данных. Это полезно, если набор данных состоит из множества образцов или медиафайлов для встраивания. Использует контекст «spawn» для работы с hf_xet, rust-клиентом для быстрой загрузки на HF. Многопроцессорность по умолчанию отключена.Добавлено в 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/train) или удалённый URI (например,s3://my-bucket/dataset/train) каталога словаря датасета, в который будет сохранён словарь датасета. - max_shard_size (
intorstr, необязательный, по умолчанию"500MB") — Максимальный размер фрагментов набора данных, сохраняемых в файловую систему. Если значение указано в виде строки, оно должно состоять из цифр, за которыми следует единица измерения (например,"50MB"). - num_shards (
Dict[str, int], необязательный) — Количество шардов для записи. По умолчанию количество шардов зависит отmax_shard_sizeиnum_proc. Необходимо указать количество шардов для каждого набора данных в словаре наборов данных. Используйте словарь, чтобы задать разное значение num_shards для каждого сплита.Добавлено в 2.8.0
- num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов при загрузке и локальной генерации набора данных. По умолчанию многопоточность отключена.Добавлено в 2.8.0
- storage_options (
dict, необязательный) — Пары ключ/значение, передаваемые в файловую систему, если она используется.Добавлено в 2.8.0
Сохраняет словарь датасета в файловую систему с помощью fsspec.spec.AbstractFileSystem.
Для данных Image, Audio и Video:
Все данные Image(), Audio() и Video() хранятся в файлах arrow. Если вы хотите хранить пути или URL, используйте тип Value(“string”).
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/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
Загрузите набор данных, ранее сохранённый с помощью save_to_disk из файловой системы с использованием fsspec.spec.AbstractFileSystem.
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 (
dictиз path-like) — Путь (или пути) к файлу (файлам) CSV. - features (Features, необязательный) — Особенности набора данных.
- cache_dir (str, необязательный, по умолчанию
"~/.cache/huggingface/datasets") — Каталог для кэширования данных. - keep_in_memory (
bool, по умолчаниюFalse) — Скопировать ли данные в оперативную память. - **kwargs (дополнительные именованные аргументы) —
Именованные аргументы, передаваемые в
pandas.read_csv.
Создание DatasetDict из файла(ов) CSV.
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.
Создание DatasetDict из файла(ов) JSON Lines.
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 (
dictиз 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.
Создание DatasetDict из файла(ов) Parquet.
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 (
dictиз path-like) — Путь (или пути) к текстовому файлу (или файлам). - features (Features, необязательный) — Особенности набора данных.
- cache_dir (
str, необязательный, по умолчанию"~/.cache/huggingface/datasets") — Каталог для кэширования данных. - keep_in_memory (
bool, по умолчаниюFalse) — Скопировать ли данные в оперативную память. - **kwargs (дополнительные именованные аргументы) —
Именованные аргументы, передаваемые в
TextConfig.
Создание DatasetDict из текстового файла или файлов.
IterableDataset
Базовый класс IterableDataset реализует итерируемый Dataset, основанный на генераторах Python.
класс 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 )
Набор данных, основанный на итерируемом объекте.
Создайте экземпляр IterableDataset из таблицы Arrow по имени файла.
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) — 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 выводятся из dtypes pandas.Series в DataFrame. В случае Series, не являющихся объектами, NumPy dtype преобразуется в соответствующий ему тип Arrow. В случае object необходимо угадать тип данных, анализируя Python-объекты в этой Series.
Обратите внимание, что Series с типом данных object не всегда содержат достаточно информации для однозначного определения соответствующего типа Arrow. Если тип не удаётся вывести, например, если длина DataFrame равна 0 или Series содержит только объекты None/nan, тип устанавливается в null. Этого поведения можно избежать, явно создав признаки и передав их в эту функцию.
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, optional) — Информация о наборе данных, например, описание, цитирование и т. д. - split (
NamedSplit, optional) — Имя сплита набора данных. - 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 из генератора.
Пример:
>>> 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
Удаляет одну или несколько колонок в наборе данных, а также связанные с ними признаки. Удаление выполняется на лету для примеров при итерации по набору данных.
Пример:
>>> 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
Выберите одну или несколько колонок в наборе данных и связанные с ними признаки. Выбор выполняется на лету для примеров при итерации по набору данных.
Пример:
>>> 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
Преобразование столбца в признак для декодирования.
Пример:
>>> 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')}cast
< source >( features: Features ) → IterableDataset
Параметры
- features (Features) —
Новые признаки, к которым нужно привести набор данных.
Имена полей в признаках должны совпадать с текущими именами столбцов.
Тип данных также должен допускать преобразование из одного типа в другой.
Для нетривиальных преобразований, например
string<->ClassLabel, следует использовать map() для обновления Dataset.
Возвращает
IterableDataset
Копия набора данных с преобразованными признаками.
Преобразовать набор данных в новый набор признаков.
Пример:
>>> from datasets import load_dataset, ClassLabel, Value
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train", streaming=True)
>>> ds.features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds.features.copy()
>>> new_features["label"] = ClassLabel(names=["bad", "good"])
>>> new_features["text"] = Value("large_string")
>>> ds = ds.cast(new_features)
>>> ds.features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}decode
< source >( enable: bool = Truenum_threads: typing.Optional[int] = None ) → IterableDataset
Параметры
- enable (
bool, по умолчаниюTrue) — Включает или отключает декодирование функций. - num_threads (
int, необязательный, по умолчаниюNone) — Включает многопоточность для декодирования признаков. Обратите внимание, что load_dataset() по умолчанию уже использует несколько потоков при потоковой загрузке набора данных с HF, если в нём есть декодируемые признаки. По умолчанию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, поскольку для локальных данных на быстрых дисках многопоточность может работать медленнее, чем декодирование в основном потоке. Так как примеры декодируются заранее, каждый активный поток может удерживать один пример в памяти: уменьшите num_threads, чтобы снизить потребление памяти.
Отключение декодирования полезно, если вы хотите работать с путями или байтами медиафайлов, не декодируя их содержимое. Чтобы отключить декодирование, можно использовать .decode(False), что эквивалентно вызову .cast() или .cast_column() со всеми типами Audio, Image и Video, установленными в decode=False.
Примеры:
Отключить декодирование:
>>> 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) — Функция, применяемая на лету к примерам при итерации по набору данных. Она должна иметь одну из следующих сигнатур:function(example: Dict[str, Any]) -> Dict[str, Any]еслиbatched=Falseиwith_indices=Falsefunction(example: Dict[str, Any], idx: int) -> Dict[str, Any]еслиbatched=Falseиwith_indices=Truefunction(batch: Dict[str, List]) -> Dict[str, List], еслиbatched=Trueиwith_indices=Falsefunction(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, в качестве одного аргумента передаётся словарь, отображающий все отформатированные столбцы. - batched (
bool, по умолчаниюFalse) — Передавать вfunctionпакет примеров. - batch_size (
int, необязательный, по умолчанию1000) — Количество примеров в каждой партии, передаваемой вfunction, еслиbatched=True. Если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:
- If batched is
False, then the function takes 1 example in and should return 1 example. An example is a dictionary, e.g.{"text": "Hello there !"}. - If batched is
Trueandbatch_sizeis 1, then the function takes a batch of 1 example as input and can return a batch with 1 or more examples. A batch is a dictionary, e.g. a batch of 1 example is {“text”: [“Hello there !”]}. - Если
Trueиbatch_sizeравноn> 1, функция принимает на вход батч изnпримеров и может вернуть батч изnпримеров или произвольного количества примеров. Обратите внимание, что последний батч может содержать меньшеnпримеров. Батч — это словарь, например, батч изnпримеров — это{"text": ["Hello there !"] * n}.
Если функция асинхронная, то map будет выполнять её параллельно, с максимумом в тысячу одновременных вызовов.
Рекомендуется использовать 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) — Вызываемый объект с одной из следующих сигнатур:function(example: Dict[str, Any]) -> bool, еслиwith_indices=False, batched=Falsefunction(example: Dict[str, Any], indices: int) -> boolеслиwith_indices=True, batched=Falsefunction(example: Dict[str, List]) -> List[bool]еслиwith_indices=False, batched=Truefunction(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, в качестве одного аргумента передаётся словарь, отображающий все отформатированные столбцы. - batched (
bool, по умолчаниюFalse) — Передавать вfunctionпакет примеров. - batch_size (
int, необязательный, по умолчанию1000) — Количество примеров в каждой партии, передаваемых вfunction, еслиbatched=True. - fn_kwargs (
Dict, необязательный, по умолчаниюNone) — Параметры с ключами, передаваемые вfunction.
Примените функцию фильтрации ко всем элементам, чтобы в наборе данных оставались только примеры, удовлетворяющие условию фильтрации. Фильтрация выполняется на лету при итерации по набору данных.
Если функция асинхронная, то filter будет выполнять её параллельно, с максимумом в тысячу одновременных вызовов (настраивается).
Рекомендуется использовать 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 .'}]shuffle
< 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=None(по умолчанию), используетсяnp.random.default_rng(генератор битов по умолчанию (PCG64) в NumPy). - buffer_size (
int, по умолчанию1000) — Размер буфера. - max_buffer_input_shards (
int, по умолчанию10) — Максимальное количество шардов, используемых для заполнения буфера за один раз.
Случайным образом перемешивает элементы этого набора данных.
Этот набор данных заполняет буфер элементами в количестве buffer_size, а затем случайным образом выбирает элементы из этого буфера, заменяя выбранные элементы новыми. Для идеального перемешивания размер буфера должен быть больше или равен общему размеру набора данных.
Например, если ваш набор данных содержит 10 000 элементов, но buffer_size установлен в 1000, то shuffle изначально выбирает случайный элемент только из первых 1000 элементов в буфере. После того как элемент выбран, его место в буфере занимает следующий (т. е. 1001-й) элемент, поддерживая буфер из 1000 элементов.
Если датасет состоит из нескольких шардов, буфер заполняется с использованием не более max_buffer_input_shards шардов за раз, при этом также перемешивается порядок шардов. Это значительно повышает качество перемешивания.
Входящие шарды чередуются внутри каждого узла и воркера, сохраняя количество шардов, доступных для параллельной загрузки данных.
Однако, если порядок был зафиксирован с помощью skip() или take(), то порядок шардов сохраняется без изменений, и для заполнения буфера используется только один шард за раз.
Пример:
>>> 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, optional) — Количество образцов в каждой партии. - by_column (
Union[str, list[str], необязательный параметр — Столбец, используемый для группировки примеров в батчи. Соседние примеры с одинаковым значением в этом столбце объединяются в один батч. Также может быть списком столбцов, если требуется группировка по нескольким столбцам. При группировке по столбцу параметр batch_size используется только для контроля размера батчей, которые объединяются или нарезаются во время накопления.Добавлено в 4.9.0
- drop_last_batch (
bool, по умолчаниюFalse) — Определяет, следует ли отбрасывать последний неполный батч.
Группируйте образцы из набора данных в батчи.
пропустить
< source >( n: int )
Создайте новый IterableDataset, который пропускает первые n элементов.
Пример:
>>> 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 .'}]Создайте новый IterableDataset только с первыми n элементами.
Пример:
>>> 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 .'}]shard
< source >( num_shards: intindex: intcontiguous: bool = True )
Возвращает index-й фрагмент из набора данных, разделённого на num_shards частей.
Разбиение выполняется детерминированно. 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) возвращает набор данных с одним фрагментом.
Примечание: n должно быть меньше или равно количеству шардов в наборе данных dataset.num_shards.
С другой стороны, dataset.shard(n, i, contiguous=False) содержит все шарды набора данных, у которых индекс по модулю 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: шард на диапазон последовательных чанков (каждый примерно по 64 МБ данных файла), а не на каждый файл
- Другое: пока не реализовано (вклад приветствуется!)
Убедитесь, что операция reshard/shard выполнена перед использованием любого оператора, вносящего случайность (например, shuffle).
Лучше всего использовать оператор sharding на раннем этапе конвейера обработки данных.
Пример:
>>> 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] )
Создайте новый IterableDataset, который повторяет базовый набор данных num_times раз.
Пустой вход приводит к завершению даже в том случае, если num_times равно None.
Примечание. Эффект вызова 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.DataFrame.to_csvиз pandas. Параметрindexпо умолчанию равенFalse, если не указан. Если вы хотите записать индекс, передайтеindex=Trueи также задайте имя для столбца индекса, передавindex_label.
Возвращает
int
Количество записанных символов или байтов.
Экспортирует набор данных в csv.
Этот метод итерирует по набору данных и полностью загружает его в память перед записью.
to_pandas
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Параметры
- batch_size (
int, необязательный) — Размер (количество строк) батчей, еслиbatchedравноTrue. По умолчанию —datasets.config.DEFAULT_MAX_BATCH_SIZE. - batched (
bool) — УстановитеTrue, чтобы вернуть генератор, выдающий датасет батчами поbatch_sizeстрок. По умолчаниюFalse(возвращает весь датасет сразу).
Возвращает набор данных в виде pandas.DataFrame. Также может возвращать генератор для больших наборов данных.
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Возвращает набор данных в виде словаря Python. Также может возвращать генератор для больших наборов данных.
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.parquet.ParquetWriterPyArrow.
Возвращает
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.DataFrame.to_sqlиз pandas. Параметр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) — Идентификатор репозитория, в который выполняется загрузка, в следующем формате:<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, optional) — Имя сплита, которое будет присвоено этому набору данных. По умолчаниюself.split. - data_dir (
str, необязательный) — Имя каталога, который будет содержать загруженные файлы данных. По умолчанию равноconfig_name, если оно отличается от “default”, иначе “data”. - commit_message (
str, необязательный) — Сообщение для коммита при отправке. По умолчанию —"Upload dataset". - commit_description (
str, необязательный) — Описание создаваемого коммита. Также описание PR, если PR будет создан (create_prравно True). - private (
bool, optional) — Определяет, следует ли сделать репозиторий приватным. Если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данного набора данных: в этом случае каждый входной шард распределяется по нескольким выходным шардам путем записи примеров в них по кругу (round-robin). - embed_external_files (
bool, по умолчаниюTrue) — Включает ли встраивание байтов файлов в шарды. В частности, перед push для полей типа: - num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов при подготовке и загрузке набора данных. Это полезно, если набор данных состоит из множества образцов и преобразований. I использует контекст “spawn” для работы с hf_xet, rust-клиентом для быстрой загрузки на HF. Многопроцессорность по умолчанию отключена.
Выгружает набор данных на хаб в формате 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")Загрузите state_dict набора данных. Итерация возобновится с примера, следующего за тем, на котором было сохранено состояние.
Возобновление запускает процесс ровно с того места, где был сохранён контрольный пункт, за исключением двух случаев:
- примеры из буферов перемешивания теряются при возобновлении, а буферы заполняются новыми данными
- Сочетания
.with_format(arrow)и пакетного.map()могут приводить к пропуску одной партии.
Пример:
>>> from datasets import Dataset, concatenate_datasets
>>> ds = Dataset.from_dict({"a": range(6)}).to_iterable_dataset(num_shards=3)
>>> for idx, example in enumerate(ds):
... print(example)
... if idx == 2:
... state_dict = ds.state_dict()
... print("checkpoint")
... break
>>> ds.load_state_dict(state_dict)
>>> print(f"restart from checkpoint")
>>> for example in ds:
... print(example)который возвращает:
{'a': 0}
{'a': 1}
{'a': 2}
checkpoint
restart from checkpoint
{'a': 3}
{'a': 4}
{'a': 5}>>> from torchdata.stateful_dataloader import StatefulDataLoader
>>> ds = load_dataset("deepmind/code_contests", streaming=True, split="train")
>>> dataloader = StatefulDataLoader(ds, batch_size=32, num_workers=4)
>>> # checkpoint
>>> state_dict = dataloader.state_dict() # uses ds.state_dict() under the hood
>>> # resume from checkpoint
>>> dataloader.load_state_dict(state_dict) # uses ds.load_state_dict() under the hoodПолучить текущий state_dict набора данных. Он соответствует состоянию на момент последнего сгенерированного примера.
Возобновление запускает процесс ровно с того места, где был сохранён контрольный пункт, за исключением двух случаев:
- примеры из буферов перемешивания теряются при возобновлении, а буферы заполняются новыми данными
- Сочетания
.with_format(arrow)и пакетного.map()могут приводить к пропуску одной партии.
Пример:
>>> from datasets import Dataset, concatenate_datasets
>>> ds = Dataset.from_dict({"a": range(6)}).to_iterable_dataset(num_shards=3)
>>> for idx, example in enumerate(ds):
... print(example)
... if idx == 2:
... state_dict = ds.state_dict()
... print("checkpoint")
... break
>>> ds.load_state_dict(state_dict)
>>> print(f"restart from checkpoint")
>>> for example in ds:
... print(example)который возвращает:
{'a': 0}
{'a': 1}
{'a': 2}
checkpoint
restart from checkpoint
{'a': 3}
{'a': 4}
{'a': 5}>>> from torchdata.stateful_dataloader import StatefulDataLoader
>>> ds = load_dataset("deepmind/code_contests", streaming=True, split="train")
>>> dataloader = StatefulDataLoader(ds, batch_size=32, num_workers=4)
>>> # checkpoint
>>> state_dict = dataloader.state_dict() # uses ds.state_dict() under the hood
>>> # resume from checkpoint
>>> dataloader.load_state_dict(state_dict) # uses ds.load_state_dict() under the hoodОбъект DatasetInfo, содержащий все метаданные набора данных.
Объект NamedSplit, соответствующий именованной части набора данных.
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.
Создание IterableDataset из файла(ов) CSV.
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.
Создайте IterableDataset из файла или файлов в формате JSON или JSON Lines.
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 перед их возвратом. - 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.
Создание IterableDataset из файла(ов) Parquet.
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”) — Определяет, загружать ли данные построчно, по абзацам или по документам. По умолчанию одна строка в наборе данных соответствует одной строке текста. - **kwargs (дополнительные именованные аргументы) —
Именованные аргументы, передаваемые в
TextConfig.
Создайте IterableDataset из текстового файла или файлов.
класс 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) — Функция, применяемая на лету к примерам при итерации по набору данных. Она должна иметь одну из следующих сигнатур:function(example: Dict[str, Any]) -> Dict[str, Any]еслиbatched=Falseиwith_indices=Falsefunction(example: Dict[str, Any], idx: int) -> Dict[str, Any]еслиbatched=Falseиwith_indices=Truefunction(batch: Dict[str, list]) -> Dict[str, list]еслиbatched=Trueиwith_indices=Falsefunction(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, в качестве одного аргумента передаётся словарь, отображающий все отформатированные столбцы. - batched (
bool, по умолчаниюFalse) — Передавать вfunctionпакет примеров. - batch_size (
int, необязательный, по умолчанию1000) — Количество примеров в каждой партии, передаваемых вfunction, еслиbatched=True. - drop_last_batch (
bool, по умолчаниюFalse) — определяет, следует ли отбрасывать последний батч, если его размер меньшеbatch_size, вместо его обработки функцией. - remove_columns (
[list[str]], необязательный, по умолчаниюNone) — Удаляет выбранные столбцы во время выполнения отображения. Столбцы удаляются до обновления примеров с помощью выводаfunction, то есть еслиfunctionдобавляет столбцы с именами изremove_columns, эти столбцы будут сохранены. - fn_kwargs (
Dict, необязательный, по умолчаниюNone) — Параметры с ключами, передаваемые вfunction
Применяет функцию ко всем примерам в итерируемом наборе данных (по отдельности или партиями) и обновляет их. Если функция возвращает столбец, который уже существует, он будет перезаписан. Функция применяется «на лету» к примерам при итерации по набору данных. Преобразование применяется ко всем наборам данных в словаре наборов данных.
Вы можете указать, должна ли функция обрабатываться батчами или нет, с помощью параметра batched:
- If batched is
False, then the function takes 1 example in and should return 1 example. An example is a dictionary, e.g.{"text": "Hello there !"}. - If batched is
Trueandbatch_sizeis 1, then the function takes a batch of 1 example as input and can return a batch with 1 or more examples. A batch is a dictionary, e.g. a batch of 1 example is{"text": ["Hello there !"]}. - Если
Trueиbatch_sizeравноn> 1, функция принимает на вход батч изnпримеров и может вернуть батч изnпримеров или произвольного количества примеров. Обратите внимание, что последний батч может содержать меньшеnпримеров. Батч — это словарь, например, батч изnпримеров — это{"text": ["Hello there !"] * n}.
Если функция асинхронная, то map будет выполнять её параллельно, с максимумом в тысячу одновременных вызовов.
Рекомендуется использовать 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) — Вызываемый объект с одной из следующих сигнатур:function(example: Dict[str, Any]) -> bool, еслиwith_indices=False, batched=Falsefunction(example: Dict[str, Any], indices: int) -> boolеслиwith_indices=True, batched=Falsefunction(example: Dict[str, list]) -> list[bool]еслиwith_indices=False, batched=Truefunction(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 (
strorlist[str], необязательный) — Столбцы, которые передаются вfunctionв качестве позиционных аргументов. ЕслиNone, в качестве одного аргумента передаётся словарь, отображающий все отформатированные столбцы. - batched (
bool, по умолчаниюFalse) — Передавать вfunctionпакет примеров - batch_size (
int, необязательный, по умолчанию1000) — Количество примеров в каждой партии, передаваемых вfunction, еслиbatched=True. - 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 .'}]shuffle
< 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=None(по умолчанию), используетсяnp.random.default_rng(генератор битов по умолчанию (PCG64) в NumPy). - buffer_size (
int, по умолчанию1000) — Размер буфера. - max_buffer_input_shards (
int, по умолчанию10) — Максимальное количество шардов, используемых для заполнения буфера за один раз.
Случайным образом перемешивает элементы этого набора данных. Перемешивание применяется ко всем наборам данных в словаре наборов данных.
Этот набор данных заполняет буфер элементами в количестве buffer_size, а затем случайным образом выбирает элементы из этого буфера, заменяя выбранные элементы новыми. Для идеального перемешивания размер буфера должен быть больше или равен общему размеру набора данных.
Например, если ваш набор данных содержит 10 000 элементов, но buffer_size установлен в 1000, то shuffle изначально выбирает случайный элемент только из первых 1000 элементов в буфере. После того как элемент выбран, его место в буфере занимает следующий (т. е. 1001-й) элемент, поддерживая буфер из 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])}cast
< source >( features: Features ) → IterableDatasetDict
Параметры
- features (
Features) — Новые признаки, к которым нужно привести набор данных. Имена полей в признаках должны совпадать с текущими именами столбцов. Тип данных также должен допускать преобразование из одного типа в другой. Для нетривиальных преобразований, напримерstring<->ClassLabel, следует использоватьmapдля обновления Dataset.
Возвращает
Копия набора данных с преобразованными признаками.
Приведите набор данных к новому набору признаков. Приведение типов применяется ко всем наборам данных в словаре наборов данных.
Пример:
>>> from datasets import load_dataset
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> new_features = ds["train"].features.copy()
>>> new_features['label'] = ClassLabel(names=['bad', 'good'])
>>> new_features['text'] = Value('large_string')
>>> ds = ds.cast(new_features)
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('large_string')}cast_column
< 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] )
Приведение столбца к типу feature для декодирования. Приведение типов применяется ко всем наборам данных в словаре наборов данных.
Пример:
>>> from datasets import load_dataset, ClassLabel
>>> ds = load_dataset("cornell-movie-review-data/rotten_tomatoes", streaming=True)
>>> ds["train"].features
{'label': ClassLabel(names=['neg', 'pos']),
'text': Value('string')}
>>> ds = ds.cast_column('label', ClassLabel(names=['bad', 'good']))
>>> ds["train"].features
{'label': ClassLabel(names=['bad', 'good']),
'text': Value('string')}remove_columns
< source >( column_names: typing.Union[str, list[str]] ) → IterableDatasetDict
Параметры
Возвращает
Копия объекта набора данных без удаляемых столбцов.
Удаляет одну или несколько колонок в наборе данных, а также связанные с ними признаки. Удаление выполняется на лету для примеров при итерации по набору данных. Удаление применяется ко всем наборам данных в словаре наборов данных.
Пример:
>>> 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 .'}rename_columns
< source >( column_mapping: dict ) → IterableDatasetDict
Параметры
Возвращает
Копия набора данных с переименованными столбцами
Переименовать несколько столбцов в наборе данных и переместить признаки, связанные с исходными столбцами, под новые имена столбцов. Переименование применяется ко всем наборам данных в словаре наборов данных.
Пример:
>>> 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
Параметры
Возвращает
Копия объекта набора данных, содержащая только выбранные столбцы.
Выберите одну или несколько колонок в наборе данных, а также связанные с ними признаки. Выбор выполняется на лету для примеров при итерации по набору данных. Выбор применяется ко всем наборам данных в словаре наборов данных.
Пример:
>>> 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) — Идентификатор репозитория, в который выполняется загрузка, в следующем формате:<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, если PR будет создан (create_prравно True).Добавлено в 2.16.0
- private (
bool, optional) — Определяет, следует ли сделать репозиторий приватным. Если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) — Включает ли встраивание байтов файлов в шарды. В частности, перед push для полей типа: - num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов при подготовке и загрузке набора данных. Это полезно, если набор данных состоит из множества образцов или медиафайлов для встраивания. Использует контекст «spawn» для работы с hf_xet, rust-клиентом для быстрой загрузки на HF. Многопроцессорность по умолчанию отключена.Добавлено в 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”). Эта функция загружает аудио лениво с помощью декодера.
- Функция Image для хранения абсолютного пути к файлу изображения, объекта
np.ndarray, объектаPIL.Image.Imageили словаря с относительным путём к файлу изображения (ключ “path”) и его содержимым в байтах (ключ “bytes”). Эта функция извлекает данные изображения. - Функция Video для хранения абсолютного пути к файлу видео, объекта
torchcodec.decoders.VideoDecoderили словаря с относительным путём к файлу видео (ключ “path”) и его содержимым в байтах (ключ “bytes”). Эта функция загружает видео лениво с помощью декодера. - Pdf — функция для хранения абсолютного пути к файлу PDF, объекта
pdfplumber.pdf.PDFили словаря с относительным путём к файлу PDF (ключ “path”) и его содержимым в байтах (ключ “bytes”). Эта функция загружает PDF лениво с помощью PDF-ридера. - Nifti — функция для хранения абсолютного пути к файлу нейровизуализации в формате NIfTI, объекта
nibabel.Nifti1Imageили словаря с относительным путём к файлу NIfTI (ключ “path”) и его содержимым в виде байтов (ключ “bytes”). Эта функция загружает файл NIfTI лениво с помощью nibabel. - Функция 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')}from_arrow_schema
< source >( pa_schema: Schema )
Создание Features из схемы Arrow. Также проверяются метаданные схемы на наличие признаков Hugging Face Datasets. Поля, не допускающие null, не поддерживаются и устанавливаются как допускающие null.
Также pa.dictionary не поддерживается, вместо него используется его базовый тип. Поэтому datasets преобразует объекты DictionaryArray в их фактические значения.
from_dict
< source >( dic ) → Features
Создание [Features] из словаря.
Восстановите вложенный объект признака из десериализованного словаря. Мы используем ключ _type для определения имени dataclass признака FieldType.
Это позволяет использовать удобный синтаксис конструктора для определения признаков из десериализованных JSON-словарей. Эта функция используется, в частности, при десериализации [DatasetInfo], который был сохранён в JSON-объект. Она выступает аналогом [Features.from_arrow_schema] и обрабатывает рекурсивную поэлементную инициализацию, но не требует никакого отображения в pyarrow и обратно, за исключением того, что использует отображение примитивных типов данных pyarrow, которое [Value] выполняет автоматически.
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Скаляр
класс datasets.Value
< source >( dtype: strid: typing.Optional[str] = None )
Скалярное значение признака определённого типа данных.
Возможные типы Value следующие:
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
класс datasets.ClassLabel
< source >( num_classes: dataclasses.InitVar[typing.Optional[int]] = Nonenames: list = Nonenames_file: dataclasses.InitVar[typing.Optional[str]] = Noneid: typing.Optional[str] = None )
Параметры
- num_classes (
int, необязательный) — Количество классов. Все метки должны быть <num_classes. - names (
listизstr, необязательный) — Строковые имена для целочисленных классов. Порядок, в котором указаны имена, сохраняется. - names_file (
str, необязательный) — Путь к файлу с названиями целочисленных классов, по одному на строку.
Тип признака для целочисленных меток классов.
Существует 3 способа определить ClassLabel, которые соответствуют 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.
Типы Arrow, которые можно преобразовать в тип хранения pyarrow ClassLabel:
pa.string()pa.int()
Преобразование integer => строка имени класса string.
Что касается неизвестных/отсутствующих меток: передача отрицательных целых чисел вызывает ValueError.
Имя класса преобразования string => integer.
Композитный
класс datasets.LargeList
< source >( feature: typing.Anyid: typing.Optional[str] = None )
Тип признака для данных в виде большого списка, состоящего из данных дочернего типа признака.
Она основана на pyarrow.LargeListType, который похож на pyarrow.ListType, но использует 64-битные, а не 32-битные смещения.
класс 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, но в некоторых случаях может быть нежелательным. Если вы не хотите такого поведения, используйте List или LargeList вместо Sequence.
Перевод
класс 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 в словарь.
класс 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)
Параметры
- languages (
dict) — Словарь для каждого примера, сопоставляющий строковые коды языков с одной или несколькими строковыми переводами. Набор присутствующих языков может различаться от примера к примеру.
Возвращает
languageилиtranslation(одномерныйtf.Tensorпеременной длины из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 в словарь.
Массивы
класс datasets.Array2D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Создайте двумерный массив.
класс datasets.Array3D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Создайте трёхмерный массив.
класс datasets.Array4D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Создайте четырёхмерный массив.
класс datasets.Array5D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Создайте пятимерный массив.
Аудио
класс 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 принимает на вход:
Строка
str: абсолютный путь к аудиофайлу (т. е. допускается случайный доступ).pathlib.Path: путь к аудиофайлу (т. е. допускается случайный доступ).Словарь
dictс ключами:path: строка с относительным путём к аудиофайлу внутри архива.bytes: Байтовое содержимое аудиофайла.
Это полезно для файлов parquet или webdataset, в которые встроены аудиофайлы.
Словарь
dictс ключами:array: Массив, содержащий аудиовыборкуsampling_rate: целое число, соответствующее частоте дискретизации аудиозаписи.
Объект декодера аудио torchcodec:
torchcodec.decoders.AudioDecoder.
Вывод: данные аудиопризнаков выводятся в виде объектов 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. Типы Arrow, которые можно преобразовать в тип хранения Audio для pyarrow:
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, optional) — Словарь repo_id -> token для получения байтов файлов. - 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.
Если состояние декодируемое, вызовите ошибку, иначе разложите признаки в словарь.
Изображение
класс datasets.Image
< source >( mode: typing.Optional[str] = Nonedecode: bool = Trueid: typing.Optional[str] = None )
Параметры
- mode (
str, необязательный) — Режим, в который следует преобразовать изображение. ЕслиNone, используется исходный режим изображения. - decode (
bool, по умолчаниюTrue) — Определяет, нужно ли декодировать данные изображения. ЕслиFalse, возвращает исходный словарь в формате{"path": image_path, "bytes": image_bytes}.
Изображение Feature для чтения данных изображения из файла изображения.
Вход: Функция Image принимает на вход:
Строка
str: Абсолютный путь к файлу изображения (т. е. допускается случайный доступ).pathlib.Path: путь к файлу изображения (т.е. допускается случайный доступ).Словарь
dictс ключами:path: строка с относительным путём к файлу изображения в архиве.bytes: Байты файла изображения.
Это полезно для файлов parquet или webdataset, в которые встроены файлы изображений.
Массив
np.ndarray: массив NumPy, представляющий изображение.Объект изображения PIL:
PIL.Image.Image.
Вывод: данные признаков изображения выводятся в виде объектов 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. Типы Arrow, которые можно преобразовать в тип хранения Image для pyarrow:
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 )
Параметры
- value (
strилиdict) — строка с абсолютным путём к файлу изображения или словарь с ключами:path: строка с абсолютным или относительным путём к файлу изображения.bytes: Байты файла изображения.
- token_per_repo_id (
dict, необязательный) — Для доступа к файлам изображений из частных репозиториев на Hub и их декодирования можно передать словарь repo_id (str) -> token (boolилиstr).
Декодирование примера файла изображения в данные изображения.
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, optional) — Словарь repo_id -> token для получения байтов файлов. - 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.
Если объект находится в декодируемом состоянии, верните саму характеристику, иначе разложите её в словарь.
Видео
класс 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) — Определяет, будет ли доступ к кадрам «точным» или «приблизительным». Точный режим гарантирует, что запрос кадра i всегда вернёт кадр i, но для этого требуется начальное сканирование файла. Приблизительный режим работает быстрее, так как не сканирует файл, но менее точен, поскольку использует метаданные файла для вычисления вероятного положения кадра i. Подробнее — здесь
Видео Feature для чтения видеоданных из видеофайла.
Вход: Функция Video принимает на вход:
Строка
str: абсолютный путь к файлу видео (т. е. допускается случайный доступ).pathlib.Path: путь к файлу видео (т.е. допускается случайный доступ).Словарь
dictс ключами:path: строка с относительным путём к файлу видео в репозитории датасета.bytes: Байты видеофайла.
Это полезно для файлов parquet или webdataset, в которые встроены файлы видео.
Объект декодера видео torchcodec:
torchcodec.decoders.VideoDecoder.
Вывод: функция 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. Типы Arrow, которые можно преобразовать в тип хранения Video pyarrow:
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 )
Параметры
- value (
strилиdict) — строка с абсолютным путём к файлу видео или словарь с ключами:path: строка с абсолютным или относительным путём к файлу видео.bytes: Байты файла видео.
- token_per_repo_id (
dict, необязательный) — Для доступа к файлам видео из частных репозиториев на Hub и их декодирования можно передать словарь repo_id (str) -> token (boolилиstr).
Декодирование примера видеофайла в видеоданные.
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, optional) — Словарь repo_id -> token для получения байтов файлов. - 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.
Если объект находится в декодируемом состоянии, верните саму характеристику, иначе разложите её в словарь.
Mesh
класс datasets.Mesh
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Mesh 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. Типы Arrow, которые можно преобразовать в тип хранения Mesh pyarrow:
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 )
Параметры
- value (
dict) — Словарь с ключами:path: строка с абсолютным или относительным путём к файлу сетки.bytes: байты файла меша.
- token_per_repo_id (
dict, необязательный) — Для доступа к файлам mesh из частных репозиториев на Hub и их декодирования можно передать словарь repo_id (str) -> token (boolилиstr).
Пример декодирования файла сетки.
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, optional) — Словарь repo_id -> token для получения байтов файлов. - 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 в тип хранения Arrow Json.
класс datasets.Pdf
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Экспериментально. Функция Feature для чтения PDF-документов из PDF-файла.
Вход: Функция Pdf принимает на вход:
Строка
str: абсолютный путь к файлу PDF (т. е. допускается случайный доступ).pathlib.Path: путь к файлу PDF (то есть допускается случайный доступ).Словарь
dictс ключами:path: строка с относительным путём к файлу PDF в репозитории датасета.bytes: Байты файла PDF. Это полезно для архивных файлов с последовательным доступом.
Объект
pdfplumber.pdf.PDF: объект PDF из pdfplumber.
Примеры:
>>> 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. Типы Arrow, которые можно преобразовать в тип хранения Pdf pyarrow:
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 )
Параметры
- value (
strилиdict) — строка с абсолютным путём к файлу PDF или словарь с ключами:path: строка с абсолютным или относительным путём к файлу PDF.bytes: Байты файла PDF.
- token_per_repo_id (
dict, необязательный) — Для доступа к файлам pdf из частных репозиториев на Hub и их декодирования можно передать словарь repo_id (str) -> token (boolилиstr).
Декодирование примера файла 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, optional) — Словарь repo_id -> token для получения байтов файлов. - local_files (
bool, по умолчаниюTrue) — Включать ли данные локальных файлов в массивДобавлено в 4.8.5
- remote_files (
bool, по умолчаниюTrue) — Включать ли данные удалённых файлов в массив. Например, файлы с путями, начинающимися с hf:// или https://Добавлено в 4.8.5
Возвращает
pa.StructArray
Массив в типе хранения PDF arrow, а именно
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
класс datasets.Nifti
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Экспериментально. Nifti Feature для чтения файлов нейровизуализации в формате NIfTI.
Вход: Функция 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. Типы Arrow, которые можно преобразовать в тип хранения Nifti pyarrow:
pa.string()— должен содержать данные «path»pa.binary()— должен содержать байты NIfTIpa.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 )
Параметры
- value (
strилиdict) — строка с абсолютным путём к файлу NIfTI или словарь с ключами:path: строка с абсолютным или относительным путём к файлу NIfTI.bytes: Байты файла NIfTI.
- token_per_repo_id (
dict, необязательный) — Для доступа к файлам NIfTI в частных репозиториях на Hub и их декодирования можно передать словарь repo_id (str) -> token (boolилиstr).
Декодирование примера файла 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, optional) — Словарь repo_id -> token для получения байтов файлов. - 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
класс datasets.BioSequence
< source >( format: str = 'fasta'decode: bool = Trueid: typing.Optional[str] = None )
Параметры
- format (
str, по умолчанию"fasta") — Название формата последовательности, как его понимаетBio.SeqIO. Частые значения —"fasta","fastq"и"genbank". - decode (
bool, по умолчаниюTrue) — Определяет, следует ли декодировать данные последовательности. ЕслиFalse, возвращает базовый словарь в формате{"path": path, "bytes": bytes}.
Экспериментально. BioSequence Feature для чтения записей биологических последовательностей из файла последовательностей.
Файл последовательности содержит одну или несколько записей о остатках с их идентификаторами и аннотациями. 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. Типы Arrow, которые можно преобразовать в тип хранения BioSequence pyarrow:
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 )
Параметры
- value (
strилиdict) — строка с абсолютным путём к файлу или словарь с ключами:path: строка с абсолютным или относительным путём к файлу.bytes: байты файла.
- token_per_repo_id (
dict, необязательный) — Для доступа к файлам из частных репозиториев на Hub и их декодирования можно передать словарь repo_id (str) -> token (boolилиstr).
Декодировать файл с примером последовательности в запись biopython.
Файл может содержать множество записей; этот метод возвращает первую, поскольку одна строка соответствует одной записи. Используйте встроенные загрузчики последовательностей, чтобы развернуть файл с несколькими записями в одну строку на каждую запись.
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, optional) — Словарь repo_id -> token для получения байтов файлов. - local_files (
bool, по умолчаниюTrue) — Включать ли данные локальных файлов в массив. - remote_files (
bool, по умолчаниюTrue) — Включать ли данные удалённых файлов в массив.
Возвращает
pa.StructArray
Массив в типе хранения arrow BioSequence.
Встраивайте файлы последовательностей в массив Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('SeqRecord')] )
Кодирует пример в формат Arrow.
Если объект находится в декодируемом состоянии, верните саму характеристику, иначе разложите её в словарь.
BioStructure
класс 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 в тип хранения arrow для BioStructure. Типы Arrow, которые можно преобразовать в тип хранения pyarrow для BioStructure:
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 )
Параметры
- value (
strилиdict) — строка с абсолютным путём к файлу или словарь с ключами:path: строка с абсолютным или относительным путём к файлу.bytes: байты файла.
- token_per_repo_id (
dict, необязательный) — Для доступа к файлам из частных репозиториев на Hub и их декодирования можно передать словарь repo_id (str) -> token (boolилиstr).
Декодировать файл структуры примера в структуру biopython.
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, optional) — Словарь repo_id -> token для получения байтов файлов. - local_files (
bool, по умолчаниюTrue) — Включать ли данные локальных файлов в массив. - remote_files (
bool, по умолчаниюTrue) — Включать ли данные удалённых файлов в массив.
Возвращает
pa.StructArray
Массив в типе хранения arrow BioStructure.
Встраивайте файлы структуры в массив Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('Structure')] )
Кодирует пример в формат Arrow.
Если объект находится в декодируемом состоянии, верните саму характеристику, иначе разложите её в словарь.
Файловые системы
datasets.filesystems.is_remote_filesystem
< source >( fs: AbstractFileSystem )
Проверяет, является ли fs удалённой файловой системой.
Отпечаток
Хэшировщик, принимающий объекты Python в качестве входных данных.