Datasets documentation

Deponuzu yapılandırın

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Deponuzu yapılandırın

Veri setinizi barındırmak ve paylaşmak için Hugging Face Hub üzerinde bir veri seti deposu oluşturun ve veri dosyalarınızı yükleyin.

Bu kılavuz, veri setinizi yüklediğinizde veri seti deposunu nasıl yapılandıracağınızı gösterir. Desteklenen bir yapıya ve dosya biçimine (.txt, .csv, .parquet, .jsonl, .mp3, .jpg, .zip vb.) sahip bir veri seti, load_dataset() ile otomatik olarak yüklenir ve Hub’daki veri seti sayfasında bir veri seti görüntüleyicisi bulunur.

Ana kullanım senaryosu

En basit veri seti yapısı iki dosyadan oluşur: train.csv ve test.csv (bu, desteklenen herhangi bir dosya biçimiyle çalışır).

Deponuz ayrıca, veri seti sayfanızda görüntülenen veri seti kartı olan bir README.md dosyası da içerecektir.

my_dataset_repository/
├── README.md
├── train.csv
└── test.csv

Bu basit durumda, iki bölüme sahip bir veri seti elde edersiniz: train (train.csv dosyasındaki örnekleri içeren) ve test (test.csv dosyasındaki örnekleri içeren).

Bölümlerinizi ve alt kümelerinizi YAML'de tanımlayın

Bölümler

Birden fazla dosyanız varsa ve hangi dosyanın hangi bölüme gideceğini tanımlamak istiyorsanız, README.md dosyanızın başındaki YAML configs alanını kullanabilirsiniz.

Örneğin, şuna benzer bir repoya sahip olduğunuzu varsayalım:

my_dataset_repository/
├── README.md
├── data.csv
└── holdout.csv

README.md dosyasının başındaki YAML bloğuna configs alanını ekleyerek bölümlerinizi tanımlayabilirsiniz:

---
configs:
- config_name: default
  data_files:
  - split: train
    path: "data.csv"
  - split: test
    path: "holdout.csv"
---

Her bölme için bir yol listesi kullanarak birden fazla dosya seçebilirsiniz:

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"
---

Veya glob desenlerini kullanarak ihtiyaç duyduğunuz tüm dosyaları otomatik olarak listeleyebilirsiniz:

---
configs:
- config_name: default
  data_files:
  - split: train
    path: "data/*.csv"
  - split: test
    path: "holdout/*.csv"
---

Tek bir yapılandırmanız olsa bile config_name alanının zorunlu olduğunu unutmayın.

Yapılandırmalar

Veri setiniz, ayrı ayrı yüklemek istediğiniz birkaç veri alt kümesi içerebilir. Bu durumda, YAML içindeki configs alanının içinde bir yapılandırma listesi tanımlayabilirsiniz:

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"
---

Her yapılandırma, Hugging Face Hub üzerinde ayrı olarak gösterilir ve adının ikinci parametre olarak geçirilmesiyle yüklenebilir:

from datasets import load_dataset

main_data = load_dataset("my_dataset_repository", "main_data")
additional_data = load_dataset("my_dataset_repository", "additional_data")

Oluşturucu parametreleri

Sadece data_files değil, diğer yapılandırıcıya özgü parametreler de YAML üzerinden geçirilebilir; bu da özel kod gerektirmeden verilerin nasıl yükleneceği konusunda daha fazla esneklik sağlar. Örneğin, csv dosyalarınızı yüklemek için hangi yapılandırmada hangi ayırıcının kullanılacağını tanımlayın:

---
configs:
- config_name: tab
  data_files: "main_data.csv"
  sep: "\t"
- config_name: comma
  data_files: "additional_data.csv"
  sep: ","
---

Hangi yapılandırma parametrelerine sahip olduklarını görmek için belirli oluşturucuların belgelerine başvurun.

default: true kullanarak varsayılan bir yapılandırma ayarlayabilirsiniz; örneğin, bunu ayarlarsanız main_data = load_dataset("my_dataset_repository") çalıştırabilirsiniz

- config_name: main_data
  data_files: "main_data.csv"
  default: true

Otomatik bölümlerin algılanması

YAML sağlanmazsa, 🤗 Datasets, veri seti bölümlerini otomatik olarak çıkarabilmek için veri seti deposunda belirli kalıpları arar. Kalıpların bir sırası vardır; özel dosya adı bölme biçimiyle başlar ve hiçbir kalıp bulunamazsa tüm dosyaları tek bir bölüm olarak ele alır.

Dizin adı

Veri dosyalarınız, her bir dizinde ilgili bölüme ait veri dosyalarını içeren train, test ve validation adlı farklı dizinlere de yerleştirilebilir:

my_dataset_repository/
├── README.md
└── data/
    ├── train/
    │   └── bees.csv
    ├── test/
    │   └── more_bees.csv
    └── validation/
        └── even_more_bees.csv

Dosya adları bölünmeleri

Geleneksel olmayan bölümleriniz yoksa, bölüm adını veri dosyasının herhangi bir yerine yerleştirebilir ve otomatik olarak çıkarılabilir. Tek kural, bölüm adının test-file.csv gibi, testfile.csv yerine, alt çizgi, tire, boşluk, nokta ve rakamlar gibi kelime dışı karakterlerle sınırlandırılmasıdır.

Örneğin, aşağıdaki dosya adlarının tümü kabul edilebilir:

  • eğitim bölümü: train.csv, my_train_file.csv, train1.csv
  • doğrulama bölmesi: validation.csv, my_validation_file.csv, validation1.csv
  • test bölünmesi: test.csv, my_test_file.csv, test1.csv

İşte tüm dosyaların data adlı bir dizine yerleştirildiği bir örnek:

my_dataset_repository/
├── README.md
└── data/
    ├── train.csv
    ├── test.csv
    └── validation.csv

Özel dosya adı bölme

Veri seti bölümleriniz train, test veya validation dışında özel isimlere sahipse, veri dosyalarınızı data/<split_name>-xxxxx-of-xxxxx.csv gibi adlandırabilirsiniz.

Üç bölümlü bir örnek: train, test ve 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.csv

Tek bölünme

🤗 Datasets yukarıdaki desenlerden hiçbirini bulamazsa, tüm dosyaları tek bir train split olarak ele alır. Veri seti bölümleriniz beklenildiği gibi yüklenmiyorsa, bunun nedeni hatalı bir desen olabilir.

Ad anahtar kelimelerini böl

Split'leri adlandırmak için birkaç yol vardır. Doğrulama split'leri bazen “dev” olarak adlandırılır ve test split'leri “eval” olarak anılabilir. Bu diğer split adları da desteklenir ve aşağıdaki anahtar kelimeler eşdeğerdir:

  • eğitim, eğitim
  • validation, valid, val, dev
  • test, testing, eval, evaluation

Aşağıdaki yapı geçerli bir depodur:

my_dataset_repository/
├── README.md
└── data/
    ├── training.csv
    ├── eval.csv
    └── valid.csv

Bölüm başına birden çok dosya

Eğer bölümlerinizden biri birden fazla dosyadan oluşuyorsa, 🤗 Datasets yine de dosya adından bunun eğitim, doğrulama ve test bölümü olup olmadığını çıkarabilir. Örneğin, eğitim ve test bölümleriniz birden fazla dosyaya yayılmışsa:

my_dataset_repository/
├── README.md
├── train_0.csv
├── train_1.csv
├── train_2.csv
├── train_3.csv
├── test_0.csv
└── test_1.csv

train kümenizdeki tüm dosyaların adlarında train ifadesi olduğundan emin olun (test ve doğrulama için de aynı şekilde). Dosya adında train için bir önek veya sonek ekleseniz bile (örneğin my_train_file_00001.csv), 🤗 Datasets uygun bölünmeyi yine de çıkarabilir.

Kolaylık olması için veri dosyalarınızı farklı dizinlere de yerleştirebilirsiniz. Bu durumda, bölme adı dizin adından çıkarılır.

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
Update on GitHub