Datasets documentation
Membangun dan memuat
Membangun dan memuat
Hampir setiap alur kerja pembelajaran mendalam dimulai dengan memuat dataset, yang menjadikannya salah satu langkah paling penting. Dengan 🤗 Datasets, terdapat lebih dari 900 dataset yang tersedia untuk membantu Anda memulai tugas NLP Anda. Yang perlu Anda lakukan adalah memanggil: load_dataset() untuk mengambil langkah pertama. Fungsi ini adalah kuda pekerja sejati dalam segala arti karena ia membangun dan memuat setiap dataset yang Anda gunakan.
ELI5: load_dataset
Mari kita mulai dengan penjelasan dasar ala "Jelaskan Seolah Saya Berusia Lima Tahun".
Dataset adalah direktori yang berisi:
- Beberapa file data dalam format generik (JSON, CSV, Parquet, teks, dll.)
- Kartu dataset bernama
README.mdyang berisi dokumentasi tentang dataset serta header YAML untuk mendefinisikan tag dan konfigurasi dataset
Fungsi load_dataset() mengambil dataset yang diminta secara lokal atau dari Hugging Face Hub. Hub adalah repositori pusat tempat semua dataset dan model Hugging Face disimpan.
Jika dataset hanya berisi file data, maka load_dataset() secara otomatis menginfer cara memuat file data berdasarkan ekstensinya (json, csv, parquet, tsfile, txt, dll.). Di balik layar, 🤗 Datasets akan menggunakan DatasetBuilder yang sesuai berdasarkan format file data. Terdapat satu builder untuk setiap format file data di 🤗 Datasets:
- datasets.packaged_modules.text.Text untuk teks
- datasets.packaged_modules.csv.Csv untuk CSV dan TSV
- datasets.packaged_modules.json.Json untuk JSON dan JSONL
- datasets.packaged_modules.parquet.Parquet untuk Parquet
- datasets.packaged_modules.arrow.Arrow untuk Arrow (format file streaming)
- datasets.packaged_modules.sql.Sql untuk basis data SQL
- datasets.packaged_modules.tsfile.TsFile untuk TsFile (data deret waktu)
- datasets.packaged_modules.imagefolder.ImageFolder untuk folder gambar
- datasets.packaged_modules.audiofolder.AudioFolder untuk folder audio
Baca bagian Share untuk mempelajari lebih lanjut tentang cara membagikan dataset.
🤗 Datasets mengunduh file dataset dari URL aslinya, menghasilkan dataset, dan menyimpannya sebagai cache dalam tabel Arrow di drive Anda. Jika Anda sudah mengunduh dataset sebelumnya, 🤗 Datasets akan memuat ulang dari cache agar Anda tidak perlu mengunduhnya lagi.
Sekarang setelah Anda memiliki pemahaman tingkat tinggi tentang cara dataset dibangun, mari kita lihat lebih dekat detail teknis tentang bagaimana semua ini bekerja.
Membuat dataset
Saat Anda memuat dataset untuk pertama kali, 🤗 Datasets mengambil file data mentah dan membangunnya menjadi tabel baris dan kolom bertipe. Ada dua kelas utama yang bertanggung jawab untuk membangun dataset: BuilderConfig dan DatasetBuilder.

BuilderConfig
BuilderConfig adalah kelas konfigurasi dari DatasetBuilder. BuilderConfig berisi atribut dasar berikut tentang dataset:
| Atribut | Deskripsi |
|---|---|
name | Nama pendek dari dataset. |
version | Pengidentifikasi versi dataset. |
data_dir | Menyimpan path ke folder lokal yang berisi file data. |
data_files | Menyimpan jalur ke file data lokal. |
description | Deskripsi dari dataset. |
Jika Anda ingin menambahkan atribut tambahan ke dataset Anda, seperti label kelas, Anda dapat membuat subkelas dari kelas dasar BuilderConfig. Ada dua cara untuk mengisi atribut dari kelas BuilderConfig atau subkelasnya:
Berikan daftar instance kelas BuilderConfig (atau subkelas) yang telah didefinisikan sebelumnya dalam atribut
DatasetBuilder.BUILDER_CONFIGS()dari datasets.Saat Anda memanggil load_dataset(), argumen kata kunci apa pun yang tidak spesifik untuk metode tersebut akan digunakan untuk mengatur atribut terkait dari kelas BuilderConfig. Hal ini akan menimpa atribut yang sudah didefinisikan sebelumnya jika konfigurasi tertentu dipilih.
Anda juga dapat mengatur DatasetBuilder.BUILDER_CONFIG_CLASS ke subclass kustom mana pun dari BuilderConfig.
DatasetBuilder
DatasetBuilder mengakses semua atribut di dalam BuilderConfig untuk membangun dataset yang sebenarnya.

Terdapat tiga metode utama di DatasetBuilder:
DatasetBuilder._info()bertanggung jawab untuk mendefinisikan atribut dataset. Saat Anda memanggildataset.info, 🤗 Datasets mengembalikan informasi yang disimpan di sini. Demikian pula, Features juga ditentukan di sini. Ingat, Features adalah seperti kerangka dari dataset. Ia menyediakan nama dan tipe dari setiap kolom.DatasetBuilder._split_generatormengunduh atau mengambil file data yang diminta, mengorganisasikannya menjadi split, dan mendefinisikan argumen spesifik untuk proses generasi. Metode ini memiliki DownloadManager yang mengunduh file atau mengambilnya dari sistem file lokal Anda. Di dalam DownloadManager, terdapat metode DownloadManager.download_and_extract() yang menerima kamus URL ke file data asli, dan mengunduh file yang diminta. Input yang diterima meliputi: satu URL atau path, atau daftar/kamus URL atau path. Semua jenis file terkompresi seperti arsip TAR, GZIP, dan ZIP akan diekstrak secara otomatis.Setelah file diunduh, SplitGenerator mengorganisasikannya menjadi split. SplitGenerator berisi nama split, serta argumen kata kunci apa pun yang diberikan ke metode
DatasetBuilder._generate_examples. Argumen kata kunci dapat bersifat spesifik untuk setiap split, dan biasanya setidaknya mencakup jalur lokal ke file data untuk setiap split.DatasetBuilder._generate_examplesmembaca dan mengurai file data untuk sebuah split. Kemudian, metode ini menghasilkan contoh dataset sesuai dengan format yang ditentukan dalamfeaturesdariDatasetBuilder._info(). Input dariDatasetBuilder._generate_examplessebenarnya adalahfilepathyang diberikan dalam argumen kata kunci dari metode terakhir.Dataset dibuat dengan generator Python, yang tidak memuat semua data ke dalam memori. Akibatnya, generator dapat menangani dataset berukuran besar. Namun, sebelum sampel yang dihasilkan ditulis ke file dataset di disk, sampel tersebut disimpan dalam buffer
ArrowWriter. Artinya, sampel yang dihasilkan ditulis per batch. Jika sampel dataset Anda mengonsumsi banyak memori (gambar atau video), pastikan untuk menentukan nilai rendah untuk atributDEFAULT_WRITER_BATCH_SIZEdi DatasetBuilder. Kami merekomendasikan agar ukuran tidak melebihi 200 MB.
Menjaga integritas
Untuk memastikan dataset lengkap, load_dataset() akan menjalankan serangkaian tes pada file yang diunduh untuk memastikan semuanya ada. Dengan cara ini, Anda tidak akan menghadapi kejutan ketika dataset yang diminta tidak dihasilkan seperti yang diharapkan. load_dataset() memverifikasi:
- Jumlah split dalam
DatasetDictyang dihasilkan. - Jumlah sampel di setiap split dari
DatasetDictyang dihasilkan. - Daftar file yang diunduh.
- Checksum SHA256 dari file yang diunduh (nonaktif secara default).
Jika dataset tidak lolos verifikasi, kemungkinan besar penulis dataset telah melakukan beberapa perubahan pada file data.
Dalam kasus ini, sebuah error akan dilempar untuk memberi tahu bahwa dataset telah berubah.
Untuk mengabaikan error tersebut, Anda perlu menentukan verification_mode="no_checks" di load_dataset().
Setiap kali Anda melihat error verifikasi, silakan buka diskusi atau pull request di tab “Community” dataset yang bersangkutan, sehingga pemeriksaan integritas untuk dataset tersebut dapat diperbarui.
Keamanan
Repositori dataset di Hub dipindai untuk malware, lihat informasi lebih lanjut di sini.
Update on GitHub