Datasets documentation
Estructura tu repositorio
Estructura tu repositorio
Para alojar y compartir tu conjunto de datos, crea un repositorio de datos en Hugging Face Hub y sube tus archivos de datos.
Esta guía te mostrará cómo estructurar tu repositorio de datos al subirlo.
Un conjunto de datos con una estructura y un formato de archivo admitidos (.txt, .csv, .parquet, .jsonl, .mp3, .jpg, .zip, etc.) se carga automáticamente con load_dataset() y tendrá un visor de datos en su página de conjunto de datos en el Hub.
Caso de uso principal
La estructura de datos más simple tiene dos archivos: train.csv y test.csv (esto funciona con cualquier formato de archivo admitido).
Tu repositorio también contendrá un archivo README.md, la ficha del conjunto de datos que se muestra en la página de tu conjunto de datos.
my_dataset_repository/
├── README.md
├── train.csv
└── test.csvEn este caso simple, obtendrás un dataset con dos splits: train (que contiene ejemplos de train.csv) y test (que contiene ejemplos de test.csv).
Defina sus divisiones y subconjuntos en YAML
Divisiones
Si tienes varios archivos y quieres definir en qué división va cada uno, puedes usar el campo configs de YAML en la parte superior de tu README.md.
Por ejemplo, dado un repositorio como este:
my_dataset_repository/
├── README.md
├── data.csv
└── holdout.csvPuedes definir tus divisiones añadiendo el campo configs en el bloque YAML en la parte superior de tu README.md:
---
configs:
- config_name: default
data_files:
- split: train
path: "data.csv"
- split: test
path: "holdout.csv"
---Puede seleccionar varios archivos por división usando una lista de rutas:
my_dataset_repository/
├── README.md
├── data/
│ ├── abc.csv
│ └── def.csv
└── holdout/
└── ghi.csv---
configs:
- config_name: default
data_files:
- split: train
path:
- "data/abc.csv"
- "data/def.csv"
- split: test
path: "holdout/ghi.csv"
---O bien, puede usar patrones glob para listar automáticamente todos los archivos que necesita:
---
configs:
- config_name: default
data_files:
- split: train
path: "data/*.csv"
- split: test
path: "holdout/*.csv"
---Tenga en cuenta que el campo
config_namees obligatorio incluso si tiene una sola configuración.
Configuraciones
Es posible que su conjunto de datos tenga varios subconjuntos de datos que desee poder cargar por separado. En ese caso, puede definir una lista de configuraciones dentro del campo configs en YAML:
my_dataset_repository/
├── README.md
├── main_data.csv
└── additional_data.csv---
configs:
- config_name: main_data
data_files: "main_data.csv"
- config_name: additional_data
data_files: "additional_data.csv"
---Cada configuración se muestra por separado en el Hugging Face Hub y se puede cargar pasando su nombre como segundo parámetro:
from datasets import load_dataset
main_data = load_dataset("my_dataset_repository", "main_data")
additional_data = load_dataset("my_dataset_repository", "additional_data")Parámetros del constructor
No solo data_files, sino también otros parámetros específicos del builder pueden pasarse mediante YAML, lo que permite mayor flexibilidad en la forma de cargar los datos sin necesidad de código personalizado. Por ejemplo, define qué separador usar en qué configuración para cargar tus archivos csv:
---
configs:
- config_name: tab
data_files: "main_data.csv"
sep: "\t"
- config_name: comma
data_files: "additional_data.csv"
sep: ","
---Consulte la documentación de los constructores específicos para ver qué parámetros de configuración tienen.
Puede configurar una configuración predeterminada usando
default: true, por ejemplo, puede ejecutarmain_data = load_dataset("my_dataset_repository")si configura- config_name: main_data data_files: "main_data.csv" default: true
Detección automática de divisiones
Si no se proporciona un YAML, 🤗 Datasets busca ciertos patrones en el repositorio del conjunto de datos para inferir automáticamente las divisiones del conjunto de datos. Existe un orden en los patrones, que comienza con el formato de división de nombre de archivo personalizado y termina tratando todos los archivos como una única división si no se encuentra ningún patrón.
Nombre del directorio
Los archivos de datos también pueden colocarse en directorios distintos denominados train, test y validation, donde cada directorio contiene los archivos de datos para esa división:
my_dataset_repository/
├── README.md
└── data/
├── train/
│ └── bees.csv
├── test/
│ └── more_bees.csv
└── validation/
└── even_more_bees.csvDivisiones de nombre de archivo
Si no tiene divisiones no tradicionales, puede colocar el nombre de la división en cualquier parte del archivo de datos y se inferirá automáticamente. La única regla es que el nombre de la división debe estar delimitado por caracteres no alfanuméricos, por ejemplo test-file.csv en lugar de testfile.csv. Los delimitadores admitidos incluyen guiones bajos, guiones, espacios, puntos y números.
Por ejemplo, los siguientes nombres de archivo son todos aceptables:
- conjunto de entrenamiento:
train.csv,my_train_file.csv,train1.csv - conjunto de validación:
validation.csv,my_validation_file.csv,validation1.csv - conjunto de prueba:
test.csv,my_test_file.csv,test1.csv
A continuación se muestra un ejemplo en el que todos los archivos se colocan en un directorio llamado data:
my_dataset_repository/
├── README.md
└── data/
├── train.csv
├── test.csv
└── validation.csvDivisión con nombre de archivo personalizado
Si las divisiones de tu conjunto de datos tienen nombres personalizados que no son train, test o validation, puedes nombrar tus archivos de datos como data/<split_name>-xxxxx-of-xxxxx.csv.
Aquí hay un ejemplo con tres divisiones, train, test y random:
my_dataset_repository/
├── README.md
└── data/
├── train-00000-of-00003.csv
├── train-00001-of-00003.csv
├── train-00002-of-00003.csv
├── test-00000-of-00001.csv
├── random-00000-of-00003.csv
├── random-00001-of-00003.csv
└── random-00002-of-00003.csvDivisión única
Cuando 🤗 Datasets no encuentra ninguno de los patrones anteriores, trata todos los archivos como una única partición de entrenamiento. Si las particiones de tu conjunto de datos no se cargan como se espera, es posible que se deba a un patrón incorrecto.
Palabras clave del nombre dividido
Existen varias formas de nombrar las divisiones. Las divisiones de validación a veces se llaman “dev”, y las divisiones de prueba pueden referirse como “eval”. Estos otros nombres de división también se admiten, y las siguientes palabras clave son equivalentes:
- train, training
- validación, válido, val, dev
- test, testing, eval, evaluation
La estructura siguiente es un repositorio válido:
my_dataset_repository/
├── README.md
└── data/
├── training.csv
├── eval.csv
└── valid.csvVarios archivos por división
Si una de tus divisiones comprende varios archivos, 🤗 Datasets aún puede inferir si se trata de la división de entrenamiento, validación o prueba a partir del nombre del archivo. Por ejemplo, si tus divisiones de entrenamiento y prueba abarcan varios archivos:
my_dataset_repository/
├── README.md
├── train_0.csv
├── train_1.csv
├── train_2.csv
├── train_3.csv
├── test_0.csv
└── test_1.csvAsegúrate de que todos los archivos de tu conjunto train tengan train en sus nombres (lo mismo para test y validación).
Incluso si agregas un prefijo o sufijo a train en el nombre del archivo (por ejemplo, my_train_file_00001.csv),
🤗 Datasets aún puede inferir la división adecuada.
Para mayor comodidad, también puede colocar sus archivos de datos en directorios diferentes. En este caso, el nombre de la división se infiere a partir del nombre del directorio.
my_dataset_repository/
├── README.md
└── data/
├── train/
│ ├── shard_0.csv
│ ├── shard_1.csv
│ ├── shard_2.csv
│ └── shard_3.csv
└── test/
├── shard_0.csv
└── shard_1.csv