Datasets documentation
Principais classes
Principais classes
DatasetInfo
classe 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 )
Parâmetros
- description (
str) — Uma descrição do conjunto de dados. - citation (
str) — Uma citação BibTeX do conjunto de dados. - homepage (
str) — Uma URL para a página inicial oficial do conjunto de dados. - license (
str) — A licença do conjunto de dados. Pode ser o nome da licença ou um parágrafo contendo os termos da licença. - features (Features, opcional) — Os recursos usados para especificar os tipos de coluna do conjunto de dados.
- post_processed (
PostProcessedInfo, opcional) — Descontinuado. Informações sobre os recursos de um possível pós-processamento de um conjunto de dados. Por exemplo, pode conter as informações de um índice. - supervised_keys (
SupervisedKeysData, opcional) — Especifica o recurso de entrada e o rótulo para aprendizado supervisionado, se aplicável ao conjunto de dados (legado do TFDS). - builder_name (
str, opcional) — O nome da subclasse deGeneratorBasedBuilderusada para criar o conjunto de dados. Também é a versão snake_case do nome da classe do construtor do conjunto de dados. - config_name (
str, opcional) — O nome da configuração derivada de BuilderConfig. - version (
strou Version, opcional) — A versão do conjunto de dados. - splits (
dict, opcional) — O mapeamento entre o nome da divisão e os metadados. - download_checksums (
dict, opcional) — O mapeamento entre a URL para baixar os checksums do conjunto de dados e os metadados correspondentes. - download_size (
int, opcional) — O tamanho dos arquivos a serem baixados para gerar o conjunto de dados, em bytes. - post_processing_size (
int, opcional) — Descontinuado. Tamanho do conjunto de dados em bytes após o pós-processamento, se houver. - dataset_size (
int, opcional) — O tamanho combinado em bytes das tabelas Arrow para todas as divisões. - size_in_bytes (
int, opcional) — O tamanho combinado em bytes de todos os arquivos associados ao conjunto de dados (arquivos baixados + arquivos Arrow). - **config_kwargs (argumentos de palavra-chave adicionais) — Argumentos de palavra-chave a serem passados para o BuilderConfig e usados no DatasetBuilder.
Informações sobre um conjunto de dados.
DatasetInfo documenta conjuntos de dados, incluindo seu nome, versão e recursos.
Consulte os argumentos do construtor e as propriedades para obter a lista completa.
Nem todos os campos são conhecidos na construção e podem ser atualizados posteriormente.
from_directory
< source >( dataset_info_dir: strstorage_options: typing.Optional[dict] = None )
Parâmetros
Crie DatasetInfo a partir do arquivo JSON em dataset_info_dir.
Esta função atualiza todos os campos gerados dinamicamente (num_examples, hash, hora de criação,…) do DatasetInfo.
Isso sobrescreverá todos os metadados anteriores.
write_to_directory
< source >( dataset_info_dirpretty_print = Falsestorage_options: typing.Optional[dict] = None )
Escreva DatasetInfo e a licença (se presente) como arquivos JSON em dataset_info_dir.
Conjunto de dados
A classe base Dataset implementa um Dataset baseado em uma tabela do Apache Arrow.
classe 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 )
Um Dataset baseado em uma tabela 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 )
Adicionar coluna ao Dataset.
Adicionado na 1.7
add_item
< source >( item: dictnew_fingerprint: typing.Optional[str] = None )
Adicionar item ao Dataset.
Adicionado na 1.7
Exemplo:
>>> 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 )
Parâmetros
- filename (
str) — Nome do arquivo do conjunto de dados. - info (
DatasetInfo, opcional) — Informações do dataset, como descrição, citação, etc. - split (
NamedSplit, opcional) — Nome da divisão do conjunto de dados. - indices_filename (
str, opcional) — Nomes dos arquivos de índices. - in_memory (
bool, padrãoFalse) — Se deve copiar os dados em memória.
Instanciar um Dataset baseado em uma tabela Arrow no arquivo 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 )
Instanciar um Dataset baseado em um buffer 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 )
Parâmetros
- df (
pandas.DataFrame) — Dataframe que contém o conjunto de dados. - features (Features, opcional) — Recursos do conjunto de dados.
- info (
DatasetInfo, opcional) — Informações do dataset, como descrição, citação, etc. - split (
NamedSplit, opcional) — Nome da divisão do conjunto de dados. - preserve_index (
bool, opcional) — Se deve armazenar o índice como uma coluna adicional no Dataset resultante. O valor padrão deNonearmazena o índice como uma coluna, exceto paraRangeIndex, que é armazenado apenas como metadados. Usepreserve_index=Truepara forçar que ele seja armazenado como uma coluna.
Converta pandas.DataFrame para pyarrow.Table para criar um Dataset.
Os tipos de coluna na Tabela Arrow resultante são inferidos a partir dos dtypes das pandas.Series no DataFrame. No caso de Series não-object, o dtype do NumPy é traduzido para seu equivalente no Arrow. No caso de object, precisamos inferir o tipo de dados examinando os objetos Python presentes nesta Series.
Observe que Series do dtype object não carregam informações suficientes para sempre levar a um tipo Arrow significativo. No caso em que não podemos inferir um tipo, por exemplo, porque o DataFrame tem comprimento 0 ou a Series contém apenas objetos None/nan, o tipo é definido como null. Esse comportamento pode ser evitado construindo features explícitas e passando-as para esta função.
Importante: um dataset criado com from_pandas() fica na memória e, portanto, não possui um diretório de cache associado. Isso pode mudar no futuro, mas, por enquanto, se você quiser reduzir o uso de memória, deve gravá-lo novamente em disco e recarregá-lo usando, por exemplo, 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 )
Parâmetros
- mapping (
Mapping) — Mapeamento de strings para Arrays ou listas Python. - features (Features, opcional) — Recursos do conjunto de dados.
- info (
DatasetInfo, opcional) — Informações do dataset, como descrição, citação, etc. - split (
NamedSplit, opcional) — Nome da divisão do conjunto de dados. - on_mixed_types (
Literal["use_json"], opcional, padrão éNone) — Se "use_json", usa o tipo Json() para campos de tipos mistos, ou seja, campos não estruturados que contêm dados sem um esquema predefinido. Nesse caso, um campo com tipo misto é definido como Json().Isso permite carregar listas com uma mistura de strings/inteiros/floats, por exemplo, ou dicionários com tipos de valores arbitrários.
Adicionado na 4.7.0
Converta um dict para uma pyarrow.Table para criar um Dataset.
Importante: um dataset criado com from_dict() fica na memória e, portanto, não possui um diretório de cache associado. Isso pode mudar no futuro, mas, por enquanto, se você quiser reduzir o uso de memória, deve gravá-lo novamente em disco e recarregá-lo usando, por exemplo, save_to_disk / load_from_disk.
Exemplos:
Obtenha um Dataset a partir de um dicionário contendo uma lista por coluna:
>>> ds = Dataset.from_dict({"text": ["hello there !", "general kenobi !"]})Pass features para definir os tipos de coluna, por exemplo, para um conjunto de dados de imagens:
>>> features = Features({"image": Image()})
>>> ds = Dataset.from_dict({"image": ["path/to/image.png"]}, features=features)Os datasets são baseados no Arrow, que é um formato colunar, e, portanto, esperam que cada exemplo tenha o mesmo tipo e subtipos, e que os dicionários tenham as mesmas chaves e tipos de valores. Ao carregar um dataset, ocorre um erro quando os campos têm tipos incompatíveis, e os campos ausentes nos dicionários são preenchidos com None para que todos os dicionários tenham as mesmas chaves e tipos de valores.
Para evitar isso e permitir tipos mistos sem erros, você pode usar on_mixed_types="use_json" ou especificar features= com um tipo 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"}]Isso também é útil para listas de dicionários com chaves e valores arbitrários, para evitar preencher campos ausentes com 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}]] # OKOutro exemplo com dados de chamada de ferramentas:
>>> 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 )
Parâmetros
- mapping (
List[dict]) — Uma lista de mapeamentos de strings para valores de linha. - features (
Features, opcional) — Recursos do dataset. - info (
DatasetInfo, opcional) — Informações do dataset, como descrição, citação, etc. - split (
NamedSplit, opcional) — Nome da divisão do conjunto de dados. - on_mixed_types (
Literal["use_json"], opcional, padrão éNone) — Se "use_json", usa o tipo Json() para campos de tipos mistos, ou seja, campos não estruturados que contêm dados sem um esquema predefinido. Nesse caso, um campo com tipo misto é definido como Json().Isso permite carregar listas com uma mistura de strings/inteiros/floats, por exemplo, ou dicionários com tipos de valores arbitrários.
Adicionado na 4.7.0
Converta uma lista de dicts para uma pyarrow.Table para criar um Dataset`.
Observe que as chaves da primeira entrada serão usadas para determinar as colunas do conjunto de dados, independentemente do que for passado para features.
Importante: um dataset criado com from_list() fica na memória e, portanto, não possui um diretório de cache associado. Isso pode mudar no futuro, mas, por enquanto, se você quiser reduzir o uso de memória, deve gravá-lo novamente em disco e recarregá-lo usando, por exemplo, save_to_disk / load_from_disk.
Exemplos:
Obtenha um Dataset de uma lista contendo os exemplos:
>>> ds = Dataset.from_list([{"text": "hello there !"}, {"text": "general kenobi !"}]})Pass features para definir os tipos de coluna, por exemplo, para um conjunto de dados de imagens:
>>> features = Features({"image": Image()})
>>> ds = Dataset.from_list([{"image": "path/to/image.png"}], features=features)Os datasets são baseados no Arrow, que é um formato colunar, e, portanto, esperam que cada exemplo tenha o mesmo tipo e subtipos, e que os dicionários tenham as mesmas chaves e tipos de valores. Ao carregar um dataset, ocorre um erro quando os campos têm tipos incompatíveis, e os campos ausentes nos dicionários são preenchidos com None para que todos os dicionários tenham as mesmas chaves e tipos de valores.
Para evitar isso e permitir tipos mistos sem erros, você pode usar on_mixed_types="use_json" ou especificar features= com um tipo 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"}]Isso também é útil para listas de dicionários com chaves e valores arbitrários, para evitar preencher campos ausentes com 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}]] # OKOutro exemplo com dados de chamada de ferramentas:
>>> 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 )
Parâmetros
- generator ( —
Callable): Uma função geradora queyieldsexemplos. - features (Features, opcional) — Recursos do conjunto de dados.
- cache_dir (
str, opcional, padrão"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - gen_kwargs(
dict, opcional) — Argumentos de palavra-chave a serem passados para o chamávelgenerator. Você pode definir um conjunto de dados particionado passando a lista de partições emgen_kwargse definindonum_procmaior que 1. - num_proc (
int, opcional, padrão éNone) — Número de processos ao baixar e gerar o dataset localmente. Isso é útil se o dataset for composto por vários arquivos. O multiprocessing é desativado por padrão. Senum_procfor maior que um, todos os valores de lista emgen_kwargsdevem ter o mesmo comprimento. Esses valores serão divididos entre as chamadas ao gerador. O número de shards será o mínimo entre a lista mais curta emgen_kwargsenum_proc.Adicionado na 2.7.0
- split (NamedSplit, padrão é
Split.TRAIN) — Nome da divisão a ser atribuído ao dataset.Adicionado na 2.21.0
- fingerprint (
str, opcional) — Fingerprint que será usado para gerar o ID do dataset. Por padrãofingerprinté gerado por meio de hash da função geradora e de todos os argumentos, o que pode ser lento se usar objetos grandes, como modelos de IA.Adicionado na 4.3.0
- **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para :
GeneratorConfig.
Crie um Dataset a partir de um gerador.
Carregue os dados do gerador, cacheie os dados em formato Arrow no disco e retorne o Dataset dos dados Arrow mapeados na memória no disco.
A tabela Apache Arrow que sustenta o conjunto de dados.
Exemplo:
>>> 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]]Os arquivos de cache contendo a tabela Apache Arrow que sustenta o conjunto de dados.
Exemplo:
>>> 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'}]Número de colunas no conjunto de dados.
Número de linhas no conjunto de dados (igual a Dataset.len()).
Nomes das colunas no conjunto de dados.
Formato do conjunto de dados (número de colunas, número de linhas).
único
< source >( column: str ) → list
Parâmetros
- column (
str) — Nome da coluna (liste todos os nomes de colunas com column_names).
Retorna
list
Lista de elementos únicos na coluna fornecida.
Retorna uma lista dos elementos únicos em uma coluna.
Isso é implementado no backend de baixo nível e, portanto, é muito rápido.
flatten
< source >( new_fingerprint: typing.Optional[str] = Nonemax_depth = 16 ) → Dataset
Parâmetros
- new_fingerprint (
str, opcional) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação.
Retorna
Uma cópia do conjunto de dados com colunas achatadas.
Achatar a tabela. Cada coluna com tipo struct é achatada em uma coluna por campo do struct. As outras colunas permanecem inalteradas.
Exemplo:
>>> 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
Parâmetros
- features (Features) —
Novos recursos para os quais o dataset deve ser convertido.
O nome dos campos nos recursos deve corresponder aos nomes atuais das colunas.
O tipo dos dados também deve ser convertível de um tipo para o outro.
Para conversões não triviais, por exemplo,
str<->ClassLabel, você deve usar map() para atualizar o Dataset. - batch_size (
int, padrão1000) — Número de exemplos por lote fornecidos ao cast. Sebatch_size <= 0oubatch_size == None, forneça o conjunto de dados completo como um único lote ao cast. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - load_from_cache_file (
bool, padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena o cálculo atual defunctionpuder ser identificado, use-o em vez de recalcular. - cache_file_name (
str, opcional, padrãoNone) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os resultados do cálculo em vez do nome do arquivo de cache gerado automaticamente. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução de map(). - num_proc (
int, opcional, padrãoNone) — Número de processos para multiprocessamento. Por padrão, não utiliza multiprocessamento.
Retorna
Uma cópia do conjunto de dados com recursos convertidos.
Convert o conjunto de dados para um novo conjunto de recursos.
Exemplo:
>>> 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 )
Parâmetros
Convert a coluna para recurso para decodificação.
Exemplo:
>>> 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
Parâmetros
- column_names (
Union[str, List[str]]) — Nome da(s) coluna(s) a ser(em) removida(s). - new_fingerprint (
str, opcional) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação.
Retorna
Uma cópia do objeto de dataset sem as colunas a serem removidas.
Remove uma ou várias colunas do conjunto de dados e os recursos associados a elas.
Você também pode remover uma coluna usando map() com remove_columns, mas o método presente não copia os dados das colunas restantes e, portanto, é mais rápido.
Exemplo:
>>> 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
Parâmetros
- original_column_name (
str) — Nome da coluna a ser renomeada. - new_column_name (
str) — Novo nome para a coluna. - new_fingerprint (
str, opcional) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação.
Retorna
Uma cópia do conjunto de dados com uma coluna renomeada.
Renomeie uma coluna no dataset e mova os recursos associados à coluna original para o novo nome da coluna.
rename_columns
< source >( column_mapping: dictnew_fingerprint: typing.Optional[str] = None ) → Dataset
Parâmetros
- column_mapping (
Dict[str, str]) — Um mapeamento de colunas para renomear para seus novos nomes - new_fingerprint (
str, opcional) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação.
Retorna
Uma cópia do conjunto de dados com colunas renomeadas
Renomeie várias colunas no conjunto de dados e mova os recursos associados às colunas originais para os novos nomes de coluna.
select_columns
< source >( column_names: typing.Union[str, list[str]]new_fingerprint: typing.Optional[str] = None ) → Dataset
Parâmetros
- column_names (
Union[str, List[str]]) — Nome da(s) coluna(s) a ser(em) mantida(s). - new_fingerprint (
str, opcional) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação.
Retorna
Uma cópia do objeto de conjunto de dados que consiste apenas nas colunas selecionadas.
Selecione uma ou várias colunas no conjunto de dados e os recursos associados a elas.
class_encode_column
< source >( column: strinclude_nulls: bool = False )
Parâmetros
- column (
str) — O nome da coluna para converter (liste todos os nomes de colunas com column_names) - include_nulls (
bool, padrão éFalse) — Se deve incluir valores nulos nos rótulos de classe. SeTrue, os valores nulos serão codificados como o rótulo de classe"None".Adicionado na 1.14.2
Converte a coluna indicada em ClassLabel e atualiza a tabela.
Exemplo:
>>> 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')}Número de linhas no conjunto de dados.
Itere pelos exemplos.
Se um formato for definido com Dataset.set_format(), as linhas serão retornadas no formato selecionado.
iter
< source >( batch_size: intdrop_last_batch: bool = False )
Itere pelos lotes de tamanho batch_size.
Se um formato for definido com [~datasets.Dataset.set_format], as linhas serão retornadas no formato selecionado.
formatted_as
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
Parâmetros
- type (
str, opcional) — O tipo de saída selecionado em[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonesignifica que getitem retorna objetos Python (padrão). - columns (
List[str], opcional) — Colunas a serem formatadas na saída.Nonesignifica que__getitem__retorna todas as colunas (padrão). - output_all_columns (
bool, padrãoFalse) — Mantém também as colunas não formatadas na saída (como objetos python). - **format_kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave passados para a função de conversão, como
np.array,torch.tensoroutensorflow.ragged.constant.
Para ser usado em uma declaração with. Define o formato de retorno de __getitem__ (tipo e colunas).
set_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
Parâmetros
- type (
str, opcional) — O tipo de saída selecionado em[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonesignifica que__getitem__retorna objetos python (padrão). - columns (
List[str], opcional) — Colunas a serem formatadas na saída.Nonesignifica que__getitem__retorna todas as colunas (padrão). - output_all_columns (
bool, padrãoFalse) — Mantém também as colunas não formatadas na saída (como objetos python). - **format_kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave passados para a função de conversão, como
np.array,torch.tensoroutensorflow.ragged.constant.
Defina o formato de retorno de __getitem__ (tipo e colunas). O formatação dos dados é aplicada em tempo real.
O formato type (por exemplo, “numpy”) é usado para formatar lotes ao usar __getitem__.
Também é possível usar transformações personalizadas para formatação usando set_transform().
É possível chamar map() depois de chamar set_format. Como map pode adicionar novas colunas, a lista de colunas formatadas
é atualizado. Nesse caso, se você aplicar map em um conjunto de dados para adicionar uma nova coluna, essa coluna será formatada da seguinte forma:
new formatted columns = (all columns - previously unformatted columns)Exemplo:
>>> 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 )
Parâmetros
- transform (
Callable, opcional) — Transformação de formatação definida pelo usuário, substitui o formato definido por set_format(). Uma função de formatação é um chamável que recebe um lote (como umdict) como entrada e retorna um lote. Esta função é aplicada imediatamente antes de retornar os objetos em__getitem__. - columns (
List[str], opcional) — Colunas a serem formatadas na saída. Se especificado, o lote de entrada da transformação contém apenas essas colunas. - output_all_columns (
bool, padrãoFalse) — Mantém também as colunas não formatadas na saída (como objetos python). Se definido como True, as outras colunas não formatadas são mantidas junto com a saída do transform.
Defina o formato de retorno de __getitem__ usando esta transformação. A transformação é aplicada em tempo real nos lotes quando __getitem__ é chamado.
Assim como set_format(), isso pode ser redefinido usando reset_format().
Exemplo:
>>> 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])}Redefina o formato de retorno de __getitem__ para objetos Python e todas as colunas.
Igual a self.set_format()
Exemplo:
>>> 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 )
Parâmetros
- type (
str, opcional) — O tipo de saída selecionado em[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonesignifica que__getitem__retorna objetos python (padrão). - columns (
List[str], opcional) — Colunas a serem formatadas na saída.Nonesignifica que__getitem__retorna todas as colunas (padrão). - output_all_columns (
bool, padrãoFalse) — Mantém também as colunas não formatadas na saída (como objetos python). - **format_kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave passados para a função de conversão, como
np.array,torch.tensoroutensorflow.ragged.constant.
Defina o formato de retorno de __getitem__ (tipo e colunas). O formatação dos dados é aplicada em tempo real.
O formato type (por exemplo, “numpy”) é usado para formatar lotes ao usar __getitem__.
Também é possível usar transforms personalizados para formatação usando with_transform().
Ao contrário de set_format(), with_format retorna um novo objeto Dataset.
Exemplo:
>>> 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 )
Parâmetros
- transform (
Callable,optional) — User-defined formatting transform, replaces the format defined by set_format(). A formatting function is a callable that takes a batch (as adict) as input and returns a batch. This function is applied right before returning the objects in__getitem__. - columns (
List[str],optional) — Colunas a serem formatadas na saída. Se especificado, o lote de entrada da transformação contém apenas essas colunas. - output_all_columns (
bool, padrãoFalse) — Mantém também as colunas não formatadas na saída (como objetos Python). Se definido comoTrue, as outras colunas não formatadas são mantidas junto com a saída da transformação.
Defina o formato de retorno de __getitem__ usando esta transformação. A transformação é aplicada em tempo real nos lotes quando __getitem__ é chamado.
Assim como set_format(), isso pode ser redefinido usando reset_format().
Ao contrário de set_transform(), with_transform retorna um novo objeto Dataset.
Exemplo:
>>> 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])}Pode ser usado para indexar colunas (por nomes de string) ou linhas (por índice inteiro ou iterável de índices ou bools).
Limpe todos os arquivos de cache no diretório de cache do dataset, exceto o arquivo de cache atualmente em uso, se houver um.
Tenha cuidado ao executar este comando para garantir que nenhum outro processo esteja usando outros arquivos de cache no momento.
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' )
Parâmetros
- function (
Callable) — Função com uma das seguintes assinaturas:function(example: Dict[str, Any]) -> Dict[str, Any]sebatched=Falseewith_indices=Falseewith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> Dict[str, Any]sebatched=Falseewith_indices=Truee/ouwith_rank=True(um argumento extra para cada)function(batch: Dict[str, List]) -> Dict[str, List]sebatched=Trueewith_indices=Falseewith_rank=Falsefunction(batch: Dict[str, List], *extra_args) -> Dict[str, List]sebatched=Trueewith_indices=Truee/ouwith_rank=True(um argumento extra para cada)
Para uso avançado, a função também pode retornar uma
pyarrow.Table. Se a função for assíncrona, omapexecutará sua função em paralelo. Além disso, se sua função não retornar nada (None), omapexecutará sua função e retornará o dataset inalterado. Se nenhuma função for fornecida, usa-se a função identidade por padrão:lambda x: x. - with_indices (
bool, padrãoFalse) — Fornece índices de exemplo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example, idx[, rank]): .... - with_rank (
bool, padrãoFalse) — Fornece o rank do processo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example[, idx], rank): .... - input_columns (
Optional[Union[str, List[str]]], padrãoNone) — As colunas a serem passadas parafunctioncomo argumentos posicionais. SeNone, umdictmapeando para todas as colunas formatadas é passado como um único argumento. - batched (
bool, padrãoFalse) — Fornece um lote de exemplos parafunction. - batch_size (
int, opcional, padrão1000) — Número de exemplos por lote fornecidos afunctionsebatched=True. Sebatch_size <= 0oubatch_size == None, forneça o conjunto de dados completo como um único lote parafunction. - drop_last_batch (
bool, padrãoFalse) — Se um último lote menor que o batch_size deve ser descartado em vez de ser processado pela função. - remove_columns (
Optional[Union[str, List[str]]], padrãoNone) — Remove uma seleção de colunas durante o mapeamento. As colunas serão removidas antes de atualizar os exemplos com a saída defunction, ou seja, sefunctionestiver adicionando colunas com nomes emremove_columns, essas colunas serão mantidas. - keep_in_memory (
bool, padrãoFalse) — Mantém o conjunto de dados em memória em vez de gravá-lo em um arquivo de cache. - load_from_cache_file (
Optional[bool], padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena o cálculo atual defunctionpuder ser identificado, use-o em vez de recalcular. - cache_file_name (
str, opcional, padrãoNone) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os resultados do cálculo em vez do nome do arquivo de cache gerado automaticamente. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap. - features (
Optional[datasets.Features], padrãoNone) — Use um Features específico para armazenar o arquivo de cache em vez do gerado automaticamente. - disable_nullable (
bool, padrãoFalse) — Não permite valores nulos na tabela. - fn_kwargs (
Dict, opcional, padrãoNone) — Argumentos de palavra-chave a serem passados parafunction. - num_proc (
int, opcional, padrão éNone) — O número de processos a serem usados para multiprocessamento.- Se
Noneou0, nenhum multiprocessing é usado e a operação é executada no processo principal. - 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.
- Se
- new_fingerprint (
str, opcional, padrãoNone) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação. - desc (
str, opcional, padrãoNone) — Descrição significativa para ser exibida junto com a barra de progresso durante o mapeamento de exemplos. - try_original_type (
Optional[bool], padrãoTrue) — Tenta manter os tipos das colunas originais (ex.: int32 -> int32). Defina como False se quiser sempre inferir novos tipos. - on_mixed_types (
Literal["use_json"], opcional, padrão éNone) — Se "use_json", usa o tipo Json() para campos de tipos mistos, ou seja, campos não estruturados que contêm dados sem um esquema predefinido. Nesse caso, um campo com tipo misto é definido como Json().Isso permite carregar listas com uma mistura de strings/inteiros/floats, por exemplo, ou dicionários com tipos de valores arbitrários.
Adicionado na 4.7.0
Aplica uma função a todos os exemplos da tabela (individualmente ou em lotes) e atualiza a tabela. Se sua função retornar uma coluna que já existe, ela será sobrescrita.
Você pode especificar se a função deve ser processada em lote ou não com o parâmetro batched:
- Se
False, a função recebe 1 exemplo e deve retornar 1 exemplo. Um exemplo é um dicionário, por exemplo,{"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 !"]}. - Se
Trueebatch_sizeén > 1, a função recebe um lote denexemplos como entrada e pode retornar um lote comnexemplos, ou com um número arbitrário de exemplos. Observe que o último lote pode ter menos denexemplos. Um lote é um dicionário, por exemplo, um lote denexemplos é{"text": ["Hello there !"] * n}.
Se a função for assíncrona, map executará sua função em paralelo, com até mil chamadas simultâneas.
Recomenda-se usar um asyncio.Semaphore na sua função se você quiser definir um número máximo de operações que podem ser executadas ao mesmo tempo.
Exemplo:
>>> 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)filtro
< 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 )
Parâmetros
- function (
Callable) — Função chamável com uma das seguintes assinaturas:function(example: Dict[str, Any]) -> boolsebatched=Falseewith_indices=Falseewith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> boolsebatched=Falseewith_indices=Truee/ouwith_rank=True(um argumento extra para cada)function(batch: Dict[str, List]) -> List[bool]sebatched=Trueewith_indices=Falseewith_rank=Falsefunction(batch: Dict[str, List], *extra_args) -> List[bool]sebatched=Trueewith_indices=Truee/ouwith_rank=True(um argumento extra para cada)
Se a função for assíncrona,
filterexecutará sua função em paralelo. Se nenhuma função for fornecida, o padrão é uma função que sempre retornaTrue:lambda x: True. - with_indices (
bool, padrãoFalse) — Fornece índices de exemplo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example, idx[, rank]): .... - with_rank (
bool, padrãoFalse) — Fornece o rank do processo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example[, idx], rank): .... - input_columns (
strouList[str], opcional) — As colunas a serem passadas parafunctioncomo argumentos posicionais. SeNone, umdictmapeando para todas as colunas formatadas é passado como um único argumento. - batched (
bool, padrãoFalse) — Fornece um lote de exemplos parafunction. - batch_size (
int, opcional, padrão1000) — Número de exemplos por lote fornecidos àfunctionsebatched = True. Sebatched = False, um exemplo por lote é passado para afunction. Sebatch_size <= 0oubatch_size == None, forneça o conjunto de dados completo como um único lote para afunction. - keep_in_memory (
bool, padrãoFalse) — Mantém o conjunto de dados em memória em vez de gravá-lo em um arquivo de cache. - load_from_cache_file (
Optional[bool], padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena o cálculo atual defunctionpuder ser identificado, use-o em vez de recalcular. - cache_file_name (
str, opcional) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os resultados do cálculo em vez do nome do arquivo de cache gerado automaticamente. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap. - fn_kwargs (
dict, opcional) — Argumentos de palavra-chave a serem passados parafunction. - num_proc (
int, opcional, padrão éNone) — O número de processos a serem usados para multiprocessamento. Se for None ou 0, nenhum multiprocessamento é usado e a operação é executada no processo principal. Se for maior que 1, um ou vários processos de trabalho são usados para processar dados em paralelo. Observação: a função passada para map() deve ser serializável (picklable) para que o multiprocessamento funcione corretamente (ou seja, prefira funções definidas no nível superior de um módulo, não dentro de outra função ou classe).- Se
Noneou0, nenhum multiprocessing é usado e a operação é executada no processo principal. - Se for maior que
1, um ou vários processos de worker são usados para processar dados em paralelo. Observação: a função passada paramap()deve ser picklable para que a multiprocessamento funcione corretamente (ou seja, prefira funções definidas no nível superior de um módulo, não dentro de outra função ou classe).
- Se
- suffix_template (
str) — Secache_file_namefor especificado, esse sufixo será adicionado ao final do nome base de cada arquivo. Por exemplo, secache_file_namefor"processed.arrow", então pararank = 1enum_proc = 4, o arquivo resultante seria"processed_00001_of_00004.arrow"para o sufixo padrão (padrão_{rank:05d}_of_{num_proc:05d}). - new_fingerprint (
str, opcional) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação. - desc (
str, opcional, padrãoNone) — Descrição significativa para ser exibida junto com a barra de progresso durante o filtramento de exemplos.
Aplicar uma função de filtro a todos os elementos da tabela em lotes e atualizar a tabela para que o conjunto de dados inclua apenas exemplos de acordo com a função de filtro.
Se a função for assíncrona, o filter executará sua função em paralelo, com até mil chamadas simultâneas (configurável).
É recomendável usar um asyncio.Semaphore na sua função se você quiser definir um número máximo de operações que podem ser executadas ao mesmo tempo.
selecionar
< 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 )
Parâmetros
- indices (
range,list,iterable,ndarrayouSeries) — Intervalo, lista ou array unidimensional de índices inteiros para indexação. Se os índices corresponderem a um intervalo contíguo, a tabela Arrow é simplesmente fatiada. No entanto, passar uma lista de índices que não são contíguos cria um mapeamento de índices, o que é muito menos eficiente, mas ainda assim mais rápido do que recriar uma tabela Arrow feita das linhas solicitadas. - keep_in_memory (
bool, padrãoFalse) — Mantém o mapeamento de índices na memória em vez de gravá-lo em um arquivo de cache. - indices_cache_file_name (
str, opcional, padrãoNone) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar o mapeamento de índices em vez do nome do arquivo de cache gerado automaticamente. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap. - new_fingerprint (
str, opcional, padrãoNone) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação.
Crie um novo dataset com as linhas selecionadas seguindo a lista/matriz de índices.
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 )
Parâmetros
- column_names (
Union[str, Sequence[str]]) — Nome(s) da(s) coluna(s) para ordenação. - reverse (
Union[bool, Sequence[bool]], padrãoFalse) — SeTrue, ordena em ordem decrescente em vez de crescente. Se um único bool for fornecido, o valor é aplicado à ordenação de todos os nomes de colunas. Caso contrário, uma lista de bools com o mesmo comprimento e ordem que column_names deve ser fornecida. - null_placement (
str, padrão éat_end) — ColocaNonevalores no início seat_startoufirstou no final seat_endoulastAdicionado na 1.14.2
- keep_in_memory (
bool, padrãoFalse) — Mantém os índices ordenados na memória em vez de gravá-los em um arquivo de cache. - load_from_cache_file (
Optional[bool], padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena os índices ordenados puder ser identificado, use-o em vez de recalculá-los. - indices_cache_file_name (
str, opcional, padrãoNone) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os índices ordenados em vez do nome do arquivo de cache gerado automaticamente. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de gravação para o escritor do arquivo de cache. Um valor maior resulta em arquivos de cache menores, enquanto um valor menor consome menos memória temporária. - new_fingerprint (
str, opcional, padrãoNone) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação
Crie um novo conjunto de dados ordenado de acordo com uma única coluna ou múltiplas colunas.
Exemplo:
>>> 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 )
Parâmetros
- seed (
int, opcional) — Uma semente para inicializar o BitGenerator padrão segenerator=None. SeNone, uma entropia fresca e imprevisível será obtida do SO. Se umintouarray_like[ints]for passado, ele será passado para SeedSequence para derivar o estado inicial do BitGenerator. - generator (
numpy.random.Generator, opcional) — Generator aleatório do Numpy a ser usado para calcular a permutação das linhas do dataset. Segenerator=None(padrão), usanp.random.default_rng(o BitGenerator padrão (PCG64) do NumPy). - keep_in_memory (
bool, padrãoFalse) — Mantém os índices embaralhados na memória em vez de gravá-los em um arquivo de cache. - load_from_cache_file (
Optional[bool], padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena os índices embaralhados puder ser identificado, use-o em vez de recalculá-los. - indices_cache_file_name (
str, opcional) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os índices embaralhados em vez do nome do arquivo de cache gerado automaticamente. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap. - new_fingerprint (
str, opcional, padrãoNone) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação.
Crie um novo Dataset em que as linhas são embaralhadas.
Atualmente, o embaralhamento usa geradores aleatórios do numpy. Você pode fornecer um BitGenerator do NumPy para usar, ou uma seed para iniciar o gerador aleatório padrão do NumPy (PCG64).
Shuffling pega a lista de índices [0:len(my_dataset)] e embaralha-a para criar um mapeamento de índices.
No entanto, assim que seu Dataset possui um mapeamento de índices, a velocidade pode ficar 10x mais lenta.
Isso ocorre porque há uma etapa extra para obter o índice da linha a ser lido usando o mapeamento de índices e, mais importante, você não está mais lendo blocos contíguos de dados.
Para restaurar a velocidade, você precisaria reescrever o conjunto de dados inteiro no seu disco novamente usando Dataset.flatten_indices(), que remove o mapeamento de índices.
Isso pode levar bastante tempo, dependendo do tamanho do seu conjunto de dados:
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 againNesse caso, recomendamos alternar para um IterableDataset e aproveitar seu método rápido de embaralhamento aproximado IterableDataset.shuffle().
Ele apenas embaralha a ordem dos shards e adiciona um buffer de embaralhamento ao seu dataset, mantendo a velocidade do seu dataset otimizada:
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
passCrie um novo Dataset que ignora os primeiros n elementos.
Exemplo:
>>> 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 .'}]Crie um novo Dataset com apenas os primeiros n elementos.
Exemplo:
>>> 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 )
Parâmetros
- test_size (
Union[float, int, None], opcional) — Tamanho da divisão de teste Sefloat, deve estar entre0.0e1.0e representar a proporção do conjunto de dados a incluir na divisão de teste. Seint, representa o número absoluto de amostras de teste. SeNone, o valor é definido como o complemento do tamanho do treino. Setrain_sizetambém forNone, será definido como0.25. - train_size (
Union[float, int, None], opcional) — Tamanho da divisão de treino Sefloat, deve estar entre0.0e1.0e representar a proporção do conjunto de dados a incluir na divisão de treino. Seint, representa o número absoluto de amostras de treino. SeNone, o valor é definido automaticamente como o complemento do tamanho do teste. - shuffle (
bool, opcional, padrãoTrue) — Se os dados devem ser embaralhados antes da divisão. - stratify_by_column (
str, opcional, padrãoNone) — O nome da coluna de rótulos a ser usada para realizar a divisão estratificada dos dados. - seed (
int, opcional) — Uma semente para inicializar o BitGenerator padrão segenerator=None. SeNone, uma entropia fresca e imprevisível será obtida do SO. Se umintouarray_like[ints]for passado, ele será passado para SeedSequence para derivar o estado inicial do BitGenerator. - generator (
numpy.random.Generator, opcional) — Generator aleatório do Numpy a ser usado para calcular a permutação das linhas do dataset. Segenerator=None(padrão), usanp.random.default_rng(o BitGenerator padrão (PCG64) do NumPy). - keep_in_memory (
bool, padrãoFalse) — Mantém os índices das divisões em memória em vez de gravá-los em um arquivo de cache. - load_from_cache_file (
Optional[bool], padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena os índices das divisões puder ser identificado, use-o em vez de recalculá-los. - train_cache_file_name (
str, opcional) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os índices do split de treino em vez do nome do arquivo de cache gerado automaticamente. - test_cache_file_name (
str, opcional) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os índices do conjunto de teste em vez do nome do arquivo de cache gerado automaticamente. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap. - train_new_fingerprint (
str, opcional, padrãoNone) — A nova impressão digital do conjunto de treinamento após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação - test_new_fingerprint (
str, opcional, padrãoNone) — O novo fingerprint do conjunto de testes após a transformação. SeNone, o novo fingerprint é calculado usando um hash do fingerprint anterior e dos argumentos da transformação
Retorna um dicionário (datasets.DatasetDict) com dois subconjuntos aleatórios de treino e teste (train e test Dataset splits).
Os splits são criados a partir do dataset de acordo com test_size, train_size e shuffle.
Este método é semelhante ao train_test_split do scikit-learn.
Exemplo:
>>> 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 )
Parâmetros
- num_shards (
int) — Quantos shards dividir o dataset em. - index (
int) — Qual shard selecionar e retornar. - contiguous — (
bool, padrãoTrue): Se deve selecionar blocos contíguos de índices para os shards. - keep_in_memory (
bool, padrãoFalse) — Mantém o conjunto de dados em memória em vez de gravá-lo em um arquivo de cache. - indices_cache_file_name (
str, opcional) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os índices de cada shard em vez do nome do arquivo de cache gerado automaticamente. - writer_batch_size (
int, padrão1000) — Isso diz respeito apenas ao mapeamento de índices. Número de índices por operação de escrita para o escritor do arquivo de cache. Esse valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap.
Retorna o shard de índice index do conjunto de dados dividido em num_shards partes.
Isso faz o particionamento de forma determinística. dataset.shard(n, i) divide o conjunto de dados em blocos contíguos,
para que possa ser facilmente concatenado novamente após o processamento. Se len(dataset) % n == l, então os
primeiros l conjuntos de dados têm comprimento (len(dataset) // n) + 1, e os conjuntos de dados restantes têm comprimento (len(dataset) // n). datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)]) retorna um conjunto de dados com a mesma ordem que o original.
Observação: n deve ser menor ou igual ao número de elementos no conjunto de dados len(dataset).
Por outro lado, dataset.shard(n, i, contiguous=False) contém todos os elementos do conjunto de dados cujo índice mod n = i.
Certifique-se de fazer o sharding antes de usar qualquer operador de randomização (como shuffle).
É melhor usar o operador de sharding no início do pipeline do dataset.
Exemplo:
>>> 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 )
Crie um novo Dataset que repete o dataset subjacente num_times vezes.
Assim como itertools.repeat, repetir uma única vez retorna o conjunto de dados completo.
Exemplo:
>>> 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 )
Parâmetros
- batch_size (
int, opcional) — Tamanho dos lotes a serem carregados do conjunto de dados. O padrão éNone, o que implica que o conjunto de dados não será loteado, mas o conjunto de dados retornado pode ser loteado posteriormente comtf_dataset.batch(batch_size). - columns (
List[str]oustr, opcional) — Coluna(s) do dataset a carregar notf.data.Dataset. Podem ser usados nomes de colunas criados pelocollate_fnque não existem no dataset original. - shuffle(
bool, padrãoFalse) — Embaralha a ordem do conjunto de dados ao carregar. RecomendadoTruepara treinamento,Falsepara validação/avaliação. - drop_remainder(
bool, padrão éFalse) — Descarta o último lote incompleto ao carregar. Garante que todos os lotes gerados pelo conjunto de dados tenham o mesmo comprimento na dimensão do lote. - collate_fn(
Callable, opcional) — Uma função ou objeto chamável (como umDataCollator) que irá agrupar listas de amostras em um lote. - collate_fn_args (
Dict, opcional) — Umdictopcional de argumentos de palavra-chave a serem passados para ocollate_fn. - label_cols (
List[str]oustr, padrãoNone) — Coluna(s) do dataset a carregar como rótulos. Observe que muitos modelos calculam a perda internamente em vez de deixar o Keras fazê-lo, caso em que passar os rótulos aqui é opcional, desde que estejam nascolumnsde entrada. - prefetch (
bool, padrãoTrue) — Se o dataloader deve ser executado em uma thread separada e manter um pequeno buffer de lotes para o treinamento. Melhora o desempenho ao permitir que os dados sejam carregados em segundo plano enquanto o modelo está em treinamento. - num_workers (
int, padrão0) — Número de workers a serem usados para carregar o dataset. - num_test_batches (
int, padrão20) — Número de lotes a serem usados para inferir a assinatura de saída do conjunto de dados. Quanto maior esse número, mais precisa será a assinatura, mas mais tempo levará para criar o conjunto de dados.
Crie um tf.data.Dataset a partir do Dataset subjacente. Este tf.data.Dataset carregará e agrupará lotes do Dataset e é adequado para ser passado a métodos como model.fit() ou model.predict(). O dataset produzirá dicts tanto para entradas quanto para rótulos, a menos que o dict contenha apenas uma única chave, caso em que um tf.Tensor bruto será produzido em vez disso.
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 )
Parâmetros
- repo_id (
str) — O ID do repositório para o qual será feito o push, no seguinte formato:<user>/<dataset_name>ou<org>/<dataset_name>. Também aceita<dataset_name>, que usará o namespace do usuário conectado por padrão.Também pode ser um local dentro de um bucket, por exemplo,
buckets/<user_or_org>/<bucket_name>/... - config_name (
str, padrão “default”) — O nome da configuração (ou subconjunto) de um conjunto de dados. O padrão é “default”. - set_default (
bool, opcional) — Se deve definir esta configuração como a padrão. Caso contrário, a configuração padrão é a chamada “default”. - split (
str, opcional) — O nome da divisão que será atribuído a esse conjunto de dados. O padrão éself.split. - data_dir (
str, opcional) — Nome do diretório que conterá os arquivos de dados enviados. O valor padrão é oconfig_namese for diferente de “default”, caso contrário “data”.Adicionado na 2.17.0
- commit_message (
str, opcional) — Mensagem a ser commitada durante o push. O padrão será"Upload dataset". - commit_description (
str, opcional) — Descrição do commit que será criado. Além disso, descrição do PR, se um PR for criado (create_pré True).Adicionado na 2.16.0
- private (
bool, opcional) — Se deve tornar o repositório privado. SeNone(padrão), o repositório será público, a menos que o padrão da organização seja privado. Este valor é ignorado se o repositório já existir. - token (
str, opcional) — Um token de autenticação opcional para o Hugging Face Hub. Se nenhum token for passado, será usado por padrão o token salvo localmente ao fazer login comhf auth login. Será gerado um erro se nenhum token for passado e o usuário não estiver conectado. - revision (
str, opcional) — Branch para onde os arquivos enviados serão enviados. O padrão é a branch"main".Adicionado na 2.15.0
- create_pr (
bool, opcional, padrão éFalse) — Se deve criar um PR com os arquivos enviados ou fazer o commit diretamente.Adicionado na 2.15.0
- max_shard_size (
intoustr, opcional, padrão"500MB") — O tamanho máximo dos shards do dataset a serem enviados para o hub. Se expresso como string, deve ser composto por dígitos seguidos de uma unidade (como"5MB"). - num_shards (
int, opcional) — Número de shards a serem gravados. Por padrão, o número de shards depende demax_shard_size.Adicionado na 2.8.0
- embed_external_files (
bool, padrão éTrue) — Se incorporar os bytes dos arquivos nos shards. Especificamente, isso fará o seguinte antes do push para os campos do tipo: - num_proc (
int, opcional, padrão éNone) — Número de processos ao preparar e enviar o dataset. Isso é útil se o dataset for composto por muitas amostras ou arquivos de mídia para incorporar. Usa o contexto “spawn” para funcionar com hf_xet, o cliente rust para uploads rápidos para o HF. O multiprocessing é desabilitado por padrão.Adicionado na 4.0.0
Envia o dataset para o hub como um dataset Parquet. O dataset é enviado usando requisições HTTP e não é necessário ter nem git nem git-lfs instalados.
Os arquivos Parquet resultantes são autossuficientes por padrão. Se o seu conjunto de dados contiver dados de Image, Audio ou Video, os arquivos Parquet armazenarão os bytes das suas imagens ou arquivos de áudio.
Você pode desativar isso definindo embed_external_files como False.
Exemplo:
>>> 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)Se o seu conjunto de dados tiver várias divisões (por exemplo, treino/validação/teste):
>>> 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"]Se você deseja adicionar uma nova configuração (ou subconjunto) a um conjunto de dados (por exemplo, se o conjunto de dados tiver várias tarefas/versões/idiomas):
>>> 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 )
Parâmetros
- dataset_path (
path-like) — Caminho (por exemplo,dataset/train) ou URI remota (por exemplo,s3://my-bucket/dataset/train) do diretório do conjunto de dados onde o conjunto de dados será salvo. - max_shard_size (
intoustr, opcional, padrão"500MB") — O tamanho máximo dos shards do dataset a serem salvos no sistema de arquivos. Se expresso como string, deve ser composto por dígitos seguidos de uma unidade (como"50MB"). - num_shards (
int, opcional) — Número de shards a serem gravados. Por padrão, o número de shards depende demax_shard_sizeenum_proc.Adicionado na 2.8.0
- num_proc (
int, opcional) — Número de processos ao baixar e gerar o dataset localmente. O multiprocessing é desabilitado por padrão.Adicionado na 2.8.0
- storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.8.0
Salva um conjunto de dados em um diretório de conjunto de dados ou em um sistema de arquivos usando qualquer implementação de fsspec.spec.AbstractFileSystem.
Para dados de Image, Audio e Video:
Todos os dados de Image(), Audio() e Video() são armazenados nos arquivos arrow. Se você deseja armazenar caminhos ou urls, use o tipo 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
Parâmetros
- dataset_path (
path-like) — Caminho (por exemplo,"dataset/train") ou URI remoto (por exemplo,"s3//my-bucket/dataset/train") do diretório do dataset de onde o dataset será carregado. - keep_in_memory (
bool, padrãoNone) — Se deve copiar o dataset para a memória. SeNone, o dataset não será copiado para a memória, a menos que seja explicitamente habilitado ao definirdatasets.config.IN_MEMORY_MAX_SIZEpara um valor diferente de zero. Veja mais detalhes na seção melhorar o desempenho. - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.8.0
Retorna
- Se
dataset_pathfor um caminho de um diretório de dataset, o dataset solicitado. - Se
dataset_pathfor um caminho para um diretório de dicionário de datasets, umdatasets.DatasetDictcom cada split.
Carrega um conjunto de dados que foi salvo anteriormente usando save_to_disk a partir de um diretório de conjunto de dados, ou de um sistema de arquivos usando qualquer implementação de 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 )
Parâmetros
- keep_in_memory (
bool, padrãoFalse) — Mantém o conjunto de dados em memória em vez de gravá-lo em um arquivo de cache. - cache_file_name (
str, opcional, padrãoNone) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os resultados do cálculo em vez do nome do arquivo de cache gerado automaticamente. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap. - features (
Optional[datasets.Features], padrãoNone) — Use um Features específico para armazenar o arquivo de cache em vez do gerado automaticamente. - disable_nullable (
bool, padrãoFalse) — Permite valores nulos na tabela. - num_proc (
int, opcional, padrãoNone) — Número máximo de processos ao gerar o cache. Os shards já em cache são carregados sequencialmente - new_fingerprint (
str, opcional, padrãoNone) — A nova impressão digital do conjunto de dados após a transformação. SeNone, a nova impressão digital é calculada usando um hash da impressão digital anterior e dos argumentos da transformação
Crie e cacheie um novo Dataset aplanando o mapeamento de índices.
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
Parâmetros
- path_or_buf (
PathLikeouFileOrBuffer) — Um caminho para um arquivo (por exemplo,file.csv), um URI remoto (por exemplo,hf://datasets/username/my_dataset_name/data.csv), ou um BinaryIO, onde o conjunto de dados será salvo no formato especificado. - batch_size (
int, opcional) — Tamanho do lote a ser carregado na memória e gravado de uma vez. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - num_proc (
int, opcional) — Número de processos para multiprocessamento. Por padrão, não usa multiprocessamento.batch_sizenesse caso é definido comodatasets.config.DEFAULT_MAX_BATCH_SIZE, mas sinta-se à vontade para aumentá-lo para 5x ou 10x do valor padrão, se você tiver poder de computação suficiente. - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.19.0
- **to_csv_kwargs (argumentos de palavra-chave adicionais) —
Parâmetros para passar ao
pandas.DataFrame.to_csv.Alterado em 2.10.0
Agora,
indextem o valor padrãoFalsese não for especificado.Se você deseja gravar o índice, passe
index=Truee também defina um nome para a coluna de índice passandoindex_label.
Retorna
int
O número de caracteres ou bytes gravados.
Exporta o conjunto de dados para csv
to_pandas
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Parâmetros
- batch_size (
int, opcional) — O tamanho (número de linhas) dos lotes sebatchedforTrue. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - batched (
bool) — Defina comoTruepara retornar um gerador que fornece o dataset em lotes debatch_sizelinhas. O padrão éFalse(retorna todo o dataset de uma vez).
Retorna o conjunto de dados como um pandas.DataFrame. Também pode retornar um gerador para conjuntos de dados grandes.
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Parâmetros
- batch_size (
int, opcional) — O tamanho (número de linhas) dos lotes sebatchedforTrue. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - batched (
bool) — Defina comoTruepara retornar um gerador que fornece o dataset em lotes debatch_sizelinhas. O padrão éFalse(retorna todo o dataset de uma vez).
Retorna o conjunto de dados como um dicionário Python. Também pode retornar um gerador para conjuntos de dados grandes.
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
Parâmetros
- path_or_buf (
PathLikeouFileOrBuffer) — Um caminho para um arquivo (por exemplo,file.json), um URI remoto (por exemplo,hf://datasets/username/my_dataset_name/data.json), ou um BinaryIO, onde o conjunto de dados será salvo no formato especificado. - batch_size (
int, opcional) — Tamanho do lote a ser carregado na memória e gravado de uma vez. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - num_proc (
int, opcional) — Número de processos para multiprocessamento. Por padrão, não usa multiprocessamento.batch_sizenesse caso é definido comodatasets.config.DEFAULT_MAX_BATCH_SIZE, mas sinta-se à vontade para aumentá-lo para 5x ou 10x do valor padrão, se você tiver poder de computação suficiente. - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.19.0
- **to_json_kwargs (argumentos de palavra-chave adicionais) —
Parâmetros para passar ao
pandas.DataFrame.to_json. Os argumentos padrão sãolines=Truee `orient=“records”.Alterado em 2.11.0
O parâmetro
indextem o valor padrãoFalseseorientfor"split"ou"table".Se você deseja gravar o índice, passe
index=True.
Retorna
int
O número de caracteres ou bytes gravados.
Exporte o conjunto de dados para JSON Lines ou JSON.
O formato de saída padrão é JSON Lines.
Para exportar para JSON, passe o argumento lines=False e o orient desejado.
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
Parâmetros
- path_or_buf (
PathLikeouFileOrBuffer) — Um caminho para um arquivo (por exemplo,file.parquet), um URI remoto (por exemplo,hf://datasets/username/my_dataset_name/data.parquet), ou um BinaryIO, onde o conjunto de dados será salvo no formato especificado. - batch_size (
int, opcional) — Tamanho do lote a ser carregado na memória e escrito de uma vez. Por padrão, visa grupos de linhas com tamanho máximo descomprimido de “100MB”, definido pordatasets.config.MAX_ROW_GROUP_SIZE. - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.19.0
- **parquet_writer_kwargs (argumentos de palavra-chave adicionais) —
Parâmetros para passar ao
pyarrow.parquet.ParquetWriterdo PyArrow.
Retorna
int
O número de caracteres ou bytes gravados.
Exporta o conjunto de dados para 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
Parâmetros
- name (
str) — Nome da tabela SQL. - con (
strousqlite3.Connectionousqlalchemy.engine.Connectionousqlalchemy.engine.Connection) — Uma string URI ou um objeto de conexão SQLite3/SQLAlchemy usado para gravar em um banco de dados. - batch_size (
int, opcional) — Tamanho do lote a ser carregado na memória e gravado de uma vez. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - num_proc (
int, opcional) — Número de processos para multiprocessamento. Por padrão, não usa multiprocessamento.batch_sizenesse caso é definido comodatasets.config.DEFAULT_MAX_BATCH_SIZE, mas sinta-se à vontade para aumentá-lo para 5x ou 10x do valor padrão, se você tiver poder de computação suficiente. - **sql_writer_kwargs (argumentos de palavra-chave adicionais) —
Parâmetros para passar ao
pandas.DataFrame.to_sql.Alterado em 2.11.0
Agora,
indextem o valor padrãoFalsese não for especificado.Se você deseja gravar o índice, passe
index=Truee também defina um nome para a coluna de índice passandoindex_label.
Retorna
int
O número de registros gravados.
Exporta o conjunto de dados para um banco de dados SQL.
to_iterable_dataset
< source >( num_shards: typing.Optional[int] = 1 )
Parâmetros
- num_shards (
int, padrão1) — Número de shards a definir ao instanciar o dataset iterável. Isso é especialmente útil para datasets grandes, permitindo embaralhar corretamente, e também para habilitar o carregamento paralelo rápido usando um PyTorch DataLoader ou em configurações distribuídas, por exemplo. Os shards são definidos usando datasets.Dataset.shard(): eles simplesmente fatiam os dados sem gravar nada em disco.
Obtenha um datasets.IterableDataset a partir de um datasets.Dataset de estilo mapa. Isso é equivalente a carregar um conjunto de dados em modo de streaming com datasets.load_dataset(), mas muito mais rápido, pois os dados são transmitidos a partir de arquivos locais.
Ao contrário dos datasets no estilo mapa, os datasets iteráveis são preguiçosos e podem apenas ser iterados (por exemplo, usando um laço for). Como são lidos sequencialmente nos loops de treinamento, os datasets iteráveis são muito mais rápidos do que os datasets no estilo mapa. Todas as transformações aplicadas a datasets iteráveis, como filtragem ou processamento, são feitas em tempo real quando você começa a iterar sobre o dataset.
Ainda assim, é possível embaralhar um dataset iterável usando datasets.IterableDataset.shuffle(). Este é um embaralhamento aproximado rápido que funciona melhor se você tiver vários shards e especificar um tamanho de buffer grande o suficiente.
Para obter o melhor desempenho de velocidade, certifique-se de que seu conjunto de dados não tenha um mapeamento de índices.
Se esse for o caso, os dados não são lidos de forma contígua, o que pode ser lento às vezes.
Você pode usar ds = ds.flatten_indices() para gravar seu conjunto de dados em blocos contíguos de dados e ter a velocidade ideal antes de alternar para um conjunto de dados iterável.
Exemplo:
Com filtragem e processamento preguiçosos:
>>> 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:
... passCom sharding para permitir shuffling eficiente:
>>> 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:
... passCom um DataLoader do PyTorch:
>>> 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:
... passCom um DataLoader do PyTorch e embaralhamento:
>>> 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:
... passEm uma configuração distribuída como PyTorch DDP com um PyTorch DataLoader e embaralhamento
>>> 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:
... passCom embaralhamento e múltiplas épocas:
>>> 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'> )
Parâmetros
- column (
str) — A coluna dos vetores a serem adicionados ao índice. - index_name (
str, opcional) — Oindex_name/identificador do índice. Este é oindex_nameusado para chamar get_nearest_examples() ou search(). Por padrão, corresponde acolumn. - device (
Union[int, List[int]], opcional) — Se for um inteiro positivo, este é o índice da GPU a ser usada. Se for um inteiro negativo, usa todas as GPUs. Se uma lista de inteiros positivos for passada, executa apenas nessas GPUs. Por padrão, usa a CPU. - string_factory (
str, opcional) — Isso é passado para a fábrica de índices do Faiss para criar o índice. A classe de índice padrão éIndexFlat. - metric_type (
int, opcional) — Tipo de métrica. Ex:faiss.METRIC_INNER_PRODUCToufaiss.METRIC_L2. - custom_index (
faiss.Index, opcional) — Índice Faiss personalizado que você já instanciou e configurou para suas necessidades. - batch_size (
int) — Tamanho do lote a ser usado ao adicionar vetores aoFaissIndex. O valor padrão é1000.Adicionado na 2.4.0
- train_size (
int, opcional) — Se o índice precisar de uma etapa de treinamento, especifica quantos vetores serão usados para treinar o índice. - faiss_verbose (
bool, padrãoFalse) — Ativa a verbosidade do índice Faiss. - dtype (
data-type) — O dtype dos arrays numpy que são indexados. O padrão énp.float32.
Adicione um índice denso usando Faiss para recuperação rápida.
Por padrão, o índice é feito sobre os vetores da coluna especificada.
Você pode especificar device se quiser executá-lo na GPU (device deve ser o índice da GPU).
Você pode encontrar mais informações sobre o Faiss aqui:
- Para fábrica de strings
Exemplo:
>>> 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'> )
Parâmetros
- external_arrays (
np.array) — Se você deseja usar arrays externos à lib para o índice, pode definirexternal_arrays. Ele usaráexternal_arrayspara criar o índice Faiss em vez dos arrays nacolumnfornecida. - index_name (
str) — Oindex_name/identificador do índice. Este é oindex_nameusado para chamar get_nearest_examples() ou search(). - device (Opcional
Union[int, List[int]], optional) — Se for um inteiro positivo, este é o índice da GPU a ser usada. Se for um inteiro negativo, usa todas as GPUs. Se uma lista de inteiros positivos for passada, executa apenas nessas GPUs. Por padrão, usa a CPU. - string_factory (
str, opcional) — Isso é passado para a fábrica de índices do Faiss para criar o índice. A classe de índice padrão éIndexFlat. - metric_type (
int, opcional) — Tipo de métrica. Ex:faiss.faiss.METRIC_INNER_PRODUCToufaiss.METRIC_L2. - custom_index (
faiss.Index, opcional) — Índice Faiss personalizado que você já instanciou e configurou para suas necessidades. - batch_size (
int, opcional) — Tamanho do lote a ser usado ao adicionar vetores ao FaissIndex. O valor padrão é 1000.Adicionado na 2.4.0
- train_size (
int, opcional) — Se o índice precisar de uma etapa de treinamento, especifica quantos vetores serão usados para treinar o índice. - faiss_verbose (
bool, padrão False) — Ativa a verbosidade do índice Faiss. - dtype (
numpy.dtype) — O dtype dos arrays numpy que são indexados. O padrão é np.float32.
Adicione um índice denso usando Faiss para recuperação rápida.
O índice é criado usando os vetores de external_arrays.
Você pode especificar device se quiser executá-lo na GPU (device deve ser o índice da GPU).
Você pode encontrar mais informações sobre o Faiss aqui:
- Para fábrica de strings
save_faiss_index
< source >( index_name: strfile: typing.Union[str, pathlib.PurePath]storage_options: typing.Optional[dict] = None )
Parâmetros
- index_name (
str) — O index_name/identificador do índice. Este é o index_name usado para chamar.get_nearestou.search. - file (
str) — O caminho para o índice faiss serializado no disco ou URI remoto (por exemplo,"s3://my-bucket/index.faiss"). - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.11.0
Salve um FaissIndex em disco.
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 )
Parâmetros
- index_name (
str) — O index_name/identificador do índice. Este é o index_name usado para chamar.get_nearestou.search. - file (
str) — O caminho para o índice faiss serializado no disco ou URI remoto (por exemplo,"s3://my-bucket/index.faiss"). - device (Opcional
Union[int, List[int]]) — Se for um inteiro positivo, este é o índice da GPU a ser usada. Se for um inteiro negativo, usa todas as GPUs. Se uma lista de inteiros positivos for passada, executa apenas nessas GPUs. Por padrão, usa a CPU. - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.11.0
Carregue um FaissIndex do disco.
Se você quiser fazer configurações adicionais, pode ter acesso ao objeto de índice faiss executando .get_index(index_name).faiss_index para adaptá-lo às suas necessidades.
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 )
Parâmetros
- column (
str) — A coluna dos documentos a serem adicionados ao índice. - index_name (
str, opcional) — Oindex_name/identificador do índice. Este é o nome do índice usado para chamar get_nearest_examples() ou search(). Por padrão, corresponde acolumn. - host (
str, opcional, padrãolocalhost) — Host onde o ElasticSearch está em execução. - port (
str, opcional, padrão9200) — Porta em que o ElasticSearch está em execução. - es_client (
elasticsearch.Elasticsearch, opcional) — O cliente elasticsearch usado para criar o índice se host e port foremNone. - es_index_name (
str, opcional) — O nome do índice do elasticsearch usado para criar o índice. - es_index_config (
dict, opcional) — A configuração do índice do elasticsearch. A configuração padrão é:
Adicione um índice de texto usando ElasticSearch para recuperação rápida. Isso é feito in-place.
Exemplo:
>>> 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 )
Parâmetros
- index_name (
str) — Oindex_name/identificador do índice. Este é o nome do índice usado para chamarget_nearestousearch. - es_index_name (
str) — O nome do índice do elasticsearch a ser carregado. - host (
str, opcional, padrãolocalhost) — Host onde o ElasticSearch está em execução. - port (
str, opcional, padrão9200) — Porta em que o ElasticSearch está em execução. - es_client (
elasticsearch.Elasticsearch, opcional) — O cliente elasticsearch usado para criar o índice se host e port foremNone. - es_index_config (
dict, opcional) — A configuração do índice do elasticsearch. A configuração padrão é:
Carregue um índice de texto existente usando ElasticSearch para recuperação rápida.
Liste os colindex_nameumns/identificadores de todos os índices anexados.
Liste o index_name/identificadores de todos os índices anexados.
drop_index
< source >( index_name: str )
Remova o índice com a coluna especificada.
pesquisar
< source >( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, indices)
Parâmetros
- index_name (
str) — O nome/identificador do índice. - query (
Union[str, np.ndarray]) — A query como string seindex_namefor um índice de texto ou como um array numpy seindex_namefor um índice de vetor. - k (
int) — O número de exemplos a serem recuperados.
Retorna
(scores, indices)
Uma tupla de (scores, indices) onde:
- scores (
List[List[float]): as pontuações de recuperação dos exemplos recuperados, obtidas do FAISS (IndexFlatL2por padrão) ou do ElasticSearch - indices (
List[List[int]]): os índices dos exemplos recuperados
Encontre os índices dos exemplos mais próximos no conjunto de dados em relação à consulta.
search_batch
< source >( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_indices)
Parâmetros
- index_name (
str) — Oindex_name/identificador do índice. - queries (
Union[List[str], np.ndarray]) — As queries como uma lista de strings seindex_namefor um índice de texto ou como um array numpy seindex_namefor um índice de vetor. - k (
int) — O número de exemplos a serem recuperados por consulta.
Retorna
(total_scores, total_indices)
Uma tupla de (total_scores, total_indices) onde:
- total_scores (
List[List[float]): as pontuações de recuperação dos exemplos recuperados por consulta, obtidas do FAISS (IndexFlatL2por padrão) ou do ElasticSearch - total_indices (
List[List[int]]): os índices dos exemplos recuperados por consulta
Encontre os índices dos exemplos mais próximos no conjunto de dados em relação à consulta.
get_nearest_examples
< source >( index_name: strquery: typing.Union[str, <built-in function array>]k: int = 10**kwargs ) → (scores, examples)
Parâmetros
- index_name (
str) — O index_name/identificador do índice. - query (
Union[str, np.ndarray]) — A query como string seindex_namefor um índice de texto ou como um array numpy seindex_namefor um índice de vetor. - k (
int) — O número de exemplos a serem recuperados.
Retorna
(scores, examples)
Uma tupla de (scores, examples) onde:
- scores (
List[float]): as pontuações de recuperação dos exemplos recuperados, obtidas do FAISS (IndexFlatL2por padrão) ou do ElasticSearch - exemplos (
dict): os exemplos recuperados
Encontre os exemplos mais próximos no conjunto de dados em relação à consulta.
get_nearest_examples_batch
< source >( index_name: strqueries: typing.Union[list[str], <built-in function array>]k: int = 10**kwargs ) → (total_scores, total_examples)
Parâmetros
- index_name (
str) — Oindex_name/identificador do índice. - queries (
Union[List[str], np.ndarray]) — As queries como uma lista de strings seindex_namefor um índice de texto ou como um array numpy seindex_namefor um índice de vetor. - k (
int) — O número de exemplos a serem recuperados por consulta.
Retorna
(total_scores, total_examples)
Uma tupla de (total_scores, total_examples) onde:
- total_scores (
List[List[float]): as pontuações de recuperação dos exemplos recuperados por consulta, obtidas do FAISS (IndexFlatL2por padrão) ou do ElasticSearch - total_examples (
List[dict]): os exemplos recuperados por consulta
Encontre os exemplos mais próximos no conjunto de dados em relação à consulta.
Objeto DatasetInfo contendo todos os metadados do conjunto de dados.
objeto NamedSplit correspondente a uma divisão nomeada do conjunto de dados.
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 )
Parâmetros
- path_or_paths (
path-likeou lista depath-like) — Caminho(s) do(s) arquivo(s) CSV. - split (NamedSplit, opcional) — Nome da divisão a ser atribuído ao conjunto de dados.
- features (Features, opcional) — Recursos do conjunto de dados.
- cache_dir (
str, opcional, padrão"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - num_proc (
int, opcional, padrão éNone) — Número de processos ao baixar e gerar o dataset localmente. Isso é útil se o dataset for composto por vários arquivos. O multiprocessing é desativado por padrão.Adicionado na 2.8.0
- **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
pandas.read_csv.
Crie um Dataset a partir de arquivo(s) CSV.
Leia os arquivos CSV, cacheie os dados em formato Arrow no disco e retorne o Dataset a partir dos dados Arrow mapeados na memória no disco.
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 )
Parâmetros
- path_or_paths (
path-likeou lista depath-like) — Caminho(s) do(s) arquivo(s) JSON ou JSON Lines. - split (NamedSplit, opcional) — Nome da divisão a ser atribuído ao conjunto de dados.
- features (Features, opcional) — Recursos do conjunto de dados.
- cache_dir (
str, opcional, padrão"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - field (
str, opcional) — Nome do campo do arquivo JSON onde o conjunto de dados está contido. - num_proc (
int, opcional padrão éNone) — Número de processos ao baixar e gerar o dataset localmente. Isso é útil se o dataset for composto por vários arquivos. O multiprocessing é desabilitado por padrão.Adicionado na 2.8.0
- **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
JsonConfig.
Crie um Dataset a partir de arquivo(s) JSON ou JSON Lines.
Leia os arquivos JSON, cacheie os dados em formato Arrow no disco e retorne o Dataset a partir dos dados Arrow mapeados na memória no disco.
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 )
Parâmetros
- path_or_paths (
path-likeou lista depath-like) — Caminho(s) do(s) arquivo(s) Parquet. - split (
NamedSplit, opcional) — Nome da divisão a ser atribuído ao conjunto de dados. - features (
Features, opcional) — Recursos do conjunto de dados. - cache_dir (
str, opcional, padrão"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - columns (
List[str], opcional) — Se não forNone, apenas essas colunas serão lidas do arquivo. O nome de uma coluna pode ser um prefixo de um campo aninhado, por exemplo, ‘a’ selecionará ‘a.b’, ‘a.c’ e ‘a.d.e’. - num_proc (
int, opcional, padrão éNone) — Número de processos ao baixar e gerar o dataset localmente. Isso é útil se o dataset for composto por vários arquivos. O multiprocessing é desativado por padrão.Adicionado na 2.8.0
- filters (
Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]], opcional) — Retorna apenas as linhas que correspondem ao filtro. Se possível, o predicado será empurrado para baixo para explorar as informações de particionamento ou os metadados internos encontrados na fonte de dados, por exemplo, estatísticas do Parquet. Caso contrário, filtra os RecordBatches carregados antes de retorná-los. - fragment_scan_options (
pyarrow.dataset.ParquetFragmentScanOptions, opcional) — Opções específicas de varredura para fragmentos Parquet. Isso é especialmente útil para configurar bufferização e cache.Adicionado na 4.2.0
- on_bad_files (
Literal["error", "warn", "skip"], opcional, padrão é “error”) — Especifica o que fazer ao encontrar um arquivo inválido (um arquivo que não pode ser lido). Os valores permitidos são :- ‘error’, lança uma Exception quando um arquivo inválido é encontrado.
- ‘warn’, emite um aviso quando um arquivo inválido é encontrado e ignora esse arquivo.
- ‘skip’, ignora arquivos inválidos sem gerar exceções ou avisos quando são encontrados.
Adicionado na 4.2.0
- **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
ParquetConfig.
Crie um Dataset a partir de arquivo(s) Parquet.
Leia os arquivos Parquet, cacheie os dados em formato Arrow no disco e retorne o Dataset a partir dos dados Arrow mapeados na memória no disco.
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 )
Parâmetros
- path_or_paths (
path-likeou lista depath-like) — Caminho(s) do(s) arquivo(s) de texto. - split (
NamedSplit, opcional) — Nome da divisão a ser atribuído ao conjunto de dados. - features (
Features, opcional) — Recursos do conjunto de dados. - cache_dir (
str, opcional, padrão"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - num_proc (
int, opcional, padrão éNone) — Número de processos ao baixar e gerar o dataset localmente. Isso é útil se o dataset for composto por vários arquivos. O multiprocessing é desativado por padrão.Adicionado na 2.8.0
- keep_linebreaks — (
bool, padrão False): Se deve manter as quebras de linha. - sample_by (
Literal["line", "paragraph", "document"], padrão “line”) — Se os dados devem ser carregados por linha, parágrafo ou documento. Por padrão, uma linha no dataset = uma linha. - **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
TextConfig.
Crie um Dataset a partir de arquivo(s) de texto.
Leia os arquivos de texto, cacheie os dados em formato Arrow no disco e retorne o Dataset a partir dos dados Arrow mapeados na memória no disco.
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 )
Parâmetros
- sql (
strousqlalchemy.sql.Selectable) — Consulta SQL a ser executada ou nome de uma tabela. - con (
strousqlite3.Connectionousqlalchemy.engine.Connectionousqlalchemy.engine.Connection) — Uma string URI usada para instanciar uma conexão de banco de dados ou um objeto de conexão SQLite3/SQLAlchemy. - features (Features, opcional) — Recursos do conjunto de dados.
- cache_dir (
str, opcional, padrão"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
SqlConfig.
Crie um Dataset a partir de uma consulta SQL ou de uma tabela de banco de dados.
Consulte o banco de dados SQL, cacheie os dados em formato Arrow no disco e retorne o Dataset a partir dos dados Arrow mapeados na memória no disco.
Exemplo:
>>> # 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")O conjunto de dados retornado só pode ser armazenado em cache se
confor especificado como uma string URI.
align_labels_with_mapping
< source >( label2id: dictlabel_column: str )
Alinhe o mapeamento de ID e nome de rótulos do conjunto de dados para corresponder a um mapeamento de entrada label2id.
Isso é útil quando você deseja garantir que os rótulos previstos por um modelo estejam alinhados com o conjunto de dados.
O alinhamento é feito usando os nomes de rótulos em minúsculas.
Exemplo:
>>> # 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 )
Parâmetros
- dsets (
List[datasets.Dataset]ouList[datasets.IterableDataset]) — Lista de Datasets para concatenar. - info (
DatasetInfo, opcional) — Informações do dataset, como descrição, citação, etc. - split (
NamedSplit, opcional) — Nome da divisão do conjunto de dados. - axis (
{0, 1}, padrão é0) — Eixo para concatenação, onde0significa sobre as linhas (verticalmente) e1significa sobre as colunas (horizontalmente).Adicionado na 1.6.0
Concatene vários conjuntos de dados (fontes) em um único conjunto de dados.
Use axis=0 para concatenar verticalmente (padrão) ou axis=1 para concatenar horizontalmente.
Observação para conjuntos de dados iteráveis:
- se axis=0, o
num_shardsdo dataset resultante é a soma dosnum_shardsde cada dataset. - se axis=1, o dataset resultante tem um (1) shard para não desalinhar os dados.
- se os conjuntos de dados foram divididos com datasets.distributed.split_dataset_by_node(), todos eles devem ser divididos da mesma forma, e o conjunto de dados resultante mantém essa divisão.
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
Parâmetros
- datasets (
List[Dataset]ouList[IterableDataset]) — Lista de datasets para intercalar. - probabilities (
List[float], opcional, padrãoNone) — Se especificado, o novo conjunto de dados é construído amostrando exemplos de uma fonte por vez de acordo com essas probabilidades. - seed (
int, opcional, padrãoNone) — A semente aleatória usada para escolher uma fonte para cada exemplo. - info (DatasetInfo, opcional) —
Informações do dataset, como descrição, citação, etc.
Adicionado na 2.4.0
- split (NamedSplit, opcional) —
Nome do split do dataset.
Adicionado na 2.4.0
- stopping_strategy (
str, padrão éfirst_exhausted) — Três estratégias são propostas no momento,first_exhausted,all_exhaustedeall_exhausted_without_replacement. Por padrão,first_exhaustedé uma estratégia de subamostragem, ou seja, a construção do conjunto de dados é interrompida assim que um dos conjuntos de dados ficar sem amostras. Se a estratégia forall_exhausted, usamos uma estratégia de sobreamostragem, ou seja, a construção do conjunto de dados é interrompida assim que todas as amostras de todos os conjuntos de dados tiverem sido adicionadas pelo menos uma vez. Quando a estratégia éall_exhausted_without_replacementgarantimos que cada amostra em cada conjunto de dados seja amostrada apenas uma vez. Observe que, se a estratégia forall_exhausted, o tamanho do conjunto de dados intercalado pode ficar enorme:- sem probabilidades, o conjunto de dados resultante terá
max_length_datasets*nb_datasetamostras. - com as probabilidades dadas, o conjunto de dados resultante terá mais amostras se alguns conjuntos de dados tiverem uma probabilidade muito baixa de serem visitados.
- sem probabilidades, o conjunto de dados resultante terá
Retorna
O tipo de retorno depende do parâmetro datasets. Dataset se a entrada for uma lista de Dataset, IterableDataset se a entrada for uma lista de IterableDataset.
Intercale vários conjuntos de dados (fontes) em um único conjunto de dados. O novo conjunto de dados é construído alternando entre as fontes para obter os exemplos.
Você pode usar esta função em uma lista de objetos Dataset ou em uma lista de objetos IterableDataset.
- Se
probabilitiesforNone(padrão), o novo conjunto de dados é construído alternando entre cada fonte para obter os exemplos. - Se
probabilitiesnão forNone, o novo conjunto de dados é construído obtendo exemplos de uma fonte aleatória de cada vez, de acordo com as probabilidades fornecidas.
O dataset resultante termina quando um dos datasets de origem esgota seus exemplos, exceto quando oversampling é True, caso em que o dataset resultante termina quando todos os datasets tiverem esgotado seus exemplos pelo menos uma vez.
Observação para conjuntos de dados iteráveis:
- O
num_shardsdo dataset resultante é o mínimo dosnum_shardsde cada dataset para garantir um bom paralelismo. Se alguns dos seus datasets tiverem um número muito baixo de shards, você pode usar IterableDataset.reshard(). - Em uma configuração distribuída ou nos workers do PyTorch DataLoader, a estratégia de parada é aplicada por processo. Portanto, a estratégia “first_exhausted” em um dataset iterável particionado pode gerar menos amostras no total (até 1 amostra faltante por subdataset por worker).
Exemplo:
Para conjuntos de dados regulares (estilo mapa):
>>> 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
Parâmetros
- dataset (Dataset ou IterableDataset) — O conjunto de dados a ser dividido por nó.
- rank (
int) — Rank do nó atual. - world_size (
int) — Número total de nós. - strategy (
str, padrão"auto") — Como dividir um dataset iterável. Deve ser um de"auto","shards"ou"examples". Datasets do tipo map suportam apenas"auto".
Retorna
O conjunto de dados a ser usado no nó com a classificação rank.
Divida um conjunto de dados para o nó no rank rank em um pool de nós de tamanho world_size.
Para conjuntos de dados no estilo mapa:
Cada nó recebe um bloco de dados, por exemplo, o rank 0 recebe o primeiro bloco do conjunto de dados. Para maximizar a taxa de transferência do carregamento de dados, os blocos são compostos por dados contíguos no disco, sempre que possível.
Para conjuntos de dados iteráveis:
A strategy de divisão pode ser "auto", "shards" ou "examples":
"shards": os shards são distribuídos igualmente entre os nós"examples": cada nó mantém 1 exemplo deworld_size, pulando os outros exemplos"auto"(padrão): usa"shards"se o conjunto de dados tiver um número de shards que é um fator deworld_size(ou seja, sedataset.num_shards % world_size == 0), o que é o mais otimizado. Caso contrário, usa"examples".
Se você embaralhar seu conjunto de dados iterável em uma configuração distribuída, certifique-se de definir uma
seedfixa em IterableDataset.shuffle() para que a mesma lista embaralhada de shards seja usada em todos os nós, a fim de saber quais shards o nó deve ignorar.
Ao aplicar transforms em um dataset, os dados são armazenados em arquivos de cache. O mecanismo de cache permite recarregar um arquivo de cache existente caso ele já tenha sido calculado.
Recarregar um conjunto de dados é possível, pois os arquivos de cache são nomeados usando a impressão digital do conjunto de dados, que é atualizada após cada transformação.
Se desativado, a biblioteca não recarregará mais os arquivos de datasets em cache ao aplicar transformações nos datasets. Mais precisamente, se o cache for desativado:
- os arquivos de cache são sempre recriados
- os arquivos de cache são gravados em um diretório temporário que é excluído quando a sessão é encerrada
- os arquivos de cache são nomeados usando um hash aleatório em vez da impressão digital do conjunto de dados
- Use save_to_disk() para salvar um dataset transformado, caso contrário ele será excluído quando a sessão for encerrada
- O cache não afeta load_dataset(). Se você deseja regenerar um dataset do zero, deve usar
o parâmetro
download_modeem load_dataset().
Ao aplicar transforms em um dataset, os dados são armazenados em arquivos de cache. O mecanismo de cache permite recarregar um arquivo de cache existente caso ele já tenha sido calculado.
Recarregar um conjunto de dados é possível, pois os arquivos de cache são nomeados usando a impressão digital do conjunto de dados, que é atualizada após cada transformação.
Se desativado, a biblioteca não recarregará mais os arquivos de datasets em cache ao aplicar transformações nos datasets. Mais precisamente, se o cache for desativado:
- os arquivos de cache são sempre recriados
- os arquivos de cache são gravados em um diretório temporário que é excluído quando a sessão é encerrada
- os arquivos de cache são nomeados usando um hash aleatório em vez da impressão digital do conjunto de dados
- Use save_to_disk() para salvar um dataset transformado, caso contrário ele será excluído quando a sessão for encerrada
- O cache não afeta load_dataset(). Se você deseja regenerar um dataset do zero, deve usar
o parâmetro
download_modeem load_dataset().
Ao aplicar transforms em um dataset, os dados são armazenados em arquivos de cache. O mecanismo de cache permite recarregar um arquivo de cache existente caso ele já tenha sido calculado.
Recarregar um conjunto de dados é possível, pois os arquivos de cache são nomeados usando a impressão digital do conjunto de dados, que é atualizada após cada transformação.
Se desativado, a biblioteca não recarregará mais os arquivos de datasets em cache ao aplicar transformações nos datasets. Mais precisamente, se o cache for desativado:
- os arquivos de cache são sempre recriados
- os arquivos de cache são gravados em um diretório temporário que é excluído quando a sessão é encerrada
- os arquivos de cache são nomeados usando um hash aleatório em vez da impressão digital do conjunto de dados
- use save_to_disk()] para salvar um dataset transformado, caso contrário ele será excluído quando a sessão for encerrada
- O cache não afeta load_dataset(). Se você deseja regenerar um dataset do zero, deve usar
o parâmetro
download_modeem load_dataset().
classe datasets.Column
< source >( source: typing.Union[ForwardRef('Dataset'), ForwardRef('Column')]column_name: str )
Um iterável para uma coluna específica de um Dataset.
Exemplo:
DatasetDict
Dicionário com os nomes das divisões como chaves (por exemplo, ‘train’, ‘test’) e objetos Dataset como valores.
Ele também possui métodos de transformação de dataset, como map ou filter, para processar todas as divisões de uma vez.
Um dicionário (dict de str: datasets.Dataset) com os métodos de transformação de datasets (map, filter, etc.)
As tabelas Apache Arrow que sustentam cada divisão.
Os arquivos de cache contendo a tabela Apache Arrow que sustenta cada divisão.
Exemplo:
>>> 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'}]}Número de colunas em cada divisão do conjunto de dados.
Número de linhas em cada divisão do conjunto de dados.
Nomes das colunas em cada divisão do conjunto de dados.
Formato de cada divisão do conjunto de dados (número de linhas, número de colunas).
único
< source >( column: str ) → Dict[str, list]
Parâmetros
- column (
str) — nome da coluna (liste todos os nomes de colunas com column_names)
Retorna
Dict[str, list]
Dicionário de elementos únicos na coluna fornecida.
Retorna uma lista dos elementos únicos em uma coluna para cada divisão.
Isso é implementado no backend de baixo nível e, portanto, é muito rápido.
Limpe todos os arquivos de cache no diretório de cache do dataset, exceto o arquivo de cache atualmente em uso, se houver. Tenha cuidado ao executar este comando para garantir que nenhum outro processo esteja usando outros arquivos de cache.
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 )
Parâmetros
- function (
callable) — com uma das seguintes assinaturas:function(example: Dict[str, Any]) -> Dict[str, Any]sebatched=Falseewith_indices=Falsefunction(example: Dict[str, Any], indices: int) -> Dict[str, Any]sebatched=Falseewith_indices=Truefunction(batch: Dict[str, list]) -> Dict[str, list]sebatched=Trueewith_indices=Falsefunction(batch: Dict[str, list], indices: list[int]) -> Dict[str, list]sebatched=Trueewith_indices=True
Para uso avançado, a função também pode retornar uma
pyarrow.Table. Se a função for assíncrona, omapexecutará sua função em paralelo. Além disso, se sua função não retornar nada (None), omapexecutará sua função e retornará o dataset inalterado. Se nenhuma função for fornecida, usa-se a função identidade por padrão:lambda x: x. - with_indices (
bool, padrãoFalse) — Fornece índices de exemplo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example, idx): .... - with_rank (
bool, padrãoFalse) — Fornece o rank do processo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example[, idx], rank): .... - with_split (
bool, padrãoFalse) — Fornece o split do processo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example[, idx], split): .... - input_columns (
[Union[str, list[str]]], opcional, padrãoNone) — As colunas a serem passadas parafunctioncomo argumentos posicionais. SeNone, um dicionário mapeando para todas as colunas formatadas é passado como um único argumento. - batched (
bool, padrãoFalse) — Fornece um lote de exemplos parafunction. - batch_size (
int, opcional, padrão1000) — Número de exemplos por lote fornecidos afunctionsebatched=True, sebatch_size <= 0oubatch_size == None, forneça o conjunto de dados completo como um único lote parafunction. - drop_last_batch (
bool, padrãoFalse) — Se um último lote menor que o batch_size deve ser descartado em vez de ser processado pela função. - remove_columns (
[Union[str, list[str]]], opcional, padrãoNone) — Remove uma seleção de colunas durante o mapeamento. As colunas serão removidas antes de atualizar os exemplos com a saída defunction, ou seja, sefunctionestiver adicionando colunas com nomes emremove_columns, essas colunas serão mantidas. - keep_in_memory (
bool, padrãoFalse) — Mantém o conjunto de dados em memória em vez de gravá-lo em um arquivo de cache. - load_from_cache_file (
Optional[bool], padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena o cálculo atual defunctionpuder ser identificado, use-o em vez de recalcular. - cache_file_names (
[Dict[str, str]], opcional, padrãoNone) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os resultados do cálculo em vez do nome do arquivo de cache gerado automaticamente. Você deve fornecer umcache_file_namepor conjunto de dados no dicionário de conjuntos de dados. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap. - features (
[datasets.Features], opcional, padrãoNone) — Use um Features específico para armazenar o arquivo de cache em vez do gerado automaticamente. - disable_nullable (
bool, padrãoFalse) — Não permite valores nulos na tabela. - fn_kwargs (
Dict, opcional, padrãoNone) — Argumentos de palavra-chave a serem passados parafunction - num_proc (
int, opcional, padrão éNone) — O número de processos a serem usados para multiprocessamento. Se for None ou 0, nenhum multiprocessamento é usado e a operação é executada no processo principal. Se for maior que 1, um ou vários processos de trabalho são usados para processar dados em paralelo. Observação: a função passada para map() deve ser serializável (picklable) para que o multiprocessamento funcione corretamente (ou seja, prefira funções definidas no nível superior de um módulo, não dentro de outra função ou classe).- Se
Noneou0, nenhum multiprocessing é usado e a operação é executada no processo principal. - Se for maior que
1, um ou vários processos de worker são usados para processar dados em paralelo. Observação: a função passada paramap()deve ser picklable para que a multiprocessamento funcione corretamente (ou seja, prefira funções definidas no nível superior de um módulo, não dentro de outra função ou classe).
- Se
- desc (
str, opcional, padrãoNone) — Descrição significativa para ser exibida junto com a barra de progresso durante o mapeamento de exemplos. - try_original_type (
Optional[bool], padrãoTrue) — Tenta manter os tipos das colunas originais (ex.: int32 -> int32). Defina como False se quiser sempre inferir novos tipos. - on_mixed_types (
Literal["use_json"], opcional, padrão éNone) — Se "use_json", usa o tipo Json() para campos de tipos mistos, ou seja, campos não estruturados que contêm dados sem um esquema predefinido. Nesse caso, um campo com tipo misto é definido como Json().Isso permite carregar listas com uma mistura de strings/inteiros/floats, por exemplo, ou dicionários com tipos de valores arbitrários.
Adicionado na 4.7.0
Aplica uma função a todos os exemplos da tabela (individualmente ou em lotes) e atualiza a tabela. Se a sua função retornar uma coluna que já existe, ela a sobrescreve. A transformação é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
Você pode especificar se a função deve ser processada em lote ou não com o parâmetro batched:
- Se
False, a função recebe 1 exemplo e deve retornar 1 exemplo. Um exemplo é um dicionário, por exemplo,{"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 !"]}. - Se
Trueebatch_sizeén > 1, a função recebe um lote denexemplos como entrada e pode retornar um lote comnexemplos, ou com um número arbitrário de exemplos. Observe que o último lote pode ter menos denexemplos. Um lote é um dicionário, por exemplo, um lote denexemplos é{"text": ["Hello there !"] * n}.
Se a função for assíncrona, map executará sua função em paralelo, com até mil chamadas simultâneas.
Recomenda-se usar um asyncio.Semaphore na sua função se você quiser definir um número máximo de operações que podem ser executadas ao mesmo tempo.
Exemplo:
>>> 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)filtro
< 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 )
Parâmetros
- function (
Callable) — Callable com uma das seguintes assinaturas:function(example: Dict[str, Any]) -> boolsebatched=Falseewith_indices=Falseewith_rank=Falsefunction(example: Dict[str, Any], *extra_args) -> boolsebatched=Falseewith_indices=Truee/ouwith_rank=True(um argumento extra para cada)function(batch: Dict[str, list]) -> list[bool]sebatched=Trueewith_indices=Falseewith_rank=Falsefunction(batch: Dict[str, list], *extra_args) -> list[bool]sebatched=Trueewith_indices=Truee/ouwith_rank=True(um argumento extra para cada)
Se nenhuma função for fornecida, o padrão é uma função que sempre retorna
True:lambda x: True. - with_indices (
bool, padrãoFalse) — Fornece índices de exemplo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example, idx[, rank]): .... - with_rank (
bool, padrãoFalse) — Fornece o rank do processo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example[, idx], rank): .... - input_columns (
[Union[str, list[str]]], opcional, padrãoNone) — As colunas a serem passadas parafunctioncomo argumentos posicionais. SeNone, um dicionário mapeando para todas as colunas formatadas é passado como um único argumento. - batched (
bool, padrãoFalse) — Fornece um lote de exemplos parafunction. - batch_size (
int, opcional, padrão1000) — Número de exemplos por lote fornecidos afunctionsebatched=Truebatch_size <= 0oubatch_size == None, então forneça o conjunto de dados completo como um único lote parafunction. - keep_in_memory (
bool, padrãoFalse) — Mantém o conjunto de dados em memória em vez de gravá-lo em um arquivo de cache. - load_from_cache_file (
Optional[bool], padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena o cálculo atual defunctionpuder ser identificado, use-o em vez de recalcular. - cache_file_names (
[Dict[str, str]], opcional, padrãoNone) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os resultados do cálculo em vez do nome do arquivo de cache gerado automaticamente. Você deve fornecer umcache_file_namepor conjunto de dados no dicionário de conjuntos de dados. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap. - fn_kwargs (
Dict, opcional, padrãoNone) — Argumentos de palavra-chave a serem passados parafunction - num_proc (
int, opcional, padrão éNone) — O número de processos a serem usados para multiprocessamento. Se for None ou 0, nenhum multiprocessamento é usado e a operação é executada no processo principal. Se for maior que 1, um ou vários processos de trabalho são usados para processar dados em paralelo. Observação: a função passada para map() deve ser serializável (picklable) para que o multiprocessamento funcione corretamente (ou seja, prefira funções definidas no nível superior de um módulo, não dentro de outra função ou classe).- Se
Noneou0, nenhum multiprocessing é usado e a operação é executada no processo principal. - Se for maior que
1, um ou vários processos de worker são usados para processar dados em paralelo. Observação: a função passada paramap()deve ser picklable para que a multiprocessamento funcione corretamente (ou seja, prefira funções definidas no nível superior de um módulo, não dentro de outra função ou classe).
- Se
- desc (
str, opcional, padrãoNone) — Descrição significativa para ser exibida junto com a barra de progresso durante o filtramento de exemplos.
Aplica uma função de filtro a todos os elementos da tabela em lotes e atualiza a tabela para que o conjunto de dados inclua apenas exemplos de acordo com a função de filtro. A transformação é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
Exemplo:
>>> 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 )
Parâmetros
- column_names (
Union[str, Sequence[str]]) — Nome(s) da(s) coluna(s) para ordenação. - reverse (
Union[bool, Sequence[bool]], padrãoFalse) — SeTrue, ordena em ordem decrescente em vez de crescente. Se um único bool for fornecido, o valor é aplicado à ordenação de todos os nomes de colunas. Caso contrário, uma lista de bools com o mesmo comprimento e ordem que column_names deve ser fornecida. - null_placement (
str, padrãoat_end) — Coloca valoresNoneno início seat_startoufirstou no final seat_endoulast - keep_in_memory (
bool, padrãoFalse) — Mantém os índices ordenados na memória em vez de gravá-los em um arquivo de cache. - load_from_cache_file (
Optional[bool], padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena os índices ordenados puder ser identificado, use-o em vez de recalculá-los. - indices_cache_file_names (
[Dict[str, str]], opcional, padrãoNone) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar o mapeamento de índices em vez do nome do arquivo de cache gerado automaticamente. Você deve fornecer umcache_file_namepor conjunto de dados no dicionário de conjuntos de dados. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de gravação para o escritor do arquivo de cache. Um valor maior resulta em arquivos de cache menores, enquanto um valor menor consome menos memória temporária.
Crie um novo conjunto de dados ordenado de acordo com uma única coluna ou múltiplas colunas.
Exemplo:
>>> 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 )
Parâmetros
- seeds (
Dict[str, int]ouint, opcional) — Uma semente para inicializar o BitGenerator padrão segenerator=None. SeNone, uma entropia fresca e imprevisível será obtida do SO. Se umintouarray_like[ints]for passado, ele será passado para SeedSequence para derivar o estado inicial do BitGenerator. Você pode fornecer umseedpor conjunto de dados no dicionário do conjunto de dados. - seed (
int, opcional) — Uma semente para inicializar o BitGenerator padrão segenerator=None. Alias para seeds (umValueErroré lançado se ambos forem fornecidos). - generators (
Dict[str, *optional*, np.random.Generator]) — Generator aleatório do Numpy a ser usado para calcular a permutação das linhas do dataset. Segenerator=None(padrão), usanp.random.default_rng(o BitGenerator padrão (PCG64) do NumPy). Você deve fornecer umgeneratorpor dataset no dicionário de datasets. - keep_in_memory (
bool, padrãoFalse) — Mantém o conjunto de dados em memória em vez de gravá-lo em um arquivo de cache. - load_from_cache_file (
Optional[bool], padrãoTruese o cache estiver habilitado) — Se um arquivo de cache que armazena o cálculo atual defunctionpuder ser identificado, use-o em vez de recalcular. - indices_cache_file_names (
Dict[str, str], opcional) — Forneça o nome de um caminho para o arquivo de cache. Ele é usado para armazenar os mapeamentos de índices em vez do nome do arquivo de cache gerado automaticamente. Você deve fornecer umcache_file_namepor conjunto de dados no dicionário de conjuntos de dados. - writer_batch_size (
int, padrão1000) — Número de linhas por operação de escrita para o escritor do arquivo de cache. Este valor é um bom equilíbrio entre o uso de memória durante o processamento e a velocidade de processamento. Um valor maior faz com que o processamento realize menos consultas, enquanto um valor menor consome menos memória temporária durante a execução demap.
Crie um novo Dataset em que as linhas são embaralhadas.
A transformação é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
Atualmente, o embaralhamento usa geradores aleatórios do numpy. Você pode fornecer um BitGenerator do NumPy para usar, ou uma seed para iniciar o gerador aleatório padrão do NumPy (PCG64).
set_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
Parâmetros
- type (
str, opcional) — O tipo de saída selecionado em[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonesignifica que__getitem__retorna objetos python (padrão). - columns (
list[str], opcional) — Colunas a serem formatadas na saída.Nonesignifica que__getitem__retorna todas as colunas (padrão). - output_all_columns (
bool, padrão False) — Mantém também as colunas não formatadas na saída (como objetos python), - **format_kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave passados para a função de conversão, como
np.array,torch.tensoroutensorflow.ragged.constant.
Defina o formato de retorno de __getitem__ (tipo e colunas).
O formato é definido para cada conjunto de dados no dicionário de conjuntos de dados.
É possível chamar map depois de chamar set_format. Como map pode adicionar novas colunas, a lista de colunas formatadas é atualizada. Nesse caso, se você aplicar map em um dataset para adicionar uma nova coluna, essa coluna será formatada:
new formatted columns = (all columns - previously unformatted columns)
Exemplo:
>>> 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'}Redefina o formato de retorno de __getitem__ para objetos Python e todas as colunas.
A transformação é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
Igual a self.set_format()
Exemplo:
>>> 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 )
Parâmetros
- type (
str, opcional) — O tipo de saída selecionado em[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonesignifica que__getitem__retorna objetos python (padrão). - columns (
list[str], opcional) — Colunas a serem formatadas na saída.Nonesignifica que__getitem__retorna todas as colunas (padrão). - output_all_columns (
bool, padrão False) — Mantém também as colunas não formatadas na saída (como objetos python). - **format_kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave passados para a função de conversão, como
np.array,torch.tensoroutensorflow.ragged.constant.
Para ser usado em uma declaração with. Define o formato de retorno de __getitem__ (tipo e colunas).
A transformação é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
with_format
< source >( type: typing.Optional[str] = Nonecolumns: typing.Optional[list] = Noneoutput_all_columns: bool = False**format_kwargs )
Parâmetros
- type (
str, opcional) — O tipo de saída selecionado em[None, 'numpy', 'torch', 'tensorflow', 'jax', 'arrow', 'pandas', 'polars'].Nonesignifica que__getitem__retorna objetos python (padrão). - columns (
list[str], opcional) — Colunas a serem formatadas na saída.Nonesignifica que__getitem__retorna todas as colunas (padrão). - output_all_columns (
bool, padrãoFalse) — Mantém também as colunas não formatadas na saída (como objetos python). - **format_kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave passados para a função de conversão, como
np.array,torch.tensoroutensorflow.ragged.constant.
Defina o formato de retorno de __getitem__ (tipo e colunas). O formatação dos dados é aplicada em tempo real.
O formato type (por exemplo, “numpy”) é usado para formatar lotes ao usar __getitem__.
O formato é definido para cada conjunto de dados no dicionário de conjuntos de dados.
Também é possível usar transforms personalizados para formatação usando with_transform().
Ao contrário de set_format(), with_format retorna um novo objeto DatasetDict com novos objetos Dataset.
Exemplo:
>>> 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 )
Parâmetros
- transform (
Callable, opcional) — Transformação de formatação definida pelo usuário, substitui o formato definido por set_format(). Uma função de formatação é um objeto chamável que recebe um lote (como um dict) como entrada e retorna um lote. Esta função é aplicada imediatamente antes de retornar os objetos em__getitem__. - columns (
list[str], opcional) — Colunas a serem formatadas na saída. Se especificado, o lote de entrada da transformação contém apenas essas colunas. - output_all_columns (
bool, padrão False) — Mantém também as colunas não formatadas na saída (como objetos Python). Se definido comoTrue, as outras colunas não formatadas são mantidas junto com a saída da transformação.
Defina o formato de retorno de __getitem__ usando esta transformação. A transformação é aplicada em tempo real nos lotes quando __getitem__ é chamado.
A transformação é definida para cada conjunto de dados no dicionário de conjuntos de dados
Assim como set_format(), isso pode ser redefinido usando reset_format().
Ao contrário de set_transform(), with_transform retorna um novo objeto DatasetDict com novos objetos Dataset.
Exemplo:
>>> 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])}Aplique o achatamento (flatten) na Tabela Apache Arrow de cada split (recursos aninhados são achatados). Cada coluna com tipo struct é achatada em uma coluna por campo do struct. As demais colunas permanecem inalteradas.
Exemplo:
>>> 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 )
Parâmetros
- features (Features) —
Novos recursos para os quais o conjunto de dados será convertido.
O nome e a ordem dos campos nos recursos devem corresponder aos nomes atuais das colunas.
O tipo dos dados também deve ser convertível de um tipo para o outro.
Para conversões não triviais, por exemplo,
string<->ClassLabel, você deve usar map() para atualizar o conjunto de dados.
Casteie o conjunto de dados para um novo conjunto de recursos. A transformação é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
Exemplo:
>>> 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 )
Convert a coluna para recurso para decodificação.
Exemplo:
>>> 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
Parâmetros
Retorna
Uma cópia do objeto de dataset sem as colunas a serem removidas.
Remove uma ou várias colunas de cada split no dataset e os recursos associados às colunas.
A transformação é aplicada a todas as divisões do dicionário do conjunto de dados.
Você também pode remover uma coluna usando map() com remove_columns, mas o método presente não copia os dados das colunas restantes e, portanto, é mais rápido.
Exemplo:
>>> 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 )
Renomeia uma coluna no dataset e move os recursos associados à coluna original para o novo nome da coluna. A transformação é aplicada a todos os datasets do dicionário de datasets.
Você também pode renomear uma coluna usando map() com remove_columns, mas o método presente:
- cuida de mover os recursos originais para o novo nome de coluna.
- não copia os dados para um novo dataset e, portanto, é muito mais rápido.
Exemplo:
>>> 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
Parâmetros
Retorna
Uma cópia do conjunto de dados com as colunas renomeadas.
Renomeie várias colunas no conjunto de dados e mova os recursos associados às colunas originais para os novos nomes de coluna. A transformação é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
Exemplo:
>>> 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]] )
Selecione uma ou várias colunas de cada divisão no conjunto de dados e os recursos associados às colunas.
A transformação é aplicada a todas as divisões do dicionário do conjunto de dados.
Exemplo:
>>> 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 )
Converte a coluna indicada em ClassLabel e atualiza as tabelas.
Exemplo:
>>> 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 )
Parâmetros
- repo_id (
str) — O ID do repositório para o qual será feito o push, no seguinte formato:<user>/<dataset_name>ou<org>/<dataset_name>. Também aceita<dataset_name>, que usará o namespace do usuário conectado por padrão.Também pode ser um local dentro de um bucket, por exemplo,
buckets/<user_or_org>/<bucket_name>/... - config_name (
str) — Nome da configuração de um conjunto de dados. O padrão é “default”. - set_default (
bool, opcional) — Se deve definir esta configuração como a padrão. Caso contrário, a configuração padrão é a chamada “default”. - data_dir (
str, opcional) — Nome do diretório que conterá os arquivos de dados enviados. O valor padrão é oconfig_namese for diferente de “default”, caso contrário “data”.Adicionado na 2.17.0
- commit_message (
str, opcional) — Mensagem a ser commitada durante o push. O padrão será"Upload dataset". - commit_description (
str, opcional) — Descrição do commit que será criado. Além disso, descrição do PR, se um PR for criado (create_pré True).Adicionado na 2.16.0
- private (
bool, opcional) — Se deve tornar o repositório privado. SeNone(padrão), o repositório será público, a menos que o padrão da organização seja privado. Este valor é ignorado se o repositório já existir. - token (
str, opcional) — Um token de autenticação opcional para o Hugging Face Hub. Se nenhum token for passado, será usado por padrão o token salvo localmente ao fazer login comhf auth login. Será gerado um erro se nenhum token for passado e o usuário não estiver conectado. - revision (
str, opcional) — Branch para onde os arquivos enviados serão enviados. O padrão é a branch"main".Adicionado na 2.15.0
- create_pr (
bool, opcional, padrão éFalse) — Se deve criar um PR com os arquivos enviados ou fazer o commit diretamente.Adicionado na 2.15.0
- max_shard_size (
intoustr, opcional, padrão"500MB") — O tamanho máximo dos shards do dataset a serem enviados para o hub. Se expresso como string, deve ser composto por dígitos seguidos de uma unidade (como"500MB"ou"1GB"). - num_shards (
Dict[str, int], opcional) — Número de shards a serem gravados. Por padrão, o número de shards depende demax_shard_size. Use um dicionário para definir um num_shards diferente para cada split.Adicionado na 2.8.0
- embed_external_files (
bool, padrão éTrue) — Se incorporar os bytes dos arquivos nos shards. Especificamente, isso fará o seguinte antes do push para os campos do tipo: - num_proc (
int, opcional, padrão éNone) — Número de processos ao preparar e enviar o dataset. Isso é útil se o dataset for composto por muitas amostras ou arquivos de mídia para incorporar. Usa o contexto “spawn” para funcionar com hf_xet, o cliente rust para uploads rápidos para o HF. O multiprocessing é desabilitado por padrão.Adicionado na 4.0.0
Envia o DatasetDict para o hub como um dataset Parquet. O DatasetDict é enviado usando requisições HTTP e não requer a instalação de git ou git-lfs.
Cada divisão do conjunto de dados será enviada de forma independente. O conjunto de dados enviado manterá os nomes originais das divisões.
Os arquivos Parquet resultantes são autossuficientes por padrão: se o seu conjunto de dados contiver dados de Image ou Audio, os arquivos Parquet armazenarão os bytes das suas imagens ou arquivos de áudio.
Você pode desativar isso definindo embed_external_files como False.
Exemplo:
>>> 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})Se você deseja adicionar uma nova configuração (ou subconjunto) a um conjunto de dados (por exemplo, se o conjunto de dados tiver várias tarefas/versões/idiomas):
>>> 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 )
Parâmetros
- dataset_dict_path (
path-like) — Caminho (por exemplo,dataset/train) ou URI remota (por exemplo,s3://my-bucket/dataset/train) do diretório do dataset dict onde o dataset dict será salvo. - max_shard_size (
intoustr, opcional, padrão"500MB") — O tamanho máximo dos shards do dataset a serem salvos no sistema de arquivos. Se expresso como string, deve ser composto por dígitos seguidos de uma unidade (como"50MB"). - num_shards (
Dict[str, int], opcional) — Número de shards a serem gravados. Por padrão, o número de shards depende demax_shard_sizeenum_proc. Você precisa fornecer o número de shards para cada dataset no dicionário de datasets. Use um dicionário para definir um num_shards diferente para cada split.Adicionado na 2.8.0
- num_proc (
int, opcional, padrãoNone) — Número de processos ao baixar e gerar o dataset localmente. O multiprocessing é desabilitado por padrão.Adicionado na 2.8.0
- storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.8.0
Salva um dicionário de dataset em um sistema de arquivos usando fsspec.spec.AbstractFileSystem.
Para dados de Image, Audio e Video:
Todos os dados de Image(), Audio() e Video() são armazenados nos arquivos arrow. Se você deseja armazenar caminhos ou urls, use o tipo 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 )
Parâmetros
- dataset_dict_path (
path-like) — Caminho (por exemplo,"dataset/train") ou URI remoto (por exemplo,"s3//my-bucket/dataset/train") do diretório do dataset dict de onde o dataset dict será carregado. - keep_in_memory (
bool, padrãoNone) — Se deve copiar o dataset para a memória. SeNone, o dataset não será copiado para a memória, a menos que seja explicitamente habilitado ao definirdatasets.config.IN_MEMORY_MAX_SIZEpara um valor diferente de zero. Veja mais detalhes na seção melhorar o desempenho. - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.8.0
Carregue um conjunto de dados que foi salvo anteriormente usando save_to_disk de um sistema de arquivos usando 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 )
Parâmetros
- path_or_paths (
dictde path-like) — Caminho(s) do(s) arquivo(s) CSV. - features (Features, opcional) — Recursos do conjunto de dados.
- cache_dir (str, opcional, padrão
"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
pandas.read_csv.
Crie um DatasetDict a partir de arquivo(s) CSV.
from_json
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
Parâmetros
- path_or_paths (
path-likeou lista depath-like) — Caminho(s) do(s) arquivo(s) JSON Lines. - features (Features, opcional) — Recursos do conjunto de dados.
- cache_dir (str, opcional, padrão
"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
JsonConfig.
Crie um DatasetDict a partir de arquivo(s) 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 )
Parâmetros
- path_or_paths (
dictde path-like) — Caminho(s) do(s) arquivo(s) CSV. - features (Features, opcional) — Recursos do conjunto de dados.
- cache_dir (
str, opcional, padrão"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - columns (
list[str], opcional) — Se não forNone, apenas essas colunas serão lidas do arquivo. O nome de uma coluna pode ser um prefixo de um campo aninhado, por exemplo, ‘a’ selecionará ‘a.b’, ‘a.c’ e ‘a.d.e’. - **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
ParquetConfig.
Crie um DatasetDict a partir de arquivo(s) Parquet.
from_text
< source >( path_or_paths: dictfeatures: typing.Optional[datasets.features.features.Features] = Nonecache_dir: str = Nonekeep_in_memory: bool = False**kwargs )
Parâmetros
- path_or_paths (
dictde path-like) — Caminho(s) do(s) arquivo(s) de texto. - features (Features, opcional) — Recursos do conjunto de dados.
- cache_dir (
str, opcional, padrão"~/.cache/huggingface/datasets") — Diretório para armazenar os dados em cache. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
TextConfig.
Crie um DatasetDict a partir de arquivo(s) de texto.
IterableDataset
A classe base IterableDataset implementa um Dataset iterável baseado em geradores python.
classe 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 )
Um Dataset baseado em um iterável.
from_file
< source >( filename: str )
Instanciar um IterableDataset a partir de uma tabela Arrow no arquivo filename.
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 )
Parâmetros
- df (
pandas.DataFrame) — Dataframe que contém o conjunto de dados. - features (Features, opcional) — Recursos do conjunto de dados.
- info (
DatasetInfo, opcional) — Informações do dataset, como descrição, citação, etc. - split (
NamedSplit, opcional) — Nome da divisão do conjunto de dados. - preserve_index (
bool, opcional) — Se deve armazenar o índice como uma coluna adicional no Dataset resultante. O valor padrão deNonearmazena o índice como uma coluna, exceto paraRangeIndex, que é armazenado apenas como metadados. Usepreserve_index=Truepara forçar que ele seja armazenado como uma coluna. - num_shards (
int, padrão1) — Número de shards a definir ao instanciar o dataset iterável. Isso é especialmente útil para datasets grandes, permitindo embaralhar corretamente, e também para habilitar o carregamento paralelo rápido usando um PyTorch DataLoader ou em configurações distribuídas, por exemplo.
Converta um pandas.DataFrame para uma pyarrow.Table para criar um IterableDataset.
Os tipos de coluna na Tabela Arrow resultante são inferidos a partir dos dtypes das pandas.Series no DataFrame. No caso de Series não-object, o dtype do NumPy é traduzido para seu equivalente no Arrow. No caso de object, precisamos inferir o tipo de dados examinando os objetos Python presentes nesta Series.
Observe que Series do dtype object não carregam informações suficientes para sempre levar a um tipo Arrow significativo. No caso em que não podemos inferir um tipo, por exemplo, porque o DataFrame tem comprimento 0 ou a Series contém apenas objetos None/nan, o tipo é definido como null. Esse comportamento pode ser evitado construindo features explícitas e passando-as para esta função.
Importante: um dataset criado com from_pandas() fica na memória. Isso pode mudar no futuro, mas, por enquanto, se você quiser reduzir o uso de memória, deve gravá-lo em disco e recarregá-lo usando, por exemplo, 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 )
Parâmetros
- mapping (
Mapping) — Mapeamento de strings para Arrays ou listas Python. - features (Features, opcional) — Recursos do conjunto de dados.
- info (
DatasetInfo, opcional) — Informações do dataset, como descrição, citação, etc. - split (
NamedSplit, opcional) — Nome da divisão do conjunto de dados. - num_shards (
int, padrão1) — Número de shards a definir ao instanciar o dataset iterável. Isso é especialmente útil para datasets grandes, permitindo embaralhar corretamente, e também para habilitar o carregamento paralelo rápido usando um PyTorch DataLoader ou em configurações distribuídas, por exemplo.
Converta dict para uma pyarrow.Table para criar um IterableDataset.
Importante: um dataset criado com from_dict() fica na memória. Isso pode mudar no futuro, mas, por enquanto, se você quiser reduzir o uso de memória, deve gravá-lo novamente em disco e recarregá-lo usando, por exemplo, 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 )
Parâmetros
- mapping (
List[dict]) — Uma lista de mapeamentos de strings para valores de linha. - features (
Features, opcional) — Recursos do dataset. - info (
DatasetInfo, opcional) — Informações do dataset, como descrição, citação, etc. - split (
NamedSplit, opcional) — Nome da divisão do conjunto de dados. - num_shards (
int, padrão1) — Número de shards a definir ao instanciar o dataset iterável. Isso é especialmente útil para datasets grandes, permitindo embaralhar corretamente, e também para habilitar o carregamento paralelo rápido usando um PyTorch DataLoader ou em configurações distribuídas, por exemplo.
Converta uma lista de dicts para uma pyarrow.Table para criar um IterableDataset`.
Observe que as chaves da primeira entrada serão usadas para determinar as colunas do conjunto de dados, independentemente do que for passado para features.
Importante: um dataset criado com from_list() fica na memória. Isso pode mudar no futuro, mas, por enquanto, se você quiser reduzir o uso de memória, deve gravá-lo novamente em disco e recarregá-lo usando, por exemplo, 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') )
Parâmetros
- generator (
Callable) — Uma função geradora queyieldsexemplos. - features (
Features, opcional) — Recursos do conjunto de dados. - gen_kwargs(
dict, opcional) — Argumentos de palavra-chave a serem passados para o chamávelgenerator. Você pode definir um conjunto de dados iterável fragmentado passando a lista de fragmentos emgen_kwargs. Isso pode ser usado para melhorar o embaralhamento e ao iterar sobre o conjunto de dados com múltiplos workers. - split (NamedSplit, padrão é
Split.TRAIN) — Nome da divisão a ser atribuído ao dataset.Adicionado na 2.21.0
Crie um Dataset Iterável a partir de um gerador.
Exemplo:
>>> 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
Remove uma ou várias colunas do dataset e os recursos associados a elas. A remoção é feita em tempo real nos exemplos ao iterar sobre o dataset.
Exemplo:
>>> 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
Selecione uma ou várias colunas no conjunto de dados e os recursos associados a elas. A seleção é feita em tempo real nos exemplos ao iterar sobre o conjunto de dados.
Exemplo:
>>> 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
Convert a coluna para recurso para decodificação.
Exemplo:
>>> 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
Parâmetros
- features (Features) —
Novos recursos para os quais o dataset deve ser convertido.
O nome dos campos nos recursos deve corresponder aos nomes atuais das colunas.
O tipo dos dados também deve ser convertível de um tipo para o outro.
Para conversões não triviais, por exemplo,
string<->ClassLabel, você deve usar map() para atualizar o Dataset.
Retorna
IterableDataset
Uma cópia do conjunto de dados com recursos convertidos.
Convert o conjunto de dados para um novo conjunto de recursos.
Exemplo:
>>> 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
Parâmetros
- enable (
bool, padrãoTrue) — Ativa ou desativa a decodificação de recursos. - num_threads (
int, opcional, padrãoNone) — Ativa a multithreading para a decodificação de features. Observe que load_dataset() já usa algumas threads por padrão ao transmitir um dataset no HF com features decodificáveis. Por padrão,num_threadsé definido como 32 se pelo menos uma feature exigir decodificação, e 0 caso contrário.
Retorna
IterableDataset
Uma cópia do conjunto de dados com recursos convertidos.
Ative ou desative a decodificação dos recursos do conjunto de dados para áudio, imagem e vídeo.
Quando habilitado (padrão), os tipos de mídia são decodificados:
- audio -> dict de “array” e “sampling_rate” e “path”
- imagem -> PIL.Image
- video -> torchcodec.decoders.VideoDecoder
O multithreading pode ser habilitado com num_threads: cada arquivo de mídia é então lido e decodificado em uma thread de worker, de modo que as viagens de rede de exemplos consecutivos se sobrepõem. Isso é especialmente útil para acelerar o streaming de dados remotos, e load_dataset() já o habilita por padrão ao fazer streaming de um dataset remoto que possui recursos decodificáveis (veja HF_DATASETS_DECODE_NUM_THREADS). Datasets lidos do disco local são transmitidos com num_threads=0, pois o multithreading pode ser mais lento do que a decodificação na thread principal para dados locais em discos rápidos. Como os exemplos são decodificados com antecedência, cada thread em execução pode manter um exemplo na memória: reduza num_threads para usar menos memória.
Desabilitar a decodificação é útil se você deseja iterar sobre os caminhos ou bytes dos arquivos de mídia sem realmente decodificar seu conteúdo. Para desabilitar a decodificação, você pode usar .decode(False), que é equivalente a chamar .cast() ou .cast_column() com todos os tipos Audio, Image e Video definidos como decode=False.
Exemplos:
Desativar a decodificação:
>>> 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.'
}Acelere o streaming com multithreading:
>>> 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 )
Itere pelos lotes de tamanho 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 )
Parâmetros
- function (
Callable, opcional, padrão éNone) — Função aplicada em tempo real nos exemplos ao iterar pelo dataset. Ela deve ter uma das seguintes assinaturas:function(example: Dict[str, Any]) -> Dict[str, Any]sebatched=Falseewith_indices=Falsefunction(example: Dict[str, Any], idx: int) -> Dict[str, Any]sebatched=Falseewith_indices=Truefunction(batch: Dict[str, List]) -> Dict[str, List]sebatched=Trueewith_indices=Falsefunction(batch: Dict[str, List], indices: List[int]) -> Dict[str, List]sebatched=Trueewith_indices=True
Para uso avançado, a função também pode retornar uma
pyarrow.Table. Se a função for assíncrona, omapexecutará sua função em paralelo. Além disso, se sua função não retornar nada (None), omapexecutará sua função e retornará o dataset inalterado. Se nenhuma função for fornecida, usa-se a função identidade por padrão:lambda x: x. - with_indices (
bool, padrãoFalse) — Fornece índices de exemplo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example, idx[, rank]): .... - input_columns (
Optional[Union[str, List[str]]], padrãoNone) — As colunas a serem passadas parafunctioncomo argumentos posicionais. SeNone, um dicionário mapeando para todas as colunas formatadas é passado como um único argumento. - batched (
bool, padrãoFalse) — Fornece um lote de exemplos parafunction. - batch_size (
int, opcional, padrão1000) — Número de exemplos por lote fornecidos parafunctionsebatched=True. Sebatch_size <= 0oubatch_size == None, forneça o conjunto de dados completo como um único lote parafunction. - drop_last_batch (
bool, padrãoFalse) — Se um último lote menor que o batch_size deve ser descartado em vez de ser processado pela função. - remove_columns (
[List[str]], opcional, padrãoNone) — Remove uma seleção de colunas durante o mapeamento. As colunas serão removidas antes de atualizar os exemplos com a saída defunction, ou seja, sefunctionestiver adicionando colunas com nomes emremove_columns, essas colunas serão mantidas. - features (
[Features], opcional, padrãoNone) — Tipos de recursos do dataset resultante. - fn_kwargs (
Dict, opcional, padrãoNone) — Argumentos de palavra-chave a serem passados parafunction.
Aplica uma função a todos os exemplos no dataset iterável (individualmente ou em lotes) e os atualiza. Se sua função retornar uma coluna que já existe, ela a sobrescreve. A função é aplicada em tempo real nos exemplos ao iterar sobre o dataset.
Você pode especificar se a função deve ser processada em lote ou não com o parâmetro batched:
- Se
False, a função recebe 1 exemplo e deve retornar 1 exemplo. Um exemplo é um dicionário, por exemplo,{"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 !”]}. - If batched is
Trueandbatch_sizeisn> 1, then the function takes a batch ofnexamples as input and can return a batch withnexamples, or with an arbitrary number of examples. Note that the last batch may have less thannexamples. A batch is a dictionary, e.g. a batch ofnexamples is{"text": ["Hello there !"] * n}.
Se a função for assíncrona, map executará sua função em paralelo, com até mil chamadas simultâneas.
É recomendável usar um asyncio.Semaphore na sua função se você quiser definir um número máximo de operações que podem ser executadas ao mesmo tempo.
Exemplo:
>>> 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
Renomeie uma coluna no dataset e mova os recursos associados à coluna original para o novo nome da coluna.
Exemplo:
>>> 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 .'}filtro
< 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 )
Parâmetros
- function (
Callable) — Função chamável com uma das seguintes assinaturas:function(example: Dict[str, Any]) -> boolsewith_indices=False, batched=Falsefunction(example: Dict[str, Any], indices: int) -> boolsewith_indices=True, batched=Falsefunction(example: Dict[str, List]) -> List[bool]sewith_indices=False, batched=Truefunction(example: Dict[str, List], indices: List[int]) -> List[bool]sewith_indices=True, batched=True
Se a função for assíncrona,
filterexecutará sua função em paralelo. Se nenhuma função for fornecida, o padrão é uma função que sempre retorna True:lambda x: True. - with_indices (
bool, padrãoFalse) — Fornece índices de exemplo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example, idx): .... - input_columns (
strouList[str], opcional) — As colunas a serem passadas parafunctioncomo argumentos posicionais. SeNone, um dict mapeando para todas as colunas formatadas é passado como um único argumento. - batched (
bool, padrãoFalse) — Fornece um lote de exemplos parafunction. - batch_size (
int, opcional, padrão1000) — Número de exemplos por lote fornecidos àfunctionsebatched=True. - fn_kwargs (
Dict, opcional, padrãoNone) — Argumentos de palavra-chave a serem passados parafunction.
Aplicar uma função de filtro a todos os elementos para que o conjunto de dados inclua apenas exemplos de acordo com a função de filtro. O filtro é aplicado em tempo real durante a iteração sobre o conjunto de dados.
Se a função for assíncrona, filter executará sua função em paralelo, com até mil chamadas simultâneas (configurável).
Recomenda-se usar um asyncio.Semaphore na sua função se você quiser definir um número máximo de operações que podem ser executadas ao mesmo tempo.
Exemplo:
>>> 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 )
Parâmetros
- seed (
int, opcional, padrãoNone) — Semente aleatória que será usada para embaralhar o conjunto de dados. É usada para amostrar do buffer de embaralhamento e também para embaralhar os shards de dados. - generator (
numpy.random.Generator, opcional) — Generator aleatório do Numpy a ser usado para calcular a permutação das linhas do dataset. Segenerator=None(padrão), usanp.random.default_rng(o BitGenerator padrão (PCG64) do NumPy). - buffer_size (
int, padrão1000) — Tamanho do buffer. - max_buffer_input_shards (
int, padrão10) — Número máximo de shards a serem usados para alimentar o buffer de uma vez.
Embaralha aleatoriamente os elementos deste conjunto de dados.
Este conjunto de dados preenche um buffer com buffer_size elementos e, em seguida, amostra aleatoriamente elementos deste buffer, substituindo os elementos selecionados por novos elementos. Para uma embaralhamento perfeito, é necessário um tamanho de buffer maior ou igual ao tamanho total do conjunto de dados.
Por exemplo, se o seu conjunto de dados contém 10.000 elementos, mas buffer_size está definido como 1000, então shuffle inicialmente selecionará um elemento aleatório apenas dos primeiros 1000 elementos no buffer. Assim que um elemento é selecionado, seu espaço no buffer é substituído pelo próximo (ou seja, o 1.001º) elemento, mantendo o buffer de 1000 elementos.
Se o conjunto de dados é composto por vários shards, ele preenche o buffer usando até max_buffer_input_shards shards por vez e também embaralha a ordem dos shards. Isso melhora significativamente a qualidade do embaralhamento.
Os shards de entrada são intercalados dentro de cada nó e worker, preservando o número de shards disponíveis para carregamento paralelo de dados.
No entanto, se a ordem tiver sido fixada usando skip() ou take(), a ordem dos shards permanece inalterada e apenas um shard por vez é usado para preencher o buffer.
Exemplo:
>>> 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}]lote
< source >( batch_size: typing.Optional[int] = Noneby_column: typing.Union[str, list[str], NoneType] = Nonedrop_last_batch: bool = False )
Parâmetros
- batch_size (
int, opcional) — O número de amostras em cada lote. - by_column (
Union[str, list[str], opcional) — A coluna usada para agrupar os exemplos em lotes. Exemplos sucessivos com o mesmo valor para essa coluna são agrupados no mesmo lote. Também pode ser uma lista de colunas, se você quiser agrupar por múltiplas colunas. Ao agrupar por coluna, o batch_size é usado apenas para controlar o tamanho dos lotes a serem agrupados ou fatiados durante a acumulação.Adicionado na 4.9.0
- drop_last_batch (
bool, padrãoFalse) — Se deve descartar o último lote incompleto.
Agrupe as amostras do conjunto de dados em lotes.
Exemplo:
Crie um novo IterableDataset que ignora os primeiros n elementos.
Exemplo:
>>> 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 .'}]Crie um novo IterableDataset com apenas os primeiros n elementos.
Exemplo:
>>> 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 )
Retorna o shard de índice index do conjunto de dados dividido em num_shards partes.
Isso faz o particionamento de forma determinística. dataset.shard(n, i) divide o conjunto de dados em blocos contíguos,
para que ele possa ser facilmente concatenado novamente após o processamento. Se dataset.num_shards % n == l, então os
primeiros l conjuntos de dados têm cada um (dataset.num_shards // n) + 1 shards, e os conjuntos de dados restantes têm (dataset.num_shards // n) shards. datasets.concatenate_datasets([dset.shard(n, i) for i in range(n)]) retorna um conjunto de dados com a mesma ordem que o original.
Em particular, dataset.shard(dataset.num_shards, i) retorna um conjunto de dados com 1 shard.
Nota: n deve ser menor ou igual ao número de shards no dataset dataset.num_shards.
Por outro lado, dataset.shard(n, i, contiguous=False) contém todos os shards do dataset cujo índice mod n = i.
Certifique-se de fazer o sharding antes de usar qualquer operador de randomização (como shuffle).
É melhor usar o operador de sharding no início do pipeline do dataset.
Exemplo:
>>> 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
})Reorganize o conjunto de dados, se possível, ou seja, divida os shards atuais em mais shards. Isso aumenta o número de shards e o conjunto de dados resultante terá num_shards >= previous_num_shards. A igualdade pode ocorrer se nenhum shard puder ser dividido ainda mais.
O mecanismo de resharding depende do formato do arquivo do conjunto de dados:
- Parquet: dividir em shards por grupo de linhas em vez de por arquivo
- Vortex: shard por intervalo de chunks consecutivos (cada um com cerca de 64MB de dados do arquivo) em vez de por arquivo
- Outros: ainda não implementado (contribuições são bem-vindas!)
Certifique-se de redividir/dividir antes de usar qualquer operador de randomização (como shuffle).
É melhor usar o operador de divisão no início do pipeline do conjunto de dados.
Exemplo:
>>> 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] )
Crie um novo IterableDataset que repete o dataset subjacente num_times vezes.
Uma entrada vazia encerra o processo mesmo quando num_times é None.
Obs. O efeito de chamar shuffle após repeat depende significativamente do tamanho do buffer. Com buffer_size 1, dados duplicados nunca são vistos na mesma iteração, mesmo após a embaralhamento: ds.repeat(n).shuffle(seed=42, buffer_size=1) é equivalente a ds.shuffle(seed=42, buffer_size=1).repeat(n), e apenas embaralha a ordem dos shards dentro de cada iteração. Com tamanho de buffer >= (número de amostras no conjunto de dados * num_times), obtemos embaralhamento completo dos dados repetidos, ou seja, podemos observar duplicatas na mesma iteração.
Exemplo:
>>> 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
Parâmetros
- path_or_buf (
PathLikeouFileOrBuffer) — Um caminho para um arquivo (por exemplo,file.csv), um URI remoto (por exemplo,hf://datasets/username/my_dataset_name/data.csv), ou um BinaryIO, onde o conjunto de dados será salvo no formato especificado. - batch_size (
int, opcional) — Tamanho do lote a ser carregado na memória e gravado de uma vez. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver. - **to_csv_kwargs (argumentos de palavra-chave adicionais) —
Parâmetros para passar ao
pandas.DataFrame.to_csvdo pandas. O parâmetroindextem o valor padrãoFalsese não for especificado. Se você deseja gravar o índice, passeindex=Truee também defina um nome para a coluna de índice passandoindex_label.
Retorna
int
O número de caracteres ou bytes gravados.
Exporta o conjunto de dados para csv.
Isso itera sobre o conjunto de dados e o carrega completamente na memória antes de gravá-lo.
to_pandas
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Parâmetros
- batch_size (
int, opcional) — O tamanho (número de linhas) dos lotes sebatchedforTrue. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - batched (
bool) — Defina comoTruepara retornar um gerador que fornece o dataset em lotes debatch_sizelinhas. O padrão éFalse(retorna todo o dataset de uma vez).
Retorna o conjunto de dados como um pandas.DataFrame. Também pode retornar um gerador para conjuntos de dados grandes.
to_dict
< source >( batch_size: typing.Optional[int] = Nonebatched: bool = False )
Retorna o conjunto de dados como um dicionário Python. Também pode retornar um gerador para conjuntos de dados grandes.
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
Parâmetros
- path_or_buf (
PathLikeouFileOrBuffer) — Um caminho para um arquivo (por exemplo,file.json), um URI remoto (por exemplo,hf://datasets/username/my_dataset_name/data.json), ou um BinaryIO, onde o conjunto de dados será salvo no formato especificado. - batch_size (
int, opcional) — Tamanho do lote a ser carregado na memória e gravado de uma vez. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver. - **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`.
Retorna
int
O número de caracteres ou bytes gravados.
Exporte o conjunto de dados para JSON Lines ou JSON.
Isso itera sobre o conjunto de dados e o carrega completamente na memória antes de gravá-lo.
O formato de saída padrão é JSON Lines.
Para exportar para JSON, passe o argumento lines=False e o orient desejado.
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
Parâmetros
- path_or_buf (
PathLikeouFileOrBuffer) — Um caminho para um arquivo (por exemplo,file.parquet), um URI remoto (por exemplo,hf://datasets/username/my_dataset_name/data.parquet), ou um BinaryIO, onde o conjunto de dados será salvo no formato especificado. - batch_size (
int, opcional) — Tamanho do lote a ser carregado na memória e gravado de uma vez. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - storage_options (
dict, opcional) — Pares de chave/valor a serem passados para o backend do sistema de arquivos, se houver.Adicionado na 2.19.0
- **parquet_writer_kwargs (argumentos de palavra-chave adicionais) —
Parâmetros para passar ao
pyarrow.parquet.ParquetWriterdo PyArrow.
Retorna
int
O número de caracteres ou bytes gravados.
Exporta o conjunto de dados para 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
Parâmetros
- name (
str) — Nome da tabela SQL. - con (
strousqlite3.Connectionousqlalchemy.engine.Connectionousqlalchemy.engine.Connection) — Uma string URI ou um objeto de conexão SQLite3/SQLAlchemy usado para gravar em um banco de dados. - batch_size (
int, opcional) — Tamanho do lote a ser carregado na memória e gravado de uma vez. Padrão:datasets.config.DEFAULT_MAX_BATCH_SIZE. - **sql_writer_kwargs (argumentos de palavra-chave adicionais) —
Parâmetros para passar ao
pandas.DataFrame.to_sqldo pandas. O parâmetroindextem o valor padrãoFalsese não for especificado. Se você deseja gravar o índice, passeindex=Truee também defina um nome para a coluna de índice passandoindex_label.
Retorna
int
O número de registros gravados.
Exporta o conjunto de dados para um banco de dados 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 )
Parâmetros
- repo_id (
str) — O ID do repositório para o qual será feito o push, no seguinte formato:<user>/<dataset_name>ou<org>/<dataset_name>. Também aceita<dataset_name>, que usará o namespace do usuário conectado por padrão.Também pode ser um local dentro de um bucket, por exemplo,
buckets/<user_or_org>/<bucket_name>/... - config_name (
str, padrão “default”) — O nome da configuração (ou subconjunto) de um conjunto de dados. O padrão é “default”. - set_default (
bool, opcional) — Se deve definir esta configuração como a padrão. Caso contrário, a configuração padrão é a chamada “default”. - split (
str, opcional) — O nome da divisão que será atribuído a esse conjunto de dados. O padrão éself.split. - data_dir (
str, opcional) — Nome do diretório que conterá os arquivos de dados enviados. O padrão éconfig_namese for diferente de “default”, caso contrário, “data”. - commit_message (
str, opcional) — Mensagem a ser commitada durante o push. O padrão será"Upload dataset". - commit_description (
str, opcional) — Descrição do commit que será criado. Além disso, descrição do PR, caso um PR seja criado (create_pré True). - private (
bool, opcional) — Se deve tornar o repositório privado. SeNone(padrão), o repositório será público, a menos que o padrão da organização seja privado. Este valor é ignorado se o repositório já existir. - token (
str, opcional) — Um token de autenticação opcional para o Hugging Face Hub. Se nenhum token for passado, será usado por padrão o token salvo localmente ao fazer login comhf auth login. Será gerado um erro se nenhum token for passado e o usuário não estiver conectado. - revision (
str, opcional) — Branch para a qual os arquivos enviados serão enviados. O padrão é a branch"main". - create_pr (
bool, opcional, padrãoFalse) — Se deve criar um PR com os arquivos enviados ou fazer o commit diretamente. - max_shard_size (
intoustr, opcional) — Tamanho máximo opcional dos shards do dataset a serem enviados para o hub. Se expresso como string, deve ser composto por dígitos seguidos por uma unidade (como"5MB"). Se não for fornecido, o número de shards padrão será o.num_shardsdeste dataset. - num_shards (
int, opcional) — Número de shards a serem gravados. Semax_shard_sizefor fornecido enum_shardsnão for, o número de shards é estimado a partir demax_shard_size. Pode ser maior que.num_shardsdeste dataset: nesse caso, cada shard de entrada é distribuído em vários shards de saída, gravando seus exemplos neles de forma round-robin. - embed_external_files (
bool, padrão éTrue) — Se incorporar os bytes dos arquivos nos shards. Especificamente, isso fará o seguinte antes do push para os campos do tipo: - num_proc (
int, opcional, padrãoNone) — Número de processos ao preparar e enviar o dataset. Isso é útil se o dataset for composto por muitas amostras e transformações. Usa o contexto “spawn” para funcionar com hf_xet, o cliente rust para uploads rápidos para o HF. O multiprocessing é desabilitado por padrão.
Envia o dataset para o hub como um dataset Parquet. O dataset é enviado usando requisições HTTP e não é necessário ter nem git nem git-lfs instalados.
Os arquivos Parquet resultantes são autossuficientes por padrão. Se o seu conjunto de dados contiver dados de Image, Audio ou Video, os arquivos Parquet armazenarão os bytes das suas imagens ou arquivos de áudio.
Você pode desativar isso definindo embed_external_files como False.
Exemplo:
>>> 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)Se o seu conjunto de dados tiver várias divisões (por exemplo, treino/validação/teste):
>>> 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"]Se você deseja adicionar uma nova configuração (ou subconjunto) a um conjunto de dados (por exemplo, se o conjunto de dados tiver várias tarefas/versões/idiomas):
>>> 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")Carregue o state_dict do conjunto de dados. A iteração será retomada a partir do próximo exemplo do momento em que o estado foi salvo.
Retomar retorna exatamente de onde o checkpoint foi salvo, exceto em dois casos:
- exemplos dos buffers de embaralhamento são perdidos ao retomar e os buffers são reabastecidos com novos dados
- combinações de
.with_format(arrow)e.map()em lote podem pular um lote.
Exemplo:
>>> 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)que retorna:
{'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 hoodObtenha o state_dict atual do dataset. Ele corresponde ao estado no exemplo mais recente que ele gerou.
Retomar retorna exatamente de onde o checkpoint foi salvo, exceto em dois casos:
- exemplos dos buffers de embaralhamento são perdidos ao retomar e os buffers são reabastecidos com novos dados
- combinações de
.with_format(arrow)e.map()em lote podem pular um lote.
Exemplo:
>>> 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)que retorna:
{'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 hoodObjeto DatasetInfo contendo todos os metadados do conjunto de dados.
objeto NamedSplit correspondente a uma divisão nomeada do conjunto de dados.
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 )
Parâmetros
- path_or_paths (
path-likeou lista depath-like) — Caminho(s) do(s) arquivo(s) CSV. - split (NamedSplit, opcional) — Nome da divisão a ser atribuído ao conjunto de dados.
- features (Features, opcional) — Recursos do conjunto de dados.
- keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
pandas.read_csv.
Crie um IterableDataset a partir de arquivo(s) 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 )
Parâmetros
- path_or_paths (
path-likeou lista depath-like) — Caminho(s) do(s) arquivo(s) JSON ou JSON Lines. - split (NamedSplit, opcional) — Nome da divisão a ser atribuído ao conjunto de dados.
- features (Features, opcional) — Recursos do conjunto de dados.
- keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - field (
str, opcional) — Nome do campo do arquivo JSON onde o conjunto de dados está contido. - **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
JsonConfig.
Crie um IterableDataset a partir de arquivo(s) JSON ou 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 )
Parâmetros
- path_or_paths (
path-likeou lista depath-like) — Caminho(s) do(s) arquivo(s) Parquet. - split (
NamedSplit, opcional) — Nome da divisão a ser atribuído ao conjunto de dados. - features (
Features, opcional) — Recursos do conjunto de dados. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - columns (
List[str], opcional) — Se não forNone, apenas essas colunas serão lidas do arquivo. O nome de uma coluna pode ser um prefixo de um campo aninhado, por exemplo, ‘a’ selecionará ‘a.b’, ‘a.c’ e ‘a.d.e’. - filters (
Union[pyarrow.dataset.Expression, list[tuple], list[list[tuple]]], opcional) — Retorna apenas as linhas que correspondem ao filtro. Se possível, o predicado será empurrado para baixo para explorar as informações de particionamento ou os metadados internos encontrados na fonte de dados, por exemplo, estatísticas do Parquet. Caso contrário, filtra os RecordBatches carregados antes de retorná-los. - fragment_scan_options (
pyarrow.dataset.ParquetFragmentScanOptions, opcional) — Opções específicas de varredura para fragmentos Parquet. Isso é especialmente útil para configurar bufferização e cache.Adicionado na 4.2.0
- on_bad_files (
Literal["error", "warn", "skip"], opcional, padrão é “error”) — Especifica o que fazer ao encontrar um arquivo inválido (um arquivo que não pode ser lido). Os valores permitidos são :- ‘error’, lança uma Exception quando um arquivo inválido é encontrado.
- ‘warn’, emite um aviso quando um arquivo inválido é encontrado e ignora esse arquivo.
- ‘skip’, ignora arquivos inválidos sem gerar exceções ou avisos quando são encontrados.
Adicionado na 4.2.0
- **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
ParquetConfig.
Crie um IterableDataset a partir de arquivo(s) 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 )
Parâmetros
- path_or_paths (
path-likeou lista depath-like) — Caminho(s) do(s) arquivo(s) de texto. - split (
NamedSplit, opcional) — Nome da divisão a ser atribuído ao conjunto de dados. - features (
Features, opcional) — Recursos do conjunto de dados. - keep_in_memory (
bool, padrãoFalse) — Se deve copiar os dados para a memória. - keep_linebreaks — (
bool, padrão False): Se deve manter as quebras de linha. - sample_by (
Literal["line", "paragraph", "document"], padrão “line”) — Se os dados devem ser carregados por linha, parágrafo ou documento. Por padrão, uma linha no dataset = uma linha. - **kwargs (argumentos de palavra-chave adicionais) —
Argumentos de palavra-chave a serem passados para
TextConfig.
Crie um IterableDataset a partir de arquivo(s) de texto.
classe datasets.IterableColumn
< source >( source: typing.Union[ForwardRef('IterableDataset'), ForwardRef('IterableColumn')]column_name: str )
Um iterável para uma coluna específica de um IterableDataset.
Exemplo:
IterableDatasetDict
Dicionário com os nomes das divisões como chaves (por exemplo, ‘train’, ‘test’) e objetos IterableDataset como valores.
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 )
Parâmetros
- function (
Callable, opcional, padrão éNone) — Função aplicada em tempo real nos exemplos ao iterar pelo dataset. Ela deve ter uma das seguintes assinaturas:function(example: Dict[str, Any]) -> Dict[str, Any]sebatched=Falseewith_indices=Falsefunction(example: Dict[str, Any], idx: int) -> Dict[str, Any]sebatched=Falseewith_indices=Truefunction(batch: Dict[str, list]) -> Dict[str, list]sebatched=Trueewith_indices=Falsefunction(batch: Dict[str, list], indices: list[int]) -> Dict[str, list]sebatched=Trueewith_indices=True
Para uso avançado, a função também pode retornar uma
pyarrow.Table. Se a função for assíncrona, omapexecutará sua função em paralelo. Além disso, se sua função não retornar nada (None), omapexecutará sua função e retornará o dataset inalterado. Se nenhuma função for fornecida, usa-se a função identidade por padrão:lambda x: x. - with_indices (
bool, padrãoFalse) — Fornece índices de exemplo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example, idx[, rank]): .... - input_columns (
[Union[str, list[str]]], opcional, padrãoNone) — As colunas a serem passadas parafunctioncomo argumentos posicionais. SeNone, um dicionário mapeando para todas as colunas formatadas é passado como um único argumento. - batched (
bool, padrãoFalse) — Fornece um lote de exemplos parafunction. - batch_size (
int, opcional, padrão1000) — Número de exemplos por lote fornecidos àfunctionsebatched=True. - drop_last_batch (
bool, padrãoFalse) — Se um último lote menor que obatch_sizedeve ser descartado em vez de ser processado pela função. - remove_columns (
[list[str]], opcional, padrãoNone) — Remove uma seleção de colunas durante o mapeamento. As colunas serão removidas antes de atualizar os exemplos com a saída defunction, ou seja, sefunctionestiver adicionando colunas com nomes emremove_columns, essas colunas serão mantidas. - fn_kwargs (
Dict, opcional, padrãoNone) — Argumentos de palavra-chave a serem passados parafunction
Aplica uma função a todos os exemplos no dataset iterável (individualmente ou em lotes) e os atualiza. Se sua função retornar uma coluna que já existe, ela a sobrescreve. A função é aplicada em tempo real nos exemplos ao iterar sobre o dataset. A transformação é aplicada a todos os datasets do dicionário de datasets.
Você pode especificar se a função deve ser processada em lote ou não com o parâmetro batched:
- Se
False, a função recebe 1 exemplo e deve retornar 1 exemplo. Um exemplo é um dicionário, por exemplo,{"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 !"]}. - If batched is
Trueandbatch_sizeisn> 1, then the function takes a batch ofnexamples as input and can return a batch withnexamples, or with an arbitrary number of examples. Note that the last batch may have less thannexamples. A batch is a dictionary, e.g. a batch ofnexamples is{"text": ["Hello there !"] * n}.
Se a função for assíncrona, map executará sua função em paralelo, com até mil chamadas simultâneas.
Recomenda-se usar um asyncio.Semaphore na sua função se você quiser definir um número máximo de operações que podem ser executadas ao mesmo tempo.
Exemplo:
>>> 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 .'}filtro
< 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 )
Parâmetros
- function (
Callable) — Função com uma das seguintes assinaturas:function(example: Dict[str, Any]) -> boolsewith_indices=False, batched=Falsefunction(example: Dict[str, Any], indices: int) -> boolsewith_indices=True, batched=Falsefunction(example: Dict[str, list]) -> list[bool]sewith_indices=False, batched=Truefunction(example: Dict[str, list], indices: list[int]) -> list[bool]sewith_indices=True, batched=True
Se nenhuma função for fornecida, o padrão é uma função que sempre retorna True:
lambda x: True. - with_indices (
bool, padrãoFalse) — Fornece índices de exemplo parafunction. Observe que, nesse caso, a assinatura defunctiondeve serdef function(example, idx): .... - input_columns (
stroulist[str], opcional) — As colunas a serem passadas parafunctioncomo argumentos posicionais. SeNone, um dict mapeando para todas as colunas formatadas é passado como um único argumento. - batched (
bool, padrãoFalse) — Fornece um lote de exemplos parafunction - batch_size (
int, opcional, padrão1000) — Número de exemplos por lote fornecidos àfunctionsebatched=True. - fn_kwargs (
Dict, opcional, padrãoNone) — Argumentos de palavra-chave a serem passados parafunction
Aplica uma função de filtro a todos os elementos para que o conjunto de dados inclua apenas exemplos de acordo com a função de filtro. O filtro é aplicado em tempo real ao iterar pelo conjunto de dados. O filtro é aplicado a todos os conjuntos de dados do dicionário de conjuntos de dados.
Exemplo:
>>> 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 )
Parâmetros
- seed (
int, opcional, padrãoNone) — Semente aleatória que será usada para embaralhar o conjunto de dados. É usada para amostrar do buffer de embaralhamento e também para embaralhar os shards de dados. - generator (
numpy.random.Generator, opcional) — Generator aleatório do Numpy a ser usado para calcular a permutação das linhas do dataset. Segenerator=None(padrão), usanp.random.default_rng(o BitGenerator padrão (PCG64) do NumPy). - buffer_size (
int, padrão1000) — Tamanho do buffer. - max_buffer_input_shards (
int, padrão10) — Número máximo de shards a serem usados para alimentar o buffer de uma vez.
Embaralha aleatoriamente os elementos deste conjunto de dados. O embaralhamento é aplicado a todos os conjuntos de dados do dicionário de conjuntos de dados.
Este conjunto de dados preenche um buffer com buffer_size elementos e, em seguida, amostra aleatoriamente elementos deste buffer, substituindo os elementos selecionados por novos elementos. Para uma embaralhamento perfeito, é necessário um tamanho de buffer maior ou igual ao tamanho total do conjunto de dados.
Por exemplo, se o seu conjunto de dados contém 10.000 elementos, mas buffer_size está definido como 1000, então shuffle inicialmente selecionará um elemento aleatório apenas dos primeiros 1000 elementos no buffer. Assim que um elemento é selecionado, seu espaço no buffer é substituído pelo próximo (ou seja, o 1.001º) elemento, mantendo o buffer de 1000 elementos.
Se o conjunto de dados é composto por vários shards, ele também faz shuffle na ordem dos shards.
No entanto, se a ordem foi fixada usando skip() ou take(), a ordem dos shards é mantida inalterada.
Exemplo:
>>> 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 )
Retorne um conjunto de dados com o formato especificado.
Exemplo:
>>> 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
Parâmetros
- features (
Features) — Novos recursos para os quais o dataset deve ser convertido. O nome dos campos nos recursos deve corresponder aos nomes atuais das colunas. O tipo dos dados também deve ser convertível de um tipo para o outro. Para conversões não triviais, por exemplo,string<->ClassLabel, você deve usarmappara atualizar o Dataset.
Retorna
Uma cópia do conjunto de dados com recursos convertidos.
Casteie o conjunto de dados para um novo conjunto de recursos. O cast de tipo é aplicado a todos os conjuntos de dados do dicionário de conjuntos de dados.
Exemplo:
>>> 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] )
Casta a coluna para recurso para decodificação. A conversão de tipo é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
Exemplo:
>>> 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
Parâmetros
Retorna
Uma cópia do objeto de dataset sem as colunas a serem removidas.
Remove uma ou várias colunas do dataset e os recursos associados a elas. A remoção é feita em tempo real nos exemplos ao iterar sobre o dataset. A remoção é aplicada a todos os datasets do dicionário de datasets.
Exemplo:
>>> 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
Renomeia uma coluna no dataset e move os recursos associados à coluna original para o novo nome da coluna. A renomeação é aplicada a todos os datasets do dicionário de datasets.
Exemplo:
>>> 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
Parâmetros
Retorna
Uma cópia do conjunto de dados com colunas renomeadas
Renomeie várias colunas no conjunto de dados e mova os recursos associados às colunas originais para os novos nomes de coluna. A renomeação é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
Exemplo:
>>> 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
Parâmetros
Retorna
Uma cópia do objeto de dataset com apenas as colunas selecionadas.
Selecione uma ou várias colunas do conjunto de dados e os recursos associados a elas. A seleção é feita em tempo de execução nos exemplos ao iterar sobre o conjunto de dados. A seleção é aplicada a todos os conjuntos de dados do dicionário de conjuntos de dados.
Exemplo:
>>> 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 )
Parâmetros
- repo_id (
str) — O ID do repositório para o qual será feito o push, no seguinte formato:<user>/<dataset_name>ou<org>/<dataset_name>. Também aceita<dataset_name>, que usará o namespace do usuário conectado por padrão.Também pode ser um local dentro de um bucket, por exemplo,
buckets/<user_or_org>/<bucket_name>/... - config_name (
str) — Nome da configuração de um conjunto de dados. O padrão é “default”. - set_default (
bool, opcional) — Se deve definir esta configuração como a padrão. Caso contrário, a configuração padrão é a chamada “default”. - data_dir (
str, opcional) — Nome do diretório que conterá os arquivos de dados enviados. O valor padrão é oconfig_namese for diferente de “default”, caso contrário “data”.Adicionado na 2.17.0
- commit_message (
str, opcional) — Mensagem a ser commitada durante o push. O padrão será"Upload dataset". - commit_description (
str, opcional) — Descrição do commit que será criado. Além disso, descrição do PR, se um PR for criado (create_pré True).Adicionado na 2.16.0
- private (
bool, opcional) — Se deve tornar o repositório privado. SeNone(padrão), o repositório será público, a menos que o padrão da organização seja privado. Este valor é ignorado se o repositório já existir. - token (
str, opcional) — Um token de autenticação opcional para o Hugging Face Hub. Se nenhum token for passado, será usado por padrão o token salvo localmente ao fazer login comhf auth login. Será gerado um erro se nenhum token for passado e o usuário não estiver conectado. - revision (
str, opcional) — Branch para a qual os arquivos enviados serão enviados. O padrão é a branch"main". - create_pr (
bool, opcional, padrãoFalse) — Se deve criar um PR com os arquivos enviados ou fazer o commit diretamente. - max_shard_size (
intoustr, opcional) — Tamanho máximo opcional dos shards do dataset a serem enviados para o hub. Se expresso como string, deve ser composto por dígitos seguidos por uma unidade (como"500MB"ou"1GB"). Se não for fornecido, cada split mantém a contagem de shards nativa do dataset. - num_shards (
Dict[str, int], opcional) — Número de shards a serem gravados. Use um dicionário para definir umnum_shardsdiferente para cada split. Semax_shard_sizefor fornecido e onum_shardsde um split não for, o número de shards para esse split é estimado a partir demax_shard_size. - embed_external_files (
bool, padrão éTrue) — Se incorporar os bytes dos arquivos nos shards. Especificamente, isso fará o seguinte antes do push para os campos do tipo: - num_proc (
int, opcional, padrão éNone) — Número de processos ao preparar e enviar o dataset. Isso é útil se o dataset for composto por muitas amostras ou arquivos de mídia para incorporar. Usa o contexto “spawn” para funcionar com hf_xet, o cliente rust para uploads rápidos para o HF. O multiprocessing é desabilitado por padrão.Adicionado na 4.0.0
Envia o IterableDatasetDict para o hub como um dataset Parquet. O IterableDatasetDict é enviado usando requisições HTTP e não requer a instalação de git ou git-lfs.
Cada divisão do conjunto de dados será enviada de forma independente. O conjunto de dados enviado manterá os nomes originais das divisões.
Os arquivos Parquet resultantes são autossuficientes por padrão: se o seu conjunto de dados contiver dados de Image ou Audio, os arquivos Parquet armazenarão os bytes das suas imagens ou arquivos de áudio.
Você pode desativar isso definindo embed_external_files como False.
Exemplo:
>>> 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})Se você deseja adicionar uma nova configuração (ou subconjunto) a um conjunto de dados (por exemplo, se o conjunto de dados tiver várias tarefas/versões/idiomas):
>>> 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")Recursos
Um dicionário especial que define a estrutura interna de um conjunto de dados.
Instanciada com um dicionário do tipo dict[str, FieldType], onde as chaves são os nomes das colunas desejados e os valores são o tipo de cada coluna.
FieldType pode ser um dos seguintes:
- O recurso Value especifica um valor de um único tipo de dados, por exemplo,
int64oustring. - A feature ClassLabel especifica um conjunto predefinido de classes que podem ter rótulos associados e que serão armazenados como inteiros no dataset.
- Um
dictdo Python especifica um recurso composto que contém um mapeamento de subcampos para subrecursos. É possível ter campos aninhados de campos aninhados de maneira arbitrária. - List ou LargeList especifica um recurso composto contendo uma sequência de sub-recurso, todos do mesmo tipo de recurso.
- Array2D, Array3D, Array4D ou Array5D para recursos de arrays multidimensionais.
- Audio recurso para armazenar o caminho absoluto para um arquivo de áudio ou um dicionário com o caminho relativo para um arquivo de áudio (chave “path”) e seu conteúdo em bytes (chave “bytes”). Este recurso carrega o áudio de forma preguiçosa com um decodificador.
- Image recurso para armazenar o caminho absoluto para um arquivo de imagem, um objeto
np.ndarray, um objetoPIL.Image.Imageou um dicionário com o caminho relativo para um arquivo de imagem (chave “path”) e seu conteúdo em bytes (chave “bytes”). Este recurso extrai os dados da imagem. - Video para armazenar o caminho absoluto para um arquivo de vídeo, um objeto
torchcodec.decoders.VideoDecoderou um dicionário com o caminho relativo para um arquivo de vídeo (chave “path”) e seu conteúdo em bytes (chave “bytes”). Este recurso carrega o vídeo de forma preguiçosa (lazy) com um decodificador. - Pdf recurso para armazenar o caminho absoluto para um arquivo PDF, um objeto
pdfplumber.pdf.PDFou um dicionário com o caminho relativo para um arquivo PDF (chave “path”) e seu conteúdo em bytes (chave “bytes”). Este recurso carrega o PDF de forma preguiçosa com um leitor de PDF. - Nifti recurso para armazenar o caminho absoluto para um arquivo de neuroimagem NIfTI, um objeto
nibabel.Nifti1Imageou um dicionário com o caminho relativo para um arquivo NIfTI (chave “path”) e seu conteúdo em bytes (chave “bytes”). Este recurso carrega o arquivo NIfTI de forma preguiçosa (lazy) com nibabel. - Translation ou TranslationVariableLanguages, recurso específico de Tradução Automática.
- Json recurso para armazenar dados não estruturados, por exemplo, contendo tipos mistos/arbitrários. Por baixo dos panos
Faça uma cópia profunda de Features.
decode_batch
< source >( batch: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
Decodificar lote com decodificação de recursos personalizada.
decode_column
< source >( column: listcolumn_name: strtoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
Decodifique a coluna com decodificação de recurso personalizada.
decode_example
< source >( example: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
Exemplo de decodificação com decodificação de recursos personalizada.
encode_batch
< source >( batch )
Codifica o lote em um formato para Arrow.
encode_column
< source >( columncolumn_name: str )
Codifica a coluna em um formato para Arrow.
encode_example
< source >( example )
Codifique o exemplo em um formato para Arrow.
Achate os recursos. Cada coluna de dicionário é removida e substituída por todos os subcampos que ela contém. Os novos campos são nomeados concatenando o nome da coluna original e o nome do subcampo da seguinte forma: <original>.<subfield>.
Se uma coluna contém dicionários aninhados, então os nomes de todos os subcampos de níveis inferiores também são concatenados para formar novas colunas: <original>.<subfield>.<subsubfield>, etc.
Exemplo:
>>> 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 )
Constrói Features a partir do esquema Arrow. Também verifica os metadados do esquema para os recursos do Hugging Face Datasets. Campos não anuláveis não são suportados e são definidos como anuláveis.
Além disso, pa.dictionary não é suportado e ele usa seu tipo subjacente no lugar. Portanto, os datasets convertem objetos DictionaryArray para seus valores reais.
from_dict
< source >( dic ) → Features
Construir [Features] a partir de um dict.
Regenera o objeto de recurso aninhado a partir de um dicionário desserializado. Usamos a chave _type para inferir o nome da dataclass do recurso FieldType.
Isso permite uma sintaxe de construtor conveniente para definir recursos a partir de dicionários JSON desserializados. Esta função é usada, em particular, ao desserializar um [DatasetInfo] que foi exportado para um objeto JSON. Isso atua como um análogo de [Features.from_arrow_schema] e lida com a instanciação recursiva campo a campo, mas não requer nenhum mapeamento para/pyarrow, exceto pelo fato de aproveitar o mapeamento dos dtypes primitivos do pyarrow que o [Value] executa automaticamente.
reorder_fields_as
< source >( other: Features )
Reordene os campos de Features para corresponder à ordem dos campos de outros [Features].
A ordem dos campos é importante, pois afeta os dados subjacentes do arrow. Reordenar os campos permite que o tipo de dados subjacente do arrow corresponda.
Exemplo:
>>> 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.typeEscalar
classe datasets.Value
< source >( dtype: strid: typing.Optional[str] = None )
Valor de recurso escalar de um determinado tipo de dados.
Os possíveis dtypes de Value são os seguintes:
nullboolint8int16int32int64uint8uint16uint32uint64float16float32(alias float)float64(alias 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
classe datasets.ClassLabel
< source >( num_classes: dataclasses.InitVar[typing.Optional[int]] = Nonenames: list = Nonenames_file: dataclasses.InitVar[typing.Optional[str]] = Noneid: typing.Optional[str] = None )
Parâmetros
- num_classes (
int, opcional) — Número de classes. Todos os rótulos devem ser <num_classes. - names (
listdestr, opcional) — Nomes de string para as classes inteiras. A ordem em que os nomes são fornecidos é mantida. - names_file (
str, opcional) — Caminho para um arquivo com os nomes das classes inteiras, um por linha.
Tipo de recurso para rótulos de classe inteira.
Existem 3 maneiras de definir um ClassLabel, que correspondem aos 3 argumentos:
num_classes: Cria rótulos de 0 a (num_classes-1).names: Lista de strings de rótulos.names_file: Arquivo contendo a lista de rótulos.
Por baixo dos panos, os rótulos são armazenados como inteiros. Você pode usar -1 para representar rótulos desconhecidos/ausentes.
Exemplo:
>>> 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
Converte um array Arrow para o tipo de armazenamento arrow ClassLabel.
Os tipos Arrow que podem ser convertidos para o tipo de armazenamento pyarrow ClassLabel são:
pa.string()pa.int()
Conversão integer => nome da classe string.
Em relação a rótulos desconhecidos/ausentes: passar inteiros negativos levanta ValueError.
Nome da classe de conversão string => integer.
Composto
classe datasets.LargeList
< source >( feature: typing.Anyid: typing.Optional[str] = None )
Tipo de recurso para dados de listas grandes compostos pelo tipo de dados de recurso filho.
Ele é baseado em pyarrow.LargeListType, que é como pyarrow.ListType, mas com offsets de 64 bits em vez de 32 bits.
classe datasets.List
< source >( feature: typing.Anylength: int = -1id: typing.Optional[str] = None )
Tipo de recurso para dados de listas grandes compostos pelo tipo de dados de recurso filho.
É baseado em pyarrow.ListType, que usa offsets de 32 bits ou um comprimento fixo.
classe datasets.Sequence
< source >( feature = Nonelength = -1**kwargs )
Uma Sequence é uma utilidade que converte automaticamente um recurso de dicionário interno em um dicionário de listas. Esse comportamento é implementado para ter uma camada de compatibilidade com a biblioteca TensorFlow Datasets, mas pode não ser desejado em alguns casos. Se você não quiser esse comportamento, pode usar uma List ou uma LargeList em vez da Sequence.
Tradução
classe datasets.Translation
< source >( languages: listid: typing.Optional[str] = None )
Feature para traduções com idiomas fixos por exemplo.
Aqui, para compatibilidade com tfds.
Exemplo:
>>> # At construction time:
>>> datasets.features.Translation(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
... 'en': 'the cat',
... 'fr': 'le chat',
... 'de': 'die katze'
... }Aplique a funcionalidade Flatten the Translation em um dicionário.
classe 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)
Parâmetros
- languages (
dict) — Um dicionário para cada exemplo que mapeia códigos de idioma em string para uma ou mais traduções em string. Os idiomas presentes podem variar de um exemplo para outro.
Retorna
languageoutranslation(tf.Tensorunidimensional de comprimento variável detf.string)
Códigos de idioma ordenados em ordem ascendente ou traduções em texto simples, ordenados para alinhar com os códigos de idioma.
Feature para traduções com idiomas variáveis por exemplo.
Aqui, para compatibilidade com tfds.
Exemplo:
>>> # 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'],
... }Aplique a função Flatten na feature TranslationVariableLanguages para convertê-la em um dicionário.
Arrays
classe datasets.Array2D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Crie um array bidimensional.
classe datasets.Array3D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Crie um array tridimensional.
classe datasets.Array4D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Crie um array de quatro dimensões.
classe datasets.Array5D
< source >( shape: tupledtype: strid: typing.Optional[str] = None )
Crie um array de cinco dimensões.
Áudio
classe 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 )
Parâmetros
- sampling_rate (
int, opcional) — Taxa de amostragem alvo. SeNone, a taxa de amostragem nativa é usada. - num_channels (
int, opcional) — O número desejado de canais das amostras. Por padrão, é usado o número de canais da fonte. A decodificação de áudio retornará amostras com a forma (num_channels, num_samples) AtualmenteNone(número de canais da fonte, padrão),1(mono) ou2(estéreo) canais são suportados. Onum_channelsargumento é passado paratorchcodec.decoders.AudioDecoder.Adicionado na 4.4.0
- decode (
bool, padrãoTrue) — Se deve decodificar os dados de áudio. SeFalse, retorna o dicionário subjacente no formato{"path": audio_path, "bytes": audio_bytes}. - stream_index (
int, opcional) — O índice de streaming a ser usado do arquivo. SeNone, o padrão é o índice “melhor”.
Audio Feature para extrair dados de áudio de um arquivo de áudio.
Input: O recurso de áudio aceita como entrada:
Uma
str: caminho absoluto para o arquivo de áudio (ou seja, o acesso aleatório é permitido).Um
pathlib.Path: caminho para o arquivo de áudio (ou seja, o acesso aleatório é permitido).Um
dictcom as chaves:path: String com o caminho relativo do arquivo de áudio em relação ao arquivo de arquivo.bytes: Bytes content of the audio file.
Isso é útil para arquivos parquet ou webdataset que incorporam arquivos de áudio.
Um
dictcom as chaves:array: Matriz contendo a amostra de áudiosampling_rate: Inteiro correspondente à taxa de amostragem da amostra de áudio.
Um objeto de decodificador de áudio do torchcodec:
torchcodec.decoders.AudioDecoder.
Saída: Os recursos de áudio saem como objetos torchcodec.decoders.AudioDecoder, com chaves adicionais:
array: Matriz contendo a amostra de áudiosampling_rate: Inteiro correspondente à taxa de amostragem da amostra de áudio.
Exemplo:
>>> 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
Converte um array Arrow para o tipo de armazenamento de áudio arrow. Os tipos Arrow que podem ser convertidos para o tipo de armazenamento de áudio pyarrow são:
pa.string()- deve conter os dados de “path”pa.binary()- deve conter os bytes de áudiopa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- a ordem não importa
decode_example
< source >( value: dicttoken_per_repo_id: typing.Optional[dict[str, typing.Union[str, bool, NoneType]]] = None )
Parâmetros
- value (
dict) — Um dicionário com as chaves:path: String com o caminho relativo do arquivo de áudio.bytes: Bytes do arquivo de áudio.
- token_per_repo_id (
dict, opcional) — Para acessar e decodificar arquivos de áudio de repositórios privados no Hub, você pode passar um dicionário repo_id (str) -> token (booloustr)
Decodifique o arquivo de áudio de exemplo em dados de áudio.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Parâmetros
- storage (
pa.StructArray) — Array PyArrow para incorporar. - token_per_repo_id (
dict, opcional) — Dicionário repo_id -> token para buscar os bytes dos arquivos. - local_files (
bool, padrão éTrue) — Se incorporar dados de arquivos locais no arrayAdicionado na 4.8.5
- remote_files (
bool, padrão éTrue) — Se incorporar dados de arquivos remotos no array. Por exemplo, arquivos com caminhos que começam com hf:// ou https://Adicionado na 4.8.5
Retorna
pa.StructArray
Array no tipo de armazenamento de áudio arrow, ou seja,
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Incorpore arquivos de áudio no array Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('AudioDecoder')] ) → dict
Codifique o exemplo em um formato para Arrow.
Se estiver no estado decodificável, lance um erro; caso contrário, achate o recurso em um dicionário.
Imagem
classe datasets.Image
< source >( mode: typing.Optional[str] = Nonedecode: bool = Trueid: typing.Optional[str] = None )
Imagem Feature para ler dados de imagem de um arquivo de imagem.
Input: O recurso de imagem aceita como entrada:
Uma
str: caminho absoluto para o arquivo de imagem (ou seja, o acesso aleatório é permitido).Um
pathlib.Path: caminho para o arquivo de imagem (ou seja, o acesso aleatório é permitido).Um
dictcom as chaves:path: String com o caminho relativo do arquivo de imagem em relação ao arquivo de arquivo.bytes: Bytes do arquivo de imagem.
Isso é útil para arquivos parquet ou webdataset que incorporam arquivos de imagem.
Um
np.ndarray: um array NumPy representando uma imagem.Um objeto de imagem PIL:
PIL.Image.Image.
Saída: Os recursos de imagem saem como objetos PIL.Image.Image.
Exemplos:
>>> 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
Converte um array Arrow para o tipo de armazenamento de imagem Arrow. Os tipos Arrow que podem ser convertidos para o tipo de armazenamento de imagem pyarrow são:
pa.string()- deve conter os dados de “path”pa.large_string()- deve conter os dados de “path” (será convertido para string, se possível)pa.binary()- deve conter os bytes da imagempa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- a ordem não importapa.list(*)- deve conter os dados do array de imagens
decode_example
< source >( value: dicttoken_per_repo_id = None )
Parâmetros
- value (
stroudict) — Uma string com o caminho absoluto do arquivo de imagem, ou um dicionário com as chaves:path: String com o caminho absoluto ou relativo do arquivo de imagem.bytes: Os bytes do arquivo de imagem.
- token_per_repo_id (
dict, opcional) — Para acessar e decodificar arquivos de imagem de repositórios privados no Hub, você pode passar um dicionário repo_id (str) -> token (booloustr).
Decodifique o arquivo de imagem de exemplo em dados de imagem.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Parâmetros
- storage (
pa.StructArray) — Array PyArrow para incorporar. - token_per_repo_id (
dict, opcional) — Dicionário repo_id -> token para buscar os bytes dos arquivos. - local_files (
bool, padrão éTrue) — Se incorporar dados de arquivos locais no arrayAdicionado na 4.8.5
- remote_files (
bool, padrão éTrue) — Se incorporar dados de arquivos remotos no array. Por exemplo, arquivos com caminhos que começam com hf:// ou https://Adicionado na 4.8.5
Retorna
pa.StructArray
Array no tipo de armazenamento Image arrow, ou seja,
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Incorpore arquivos de imagem no array Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, numpy.ndarray, ForwardRef('PIL.Image.Image')] )
Codifique o exemplo em um formato para Arrow.
Se estiver no estado decodificável, retorne o próprio recurso; caso contrário, achate o recurso em um dicionário.
Vídeo
classe 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 )
Parâmetros
- decode (
bool, padrãoTrue) — Se deve decodificar os dados do vídeo. SeFalse, retorna o dicionário subjacente no formato{"path": video_path, "bytes": video_bytes}. - stream_index (
int, opcional) — O índice de streaming a ser usado do arquivo. SeNone, o padrão é o índice “melhor”. - dimension_order (
str, padrãoNCHW) — A ordem das dimensões dos quadros decodificados. onde N é o tamanho do lote, C é o número de canais, H é a altura e W é a largura dos quadros. - num_ffmpeg_threads (
int, padrão1) — O número de threads a serem usadas para decodificar o vídeo. (Recomenda-se manter esse valor em 1) - device (
stroutorch.device, padrãocpu) — O dispositivo a ser usado para decodificar o vídeo. - seek_mode (
str, padrãoexact) — Determina se o acesso aos frames será “exact” (exato) ou “approximate” (aproximado). O modo exato garante que a solicitação do frame i retornará sempre o frame i, mas isso requer uma varredura inicial do arquivo. O modo aproximado é mais rápido, pois evita a varredura do arquivo, mas é menos preciso, pois usa os metadados do arquivo para calcular onde o frame i provavelmente está. Leia mais aqui
Video Feature para ler dados de vídeo de um arquivo de vídeo.
Input: O recurso de vídeo aceita como entrada:
Uma
str: caminho absoluto para o arquivo de vídeo (ou seja, o acesso aleatório é permitido).Um
pathlib.Path: caminho para o arquivo de vídeo (ou seja, o acesso aleatório é permitido).Um
dictcom as chaves:path: String com o caminho relativo do arquivo de vídeo em um repositório de dataset.bytes: Bytes do arquivo de vídeo.
Isso é útil para arquivos parquet ou webdataset que incorporam arquivos de vídeo.
Um objeto de decodificador de vídeo do torchcodec:
torchcodec.decoders.VideoDecoder.
Saída: A saída de Vídeo apresenta os dados como objetos torchcodec.decoders.VideoDecoder.
Exemplos:
>>> 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
Converte um array Arrow para o tipo de armazenamento de vídeo do Arrow. Os tipos Arrow que podem ser convertidos para o tipo de armazenamento de vídeo do pyarrow são:
pa.string()- deve conter os dados de “path”pa.binary()- deve conter os bytes do vídeopa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- a ordem não importapa.list(*)- deve conter os dados do array de vídeo
decode_example
< source >( value: typing.Union[str, datasets.features.video.Example]token_per_repo_id: typing.Optional[dict[str, typing.Union[bool, str]]] = None )
Parâmetros
- value (
stroudict) — Uma string com o caminho absoluto do arquivo de vídeo, ou um dicionário com as chaves:path: String com o caminho absoluto ou relativo do arquivo de vídeo.bytes: Os bytes do arquivo de vídeo.
- token_per_repo_id (
dict, opcional) — Para acessar e decodificar arquivos de vídeo de repositórios privados no Hub, você pode passar um dicionário repo_id (str) -> token (booloustr).
Decodifique o arquivo de vídeo de exemplo em dados de vídeo.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Parâmetros
- storage (
pa.StructArray) — Array PyArrow para incorporar. - token_per_repo_id (
dict, opcional) — Dicionário repo_id -> token para buscar os bytes dos arquivos. - local_files (
bool, padrão éTrue) — Se incorporar dados de arquivos locais no arrayAdicionado na 4.8.5
- remote_files (
bool, padrão éTrue) — Se incorporar dados de arquivos remotos no array. Por exemplo, arquivos com caminhos que começam com hf:// ou https://Adicionado na 4.8.5
Retorna
pa.StructArray
Array no tipo de armazenamento de vídeo arrow, ou seja,
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Incorpore arquivos de imagem no array Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, datasets.features.video.Example, numpy.ndarray, ForwardRef('VideoDecoder')] )
Codifique o exemplo em um formato para Arrow.
Se estiver no estado decodificável, retorne o próprio recurso; caso contrário, achate o recurso em um dicionário.
Mesh
classe datasets.Mesh
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Mesh Feature para ler dados de malha 3D de um arquivo.
Input: O recurso Mesh aceita como entrada:
Uma
str: caminho absoluto para o arquivo de malha (ou seja, o acesso aleatório é permitido).Um
pathlib.Path: caminho para o arquivo de malha (ou seja, o acesso aleatório é permitido).Um
dictcom as chaves:path: String com o caminho relativo do arquivo de malha em relação ao arquivo de arquivo.bytes: Bytes do arquivo de malha.
Isso é útil para arquivos parquet ou webdataset que incorporam arquivos de malha.
Um
trimesh.Trimeshoutrimesh.Scene: objeto de malha 3D ou cena.
Saída: O recurso Mesh gera dados como objetos trimesh.Trimesh ou trimesh.Scene.
cast_storage
< source >( storage: typing.Union[pyarrow.lib.StringArray, pyarrow.lib.StructArray] ) → pa.StructArray
Converte um array Arrow para o tipo de armazenamento arrow do Mesh. Os tipos Arrow que podem ser convertidos para o tipo de armazenamento pyarrow do Mesh são:
pa.string()- deve conter os dados de “path”pa.large_string()- deve conter os dados de “path” (será convertido para string, se possível)pa.binary()- deve conter os bytes da malhapa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- a ordem não importa
decode_example
< source >( value: dicttoken_per_repo_id = None )
Parâmetros
- value (
dict) — Um dicionário com as chaves:path: String com o caminho absoluto ou relativo do arquivo de malha.bytes: Os bytes do arquivo de malha.
- token_per_repo_id (
dict, opcional) — Para acessar e decodificar arquivos mesh de repositórios privados no Hub, você pode passar um dicionário repo_id (str) -> token (booloustr).
Decodificar arquivo de malha de exemplo.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Parâmetros
- storage (
pa.StructArray) — Array PyArrow para incorporar. - token_per_repo_id (
dict, opcional) — Dicionário repo_id -> token para buscar os bytes dos arquivos. - local_files (
bool, padrãoTrue) — Se os dados de arquivos locais devem ser incorporados no array. - remote_files (
bool, padrãoTrue) — Se os dados de arquivos remotos devem ser incorporados no array.
Retorna
pa.StructArray
Array no tipo de armazenamento Mesh arrow, ou seja,
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Incorpore arquivos de malha no array Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('trimesh.Trimesh'), ForwardRef('trimesh.Scene')] )
Codifique o exemplo em um formato para Arrow.
Se estiver no estado decodificável, retorne o próprio recurso; caso contrário, achate o recurso em um dicionário.
Json
Tipo de recurso para objetos JSON.
Por baixo dos panos, os objetos são armazenados como strings codificadas em JSON.
Exemplo:
>>> 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
Converte um array Arrow para o tipo de armazenamento Arrow Json.
classe datasets.Pdf
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Experimental. O recurso Feature de Pdf para ler documentos em pdf a partir de um arquivo pdf.
Input: O recurso Pdf aceita como entrada:
Uma
str: caminho absoluto para o arquivo pdf (ou seja, o acesso aleatório é permitido).Um
pathlib.Path: caminho para o arquivo pdf (ou seja, o acesso aleatório é permitido).Um
dictcom as chaves:path: String com o caminho relativo do arquivo pdf em um repositório de dataset.bytes: Bytes do arquivo pdf. Isso é útil para arquivos arquivados com acesso sequencial.
Um
pdfplumber.pdf.PDF: objeto pdf do pdfplumber.
Exemplos:
>>> 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
Converte um array Arrow para o tipo de armazenamento Arrow do Pdf. Os tipos Arrow que podem ser convertidos para o tipo de armazenamento pyarrow do Pdf são:
pa.string()- deve conter os dados de “path”pa.binary()- deve conter os bytes da imagempa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- a ordem não importapa.list(*)- deve conter os dados do array pdf
decode_example
< source >( value: dicttoken_per_repo_id = None )
Parâmetros
- value (
stroudict) — Uma string com o caminho absoluto do arquivo PDF, ou um dicionário com as chaves:path: String com o caminho absoluto ou relativo do arquivo pdf.bytes: Os bytes do arquivo PDF.
- token_per_repo_id (
dict, opcional) — Para acessar e decodificar arquivos pdf de repositórios privados no Hub, você pode passar um dicionário repo_id (str) -> token (booloustr).
Decodifique o arquivo de exemplo em PDF para dados de PDF.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Parâmetros
- storage (
pa.StructArray) — Array PyArrow para incorporar. - token_per_repo_id (
dict, opcional) — Dicionário repo_id -> token para buscar os bytes dos arquivos. - local_files (
bool, padrão éTrue) — Se incorporar dados de arquivos locais no arrayAdicionado na 4.8.5
- remote_files (
bool, padrão éTrue) — Se incorporar dados de arquivos remotos no array. Por exemplo, arquivos com caminhos que começam com hf:// ou https://Adicionado na 4.8.5
Retorna
pa.StructArray
Array no tipo de armazenamento PDF arrow, ou seja,
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Incorpore arquivos PDF no array Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('pdfplumber.pdf.PDF')] )
Codifique o exemplo em um formato para Arrow.
Se estiver no estado decodificável, retorne o próprio recurso; caso contrário, achate o recurso em um dicionário.
Nifti
classe datasets.Nifti
< source >( decode: bool = Trueid: typing.Optional[str] = None )
Experimental. Feature Nifti para ler arquivos de neuroimagem NIfTI.
Input: O recurso Nifti aceita como entrada:
Uma
str: Caminho absoluto para o arquivo NIfTI (ou seja, o acesso aleatório é permitido).Um
pathlib.Path: caminho para o arquivo NIfTI (ou seja, o acesso aleatório é permitido).Um
dictcom as chaves:path: String com o caminho relativo do arquivo NIfTI em um repositório de dataset.bytes: Bytes do arquivo NIfTI. Isso é útil para arquivos arquivados com acesso sequencial.
Um objeto de imagem
nibabel(por exemplo,nibabel.nifti1.Nifti1Image).
Exemplos:
>>> 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
Converte um array Arrow para o tipo de armazenamento arrow Nifti. Os tipos Arrow que podem ser convertidos para o tipo de armazenamento pyarrow Nifti são:
pa.string()- deve conter os dados de “path”pa.binary()- deve conter os bytes do NIfTIpa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- a ordem não importa
decode_example
< source >( value: dicttoken_per_repo_id = None )
Parâmetros
- value (
stroudict) — Uma string com o caminho absoluto do arquivo NIfTI, ou um dicionário com as chaves:path: String com o caminho absoluto ou relativo do arquivo NIfTI.bytes: Os bytes do arquivo NIfTI.
- token_per_repo_id (
dict, opcional) — Para acessar e decodificar arquivos NIfTI de repositórios privados no Hub, você pode passar um dicionário repo_id (str) -> token (booloustr).
Decodifique o arquivo NIfTI de exemplo em um objeto de imagem do nibabel.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Parâmetros
- storage (
pa.StructArray) — Array PyArrow para incorporar. - token_per_repo_id (
dict, opcional) — Dicionário repo_id -> token para buscar os bytes dos arquivos. - local_files (
bool, padrão éTrue) — Se incorporar dados de arquivos locais no arrayAdicionado na 4.8.5
- remote_files (
bool, padrão éTrue) — Se incorporar dados de arquivos remotos no array. Por exemplo, arquivos com caminhos que começam com hf:// ou https://Adicionado na 4.8.5
Retorna
pa.StructArray
Array no tipo de armazenamento arrow do NifTI, ou seja,
pa.struct({"bytes": pa.binary(), "path": pa.string()}).
Incorpore arquivos NifTI no array Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('nib.Nifti1Image')] )
Codifique o exemplo em um formato para Arrow.
Se estiver no estado decodificável, retorne o próprio recurso; caso contrário, achate o recurso em um dicionário.
BioSequence
classe datasets.BioSequence
< source >( format: str = 'fasta'decode: bool = Trueid: typing.Optional[str] = None )
Parâmetros
- format (
str, padrão"fasta") — Nome do formato da sequência, conforme interpretado porBio.SeqIO. Valores comuns são"fasta","fastq"e"genbank". - decode (
bool, padrãoTrue) — Se deve decodificar os dados da sequência. SeFalse, retorna o dicionário subjacente no formato{"path": path, "bytes": bytes}.
Experimental. Feature de BioSequence para ler registros de sequências biológicas de um arquivo de sequência.
Um arquivo de sequência contém um ou mais registros de resíduos com seus identificadores e anotações. FASTA, FASTQ e GenBank têm a mesma forma nesse nível, diferindo apenas no parser utilizado, portanto format seleciona o parser em vez do tipo.
Input: O recurso BioSequence aceita como entrada:
Uma
str: caminho absoluto para o arquivo de sequência (ou seja, o acesso aleatório é permitido).Um
pathlib.Path: caminho para o arquivo de sequência (ou seja, o acesso aleatório é permitido).Um
dictcom as chaves:path: String com o caminho relativo do arquivo de sequência em um repositório de dataset.bytes: Bytes do arquivo de sequência. Isso é útil para arquivos arquivados com acesso sequencial.
Um
Bio.SeqRecord.SeqRecord: registro de sequência do biopython.
Exemplos:
>>> 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
Converte um array Arrow para o tipo de armazenamento arrow BioSequence. Os tipos Arrow que podem ser convertidos para o tipo de armazenamento pyarrow BioSequence são:
pa.string()- deve conter os dados de “path”pa.binary()- deve conter os bytes do arquivopa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- a ordem não importa
decode_example
< source >( value: dicttoken_per_repo_id = None )
Parâmetros
- value (
stroudict) — Uma string com o caminho absoluto do arquivo, ou um dicionário com as chaves:path: String com o caminho do arquivo absoluto ou relativo.bytes: Os bytes do arquivo.
- token_per_repo_id (
dict, opcional) — Para acessar e decodificar arquivos de repositórios privados no Hub, você pode passar um dicionário repo_id (str) -> token (booloustr).
Decodifique o arquivo de sequência de exemplo em um registro do biopython.
Um arquivo pode conter muitos registros; isso retorna o primeiro, pois uma linha é um registro. Use os carregadores de sequência empacotados para expandir um arquivo com múltiplos registros em uma linha por registro.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Parâmetros
- storage (
pa.StructArray) — Array PyArrow para incorporar. - token_per_repo_id (
dict, opcional) — Dicionário repo_id -> token para buscar os bytes dos arquivos. - local_files (
bool, padrãoTrue) — Se os dados de arquivos locais devem ser incorporados no array. - remote_files (
bool, padrãoTrue) — Se os dados de arquivos remotos devem ser incorporados no array.
Retorna
pa.StructArray
Array no tipo de armazenamento arrow BioSequence.
Incorpore os arquivos de sequência no array Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('SeqRecord')] )
Codifique o exemplo em um formato para Arrow.
Se estiver no estado decodificável, retorne o próprio recurso; caso contrário, achate o recurso em um dicionário.
BioStructure
classe datasets.BioStructure
< source >( format: str = 'pdb'decode: bool = Trueid: typing.Optional[str] = None )
Experimental. O recurso Feature do BioStructure para ler estruturas de macromoléculas de um arquivo de estrutura.
Um arquivo de estrutura contém as coordenadas tridimensionais dos átomos de uma molécula, agrupados em cadeias e resíduos. PDB e mmCIF descrevem os mesmos objetos e diferem apenas no parser utilizado, portanto format seleciona o parser em vez do tipo.
Input: O recurso BioStructure aceita como entrada:
Uma
str: caminho absoluto para o arquivo de estrutura (ou seja, o acesso aleatório é permitido).Um
pathlib.Path: caminho para o arquivo de estrutura (ou seja, o acesso aleatório é permitido).Um
dictcom as chaves:path: String com o caminho relativo do arquivo de estrutura em um repositório de dataset.bytes: Bytes do arquivo de estrutura. Isso é útil para arquivos arquivados com acesso sequencial.
Uma
Bio.PDB.Structure.Structure: estrutura do biopython.
Exemplos:
>>> 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
Converte um array Arrow para o tipo de armazenamento arrow do BioStructure. Os tipos Arrow que podem ser convertidos para o tipo de armazenamento pyarrow do BioStructure são:
pa.string()- deve conter os dados de “path”pa.binary()- deve conter os bytes do arquivopa.struct({"bytes": pa.binary()})pa.struct({"path": pa.string()})pa.struct({"bytes": pa.binary(), "path": pa.string()})- a ordem não importa
decode_example
< source >( value: dicttoken_per_repo_id = None )
Parâmetros
- value (
stroudict) — Uma string com o caminho absoluto do arquivo, ou um dicionário com as chaves:path: String com o caminho do arquivo absoluto ou relativo.bytes: Os bytes do arquivo.
- token_per_repo_id (
dict, opcional) — Para acessar e decodificar arquivos de repositórios privados no Hub, você pode passar um dicionário repo_id (str) -> token (booloustr).
Decodifique o arquivo de exemplo de estrutura em uma estrutura biopython.
embed_storage
< source >( storage: StructArraytoken_per_repo_id = Nonelocal_files: bool = Trueremote_files: bool = True ) → pa.StructArray
Parâmetros
- storage (
pa.StructArray) — Array PyArrow para incorporar. - token_per_repo_id (
dict, opcional) — Dicionário repo_id -> token para buscar os bytes dos arquivos. - local_files (
bool, padrãoTrue) — Se os dados de arquivos locais devem ser incorporados no array. - remote_files (
bool, padrãoTrue) — Se os dados de arquivos remotos devem ser incorporados no array.
Retorna
pa.StructArray
Array no tipo de armazenamento arrow do BioStructure.
Incorpore os arquivos de estrutura no array Arrow.
encode_example
< source >( value: typing.Union[str, bytes, bytearray, dict, ForwardRef('Structure')] )
Codifique o exemplo em um formato para Arrow.
Se estiver no estado decodificável, retorne o próprio recurso; caso contrário, achate o recurso em um dicionário.
Sistemas de arquivos
datasets.filesystems.is_remote_filesystem
< source >( fs: AbstractFileSystem )
Verifica se fs é um sistema de arquivos remoto.
Impressão digital
Hasher que aceita objetos Python como entradas.