Datasets documentation
Construir e carregar
Construir e carregar
Quase todo fluxo de trabalho de deep learning começa com o carregamento de um conjunto de dados, o que o torna uma das etapas mais importantes. Com o 🤗 Datasets, há mais de 900 conjuntos de dados disponíveis para ajudar você a começar com sua tarefa de NLP. Tudo o que você precisa fazer é chamar load_dataset() para dar seu primeiro passo. Essa função é um verdadeiro cavalo de batalha em todos os sentidos, pois constrói e carrega cada conjunto de dados que você usa.
ELI5: load_dataset
Vamos começar com uma explicação básica, como se você tivesse cinco anos.
Um dataset é um diretório que contém:
- Alguns arquivos de dados em formatos genéricos (JSON, CSV, Parquet, texto, etc.)
- Um cartão de dataset chamado
README.mdque contém documentação sobre o dataset, bem como um cabeçalho YAML para definir as tags e configurações dos datasets
A função load_dataset() busca o dataset solicitado localmente ou no Hugging Face Hub. O Hub é um repositório central onde todos os datasets e modelos do Hugging Face são armazenados.
Se o conjunto de dados contiver apenas arquivos de dados, load_dataset() inferirá automaticamente como carregar os arquivos de dados com base em suas extensões (json, csv, parquet, tsfile, txt, etc.). Por baixo dos panos, o 🤗 Datasets usará um DatasetBuilder apropriado com base no formato dos arquivos de dados. Existe um builder para cada formato de arquivo de dados no 🤗 Datasets:
- datasets.packaged_modules.text.Text para texto
- datasets.packaged_modules.csv.Csv para CSV e TSV
- datasets.packaged_modules.json.Json para JSON e JSONL
- datasets.packaged_modules.parquet.Parquet para Parquet
- datasets.packaged_modules.arrow.Arrow para Arrow (formato de arquivo em streaming)
- datasets.packaged_modules.sql.Sql para bancos de dados SQL
- datasets.packaged_modules.tsfile.TsFile para TsFile (dados de séries temporais)
- datasets.packaged_modules.imagefolder.ImageFolder para pastas de imagens
- datasets.packaged_modules.audiofolder.AudioFolder para pastas de áudio
Leia a seção Share para saber mais sobre como compartilhar um conjunto de dados.
🤗 Datasets baixa os arquivos do dataset da URL original, gera o dataset e o faz cache em uma tabela Arrow no seu drive. Se você já baixou o dataset antes, o 🤗 Datasets o recarrega do cache para evitar o trabalho de baixá-lo novamente.
Agora que você tem uma compreensão de alto nível sobre como os conjuntos de dados são construídos, vamos dar uma olhada mais detalhada nos detalhes de como tudo isso funciona.
Criando um conjunto de dados
Ao carregar um dataset pela primeira vez, o 🤗 Datasets pega o arquivo de dados bruto e o constrói em uma tabela de linhas e colunas tipadas. Existem duas classes principais responsáveis por construir um dataset: BuilderConfig e DatasetBuilder.

BuilderConfig
BuilderConfig é a classe de configuração de DatasetBuilder. O BuilderConfig contém os seguintes atributos básicos sobre um conjunto de dados:
| Atributo | Descrição |
|---|---|
name | Nome curto do conjunto de dados. |
version | Identificador da versão do conjunto de dados. |
data_dir | Armazena o caminho para uma pasta local contendo os arquivos de dados. |
data_files | Armazena os caminhos para os arquivos de dados locais. |
description | Descrição do conjunto de dados. |
Se você deseja adicionar atributos adicionais ao seu conjunto de dados, como os rótulos de classe, pode subclassear a classe base BuilderConfig. Existem duas maneiras de preencher os atributos de uma classe BuilderConfig ou subclasse:
Forneça uma lista de instâncias pré-definidas da classe BuilderConfig (ou de uma subclasse) no atributo
DatasetBuilder.BUILDER_CONFIGS()dos datasets.Quando você chama load_dataset(), quaisquer argumentos de palavra-chave que não sejam específicos do método serão usados para definir os atributos associados da classe BuilderConfig. Isso substituirá os atributos predefinidos se uma configuração específica tiver sido selecionada.
Você também pode definir o DatasetBuilder.BUILDER_CONFIG_CLASS para qualquer subclasse personalizada de BuilderConfig.
DatasetBuilder
DatasetBuilder acessa todos os atributos dentro de BuilderConfig para construir o dataset real.

Existem três métodos principais em DatasetBuilder:
DatasetBuilder._info()é responsável por definir os atributos do dataset. Quando você chamadataset.info, o 🤗 Datasets retorna as informações armazenadas aqui. Da mesma forma, os Features também são especificados aqui. Lembre-se, os Features são como o esqueleto do dataset. Eles fornecem os nomes e os tipos de cada coluna.DatasetBuilder._split_generatorbaixa ou recupera os arquivos de dados solicitados, os organiza em splits e define argumentos específicos para o processo de geração. Este método possui um DownloadManager que baixa arquivos ou os recupera do seu sistema de arquivos local. Dentro do DownloadManager, há um método DownloadManager.download_and_extract() que aceita um dicionário de URLs para os arquivos de dados originais e baixa os arquivos solicitados. As entradas aceitas incluem: uma única URL ou caminho, ou uma lista/dicionário de URLs ou caminhos. Qualquer tipo de arquivo compactado, como arquivos TAR, GZIP e ZIP, será extraído automaticamente.Quando os arquivos são baixados, o SplitGenerator os organiza em splits. O SplitGenerator contém o nome do split e quaisquer argumentos de palavra-chave fornecidos ao método
DatasetBuilder._generate_examples. Os argumentos de palavra-chave podem ser específicos para cada split e, tipicamente, incluem pelo menos o caminho local para os arquivos de dados de cada split.DatasetBuilder._generate_exampleslê e analisa os arquivos de dados de uma divisão. Em seguida, ele gera exemplos do dataset de acordo com o formato especificado emfeaturesdeDatasetBuilder._info(). A entrada deDatasetBuilder._generate_examplesé, na verdade, ofilepathfornecido nos argumentos de palavra-chave do último método.O conjunto de dados é gerado com um gerador em Python, que não carrega todos os dados na memória. Como resultado, o gerador pode lidar com conjuntos de dados grandes. No entanto, antes que as amostras geradas sejam gravadas no arquivo do conjunto de dados no disco, elas são armazenadas em um buffer
ArrowWriter. Isso significa que as amostras geradas são gravadas por lote. Se as amostras do seu conjunto de dados consumirem muita memória (imagens ou vídeos), certifique-se de especificar um valor baixo para o atributoDEFAULT_WRITER_BATCH_SIZEem DatasetBuilder. Recomendamos não exceder um tamanho de 200 MB.
Manter a integridade
Para garantir que um conjunto de dados esteja completo, o load_dataset() executa uma série de testes nos arquivos baixados para verificar se tudo está presente. Dessa forma, você não se depara com surpresas quando o conjunto de dados solicitado não é gerado como esperado. O load_dataset() verifica:
- O número de divisões no
DatasetDictgerado. - O número de amostras em cada divisão do
DatasetDictgerado. - A lista de arquivos baixados.
- Os checksums SHA256 dos arquivos baixados (desativado por padrão).
Se o conjunto de dados não passar nas verificações, é provável que o autor do conjunto de dados tenha feito algumas alterações nos arquivos de dados.
Nesse caso, um erro é lançado para alertar que o conjunto de dados foi alterado.
Para ignorar o erro, é necessário especificar verification_mode="no_checks" em load_dataset().
Sempre que você vir um erro de verificação, sinta-se à vontade para abrir uma discussão ou um pull request na aba “Community” do conjunto de dados correspondente, para que as verificações de integridade desse conjunto de dados sejam atualizadas.
Segurança
Os repositórios de conjuntos de dados no Hub são verificados quanto a malware; veja mais informações aqui.
Update on GitHub