Datasets documentation
Strukturkan repositori Anda
Strukturkan repositori Anda
Untuk meng-host dan membagikan dataset Anda, buat repositori dataset di Hugging Face Hub dan unggah file data Anda.
Panduan ini akan menunjukkan cara menyusun repositori dataset Anda saat mengunggahnya.
Dataset dengan struktur dan format file yang didukung (.txt, .csv, .parquet, .jsonl, .mp3, .jpg, .zip dll.) akan dimuat secara otomatis dengan load_dataset(), dan akan memiliki dataset viewer di halaman dataset-nya di Hub.
Kasus penggunaan utama
Struktur dataset paling sederhana memiliki dua file: train.csv dan test.csv (ini berfungsi dengan format file apa pun yang didukung).
Repositori Anda juga akan berisi file README.md, yaitu dataset card yang ditampilkan di halaman dataset Anda.
my_dataset_repository/
βββ README.md
βββ train.csv
βββ test.csvDalam kasus sederhana ini, Anda akan mendapatkan dataset dengan dua split: train (mengandung contoh dari train.csv) dan test (mengandung contoh dari test.csv).
Definisikan split dan subset Anda dalam YAML
Pembagian
Jika Anda memiliki beberapa file dan ingin menentukan file mana yang masuk ke split mana, Anda dapat menggunakan field configs YAML di bagian atas README.md Anda.
Sebagai contoh, diberikan sebuah repositori seperti ini:
my_dataset_repository/
βββ README.md
βββ data.csv
βββ holdout.csvAnda dapat mendefinisikan split Anda dengan menambahkan field configs di blok YAML di bagian atas README.md Anda:
---
configs:
- config_name: default
data_files:
- split: train
path: "data.csv"
- split: test
path: "holdout.csv"
---Anda dapat memilih beberapa file per split menggunakan daftar path:
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"
---Atau Anda dapat menggunakan pola glob untuk secara otomatis mendaftar semua file yang Anda butuhkan:
---
configs:
- config_name: default
data_files:
- split: train
path: "data/*.csv"
- split: test
path: "holdout/*.csv"
---Perhatikan bahwa field
config_namewajib diisi meskipun Anda hanya memiliki satu konfigurasi.
Konfigurasi
Dataset Anda mungkin memiliki beberapa subset data yang ingin Anda muat secara terpisah. Dalam hal itu, Anda dapat mendefinisikan daftar konfigurasi di dalam field configs di 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"
---Setiap konfigurasi ditampilkan secara terpisah di Hugging Face Hub, dan dapat dimuat dengan melewatkan namanya sebagai parameter kedua:
from datasets import load_dataset
main_data = load_dataset("my_dataset_repository", "main_data")
additional_data = load_dataset("my_dataset_repository", "additional_data")Parameter builder
Tidak hanya data_files, tetapi parameter spesifik builder lainnya juga dapat dikirimkan melalui YAML, sehingga memberikan fleksibilitas lebih dalam cara memuat data tanpa memerlukan kode khusus. Sebagai contoh, tentukan pemisah yang akan digunakan dalam konfigurasi mana untuk memuat file csv Anda:
---
configs:
- config_name: tab
data_files: "main_data.csv"
sep: "\t"
- config_name: comma
data_files: "additional_data.csv"
sep: ","
---Lihat dokumentasi builder tertentu untuk melihat parameter konfigurasi yang mereka miliki.
Anda dapat mengatur konfigurasi default menggunakan
default: true, misalnya Anda dapat menjalankanmain_data = load_dataset("my_dataset_repository")jika Anda mengatur- config_name: main_data data_files: "main_data.csv" default: true
Deteksi split otomatis
Jika tidak ada YAML yang diberikan, π€ Datasets akan mencari pola tertentu di repositori dataset untuk secara otomatis menyimpulkan split dataset. Terdapat urutan pada pola-pola tersebut, dimulai dari format split nama file kustom hingga memperlakukan semua file sebagai satu split tunggal jika tidak ada pola yang ditemukan.
Nama direktori
File data Anda juga dapat ditempatkan ke dalam direktori yang berbeda bernama train, test, dan validation, di mana setiap direktori berisi file data untuk split tersebut:
my_dataset_repository/
βββ README.md
βββ data/
βββ train/
β βββ bees.csv
βββ test/
β βββ more_bees.csv
βββ validation/
βββ even_more_bees.csvPembagian nama file
Jika Anda tidak memiliki split non-tradisional, Anda dapat menempatkan nama split di mana saja dalam file data dan nama tersebut akan disimpulkan secara otomatis. Satu-satunya aturan adalah nama split harus dipisahkan oleh karakter non-kata, misalnya test-file.csv alih-alih testfile.csv. Pemisah yang didukung meliputi garis bawah, tanda hubung, spasi, titik, dan angka.
Sebagai contoh, nama-nama file berikut semuanya dapat diterima:
- bagian latih:
train.csv,my_train_file.csv,train1.csv - split validasi:
validation.csv,my_validation_file.csv,validation1.csv - bagian pengujian:
test.csv,my_test_file.csv,test1.csv
Berikut adalah contoh di mana semua file ditempatkan ke dalam direktori bernama data:
my_dataset_repository/
βββ README.md
βββ data/
βββ train.csv
βββ test.csv
βββ validation.csvPemisahan nama file kustom
Jika split dataset Anda memiliki nama kustom yang bukan train, test, atau validation, maka Anda dapat memberi nama file data Anda seperti data/<split_name>-xxxxx-of-xxxxx.csv.
Berikut adalah contoh dengan tiga split, train, test, dan 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.csvSatu pemisahan
Ketika π€ Datasets tidak dapat menemukan salah satu pola di atas, maka semua file akan dianggap sebagai satu split train. Jika split dataset Anda tidak dimuat seperti yang diharapkan, hal itu mungkin disebabkan oleh pola yang salah.
Kata kunci nama Split
Ada beberapa cara untuk memberi nama split. Split validasi kadang disebut βdevβ, dan split uji dapat disebut βevalβ. Nama split lain ini juga didukung, dan kata kunci berikut setara:
- train, training
- validasi, valid, val, dev
- test, testing, eval, evaluation
Struktur di bawah ini adalah repositori yang valid:
my_dataset_repository/
βββ README.md
βββ data/
βββ training.csv
βββ eval.csv
βββ valid.csvBerkas yang banyak per split
Jika salah satu split Anda terdiri dari beberapa file, π€ Datasets masih dapat menginfer apakah itu split train, validation, dan test dari nama file. Sebagai contoh, jika split train dan test Anda mencakup beberapa file:
my_dataset_repository/
βββ README.md
βββ train_0.csv
βββ train_1.csv
βββ train_2.csv
βββ train_3.csv
βββ test_0.csv
βββ test_1.csvPastikan semua file dalam set train Anda memiliki train di namanya (hal yang sama berlaku untuk test dan validation).
Meskipun Anda menambahkan prefiks atau sufiks pada train di nama file (misalnya my_train_file_00001.csv),
π€ Datasets masih dapat menyimpulkan split yang tepat.
Untuk kenyamanan, Anda juga dapat menempatkan file data Anda ke dalam direktori yang berbeda. Dalam kasus ini, nama split disimpulkan dari nama direktori.
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