Datasets documentation

Criar um conjunto de dados

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

and get access to the augmented documentation experience

to get started

Criar um conjunto de dados

Às vezes, você pode precisar criar um dataset se estiver trabalhando com seus próprios dados. Criar um dataset com 🤗 Datasets confere a seu dataset todas as vantagens da biblioteca: carregamento e processamento rápidos, streaming de datasets enormes, memory-mapping e muito mais. Você pode criar um dataset com 🤗 Datasets de forma fácil e rápida, usando abordagens de baixo código, o que reduz o tempo necessário para começar a treinar um modelo. Em muitos casos, é tão simples quanto arrastar e soltar seus arquivos de dados em um repositório de dataset no Hub.

Neste tutorial, você aprenderá a usar os métodos de baixo código do 🤗 Datasets para criar conjuntos de dados a partir dos seus próprios dados.

Nota

Se você deseja aprender a carregar conjuntos de dados existentes ou a carregar arquivos locais e remotos (CSV, JSON, Parquet, etc.), consulte o guia de carregamento.

Este tutorial aborda:

  • Criadores baseados em pastas para criar rapidamente um conjunto de dados de imagem ou áudio
  • métodos from_ para criar conjuntos de dados a partir de objetos Python locais

Criadores baseados em arquivos

🤗 O Datasets suporta muitos formatos comuns, como csv, json/jsonl, parquet, txt.

Por exemplo, ele pode ler um conjunto de dados composto por um ou vários arquivos CSV (neste caso, passe seus arquivos CSV como uma lista):

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

Para obter a lista de formatos suportados e exemplos de código, siga este guia aqui.

Construtores baseados em pastas

Existem dois construtores baseados em pastas, ImageFolder e AudioFolder. Esses são métodos de baixo código para criar rapidamente um conjunto de dados de imagens ou de fala e áudio com vários milhares de exemplos. Eles são ótimos para prototipar rapidamente modelos de visão computacional e de fala antes de escalar para um conjunto de dados maior. Os construtores baseados em pastas pegam seus dados e geram automaticamente os recursos, as divisões e os rótulos do conjunto de dados. Por baixo dos panos:

  • ImageFolder usa o recurso Image para decodificar um arquivo de imagem. Muitos formatos de extensão de imagem são suportados, como jpg e png, mas outros formatos também são suportados. Você pode verificar a lista completa de extensões de imagem suportadas.
  • AudioFolder usa o recurso Audio para decodificar um arquivo de áudio. Extensões como wav, mp3 e até mp4 são suportadas, e você pode verificar a lista completa de extensões de áudio suportadas. A decodificação é feita via ffmpeg.

As divisões do conjunto de dados são geradas a partir da estrutura do repositório, e os nomes dos rótulos são inferidos automaticamente a partir do nome do diretório.

Por exemplo, se o seu conjunto de dados de imagens (o mesmo vale para um conjunto de dados de áudio) estiver armazenado da seguinte forma:

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

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

Então, é assim que o construtor baseado em pastas gera um exemplo:

Crie o conjunto de dados de imagens especificando imagefolder em load_dataset():

>>> from datasets import load_dataset

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

Um conjunto de dados de áudio é criado da mesma forma, exceto que você especifica audiofolder em load_dataset() em vez disso:

>>> from datasets import load_dataset

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

Informações adicionais sobre o seu conjunto de dados, como legendas de texto ou transcrições, podem ser incluídas com um arquivo metadata.csv na pasta que contém o seu conjunto de dados. O arquivo de metadados precisa ter uma coluna file_name que vincula o arquivo de imagem ou áudio aos seus metadados correspondentes:

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

Para saber mais sobre cada um desses construtores baseados em pastas, consulte os guias de ImageFolder, AudioFolder ou MeshFolder.

De dicionários Python

Você também pode criar um dataset a partir de dados em dicionários Python. Existem duas maneiras de criar um dataset usando os métodos from_:

  • O método from_generator() é a maneira mais eficiente em termos de memória para criar um dataset a partir de um generator, devido ao comportamento iterativo dos generators. Isso é especialmente útil quando você está trabalhando com um dataset muito grande que pode não caber na memória, já que o dataset é gerado no disco de forma progressiva e, em seguida, mapeado na memória.

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

    Um IterableDataset baseado em gerador precisa ser iterado com um loop for, por exemplo:

    >>> from datasets import IterableDataset
    >>> ds = IterableDataset.from_generator(gen)
    >>> for example in ds:
    ...     print(example)
    {"pokemon": "bulbasaur", "type": "grass"}
    {"pokemon": "squirtle", "type": "water"}
  • O método from_dict() é uma maneira direta de criar um dataset a partir de um dicionário:

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

    Para criar um conjunto de dados de imagem ou áudio, encadeie o método cast_column() com from_dict() e especifique a coluna e o tipo de recurso. Por exemplo, para criar um conjunto de dados de áudio:

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

Agora que você sabe como criar um conjunto de dados, considere compartilhá-lo no Hub para que a comunidade também possa se beneficiar do seu trabalho! Vá para a próxima seção para aprender como compartilhar seu conjunto de dados.

Update on GitHub