Datasets documentation

Oluştur ve yükle

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Oluştur ve yükle

Neredeyse her derin öğrenme iş akışı bir veri seti yüklemekle başlar; bu da onu en önemli adımlardan biri yapar. 🤗 Datasets ile NLP görevinize başlamanıza yardımcı olacak 900'den fazla veri seti mevcuttur. İlk adımı atmak için yapmanız gereken tek şey load_dataset() fonksiyonunu çağırmaktır. Bu fonksiyon, kullandığınız her veri setini oluşturup yüklediği için her açıdan gerçek bir iş atıdır.

ELI5: load_dataset

Beş yaşındaymışım gibi açıklayalım.

Bir veri seti, şunları içeren bir dizindir:

  • Genel formatlarda (JSON, CSV, Parquet, metin vb.) bazı veri dosyaları
  • Veri seti hakkında belgelendirme içeren ve veri seti etiketlerini ve yapılandırmalarını tanımlamak için bir YAML başlığı içeren README.md adlı bir veri seti kartı

load_dataset() fonksiyonu, istenen veri setini yerel olarak veya Hugging Face Hub'dan alır. Hub, tüm Hugging Face veri setlerinin ve modellerinin depolandığı merkezi bir depodur.

Veri seti yalnızca veri dosyaları içeriyorsa, load_dataset() uzantılarına (json, csv, parquet, tsfile, txt vb.) dayanarak veri dosyalarının nasıl yükleneceğini otomatik olarak çıkarır. Arka planda, 🤗 Datasets, veri dosyalarının biçimine uygun bir DatasetBuilder kullanır. 🤗 Datasets'te her veri dosyası biçimi için bir builder bulunur:

Bir veri setini nasıl paylaşacağınızı öğrenmek için Share bölümünü okuyun.

🤗 Datasets, veri seti dosyalarını orijinal URL'den indirir, veri setini oluşturur ve sürücünüzde bir Arrow tablosunda önbelleğe alır. Daha önce veri setini indirdiyseniz 🤗 Datasets, tekrar indirme zahmetinden kurtulmanız için onu önbellekten yeniden yükler.

Veri kümelerinin nasıl oluşturulduğuna dair yüksek düzeyde bir anlayışa sahip olduğunuz için, tüm bunların nasıl işlediğinin temel mekanizmalarına daha yakından bakalım.

Veri seti oluşturma

Bir veri setini ilk kez yüklediğinizde, 🤗 Datasets ham veri dosyasını alır ve satırlardan ve tipli sütunlardan oluşan bir tablo haline getirir. Bir veri setini oluşturmaktan sorumlu olan iki ana sınıf şunlardır: BuilderConfig ve DatasetBuilder.

BuilderConfig

BuilderConfig, DatasetBuilder'in yapılandırma sınıfıdır. BuilderConfig, bir veri setine ilişkin aşağıdaki temel öznitelikleri içerir:

ÖznitelikAçıklama
nameVeri setinin kısa adı.
versionVeri seti sürüm tanımlayıcısı.
data_dirVeri dosyalarını içeren yerel bir klasörün yolunu saklar.
data_filesYerel veri dosyalarının yollarını saklar.
descriptionVeri setinin açıklaması.

Veri setinize sınıf etiketleri gibi ek öznitelikler eklemek istiyorsanız, temel BuilderConfig sınıfından türetme yapabilirsiniz. Bir BuilderConfig sınıfının veya türetilmiş sınıfının özniteliklerini doldurmanın iki yolu vardır:

  • Veri kümelerinde DatasetBuilder.BUILDER_CONFIGS() özniteliğinde, önceden tanımlanmış BuilderConfig sınıfı (veya alt sınıfı) örneklerinin bir listesini sağlayın.

  • load_dataset() çağrıldığında, yönteme özgü olmayan tüm anahtar kelime argümanları, BuilderConfig sınıfının ilgili özniteliklerini ayarlamak için kullanılır. Bu, belirli bir yapılandırma seçildiyse önceden tanımlanmış öznitelikleri geçersiz kılar.

Ayrıca DatasetBuilder.BUILDER_CONFIG_CLASS değerini BuilderConfig'in herhangi bir özel alt sınıfına ayarlayabilirsiniz.

DatasetBuilder

DatasetBuilder, gerçek veri setini oluşturmak için BuilderConfig içindeki tüm özniteliklere erişir.

DatasetBuilder içinde üç ana yöntem bulunur:

  1. DatasetBuilder._info(), veri seti özniteliklerini tanımlamaktan sorumludur. dataset.info çağrıldığında, 🤗 Datasets burada saklanan bilgileri döndürür. Benzer şekilde, Features da burada belirtilir. Hatırlatmak gerekir ki Features, veri setinin iskeleti gibidir. Her sütunun adını ve türünü sağlar.

  2. DatasetBuilder._split_generator, istenen veri dosyalarını indirir veya alır, bunları bölümlere (splits) ayırır ve üretim süreci için belirli argümanları tanımlar. Bu yöntem, dosyaları indirir veya yerel dosya sisteminizden alır bir DownloadManager içerir. DownloadManager içinde, orijinal veri dosyalarına giden URL'lerin sözlüğünü kabul eden ve istenen dosyaları indiren bir DownloadManager.download_and_extract() yöntemi bulunur. Kabul edilen girdiler şunları içerir: tek bir URL veya yol, ya da URL'lerin veya yolların bir listesi/sözlüğü. TAR, GZIP ve ZIP arşivleri gibi sıkıştırılmış dosya türleri otomatik olarak çıkarılır.

    Dosyalar indirildikten sonra SplitGenerator onları bölümlere ayırır. SplitGenerator, bölümün adını ve DatasetBuilder._generate_examples yöntemine sağlanan tüm anahtar kelime argümanlarını içerir. Anahtar kelime argümanları her bölüm için özel olabilir ve genellikle her bölümün veri dosyalarına yerel yolu en azından içerir.

  3. DatasetBuilder._generate_examples, bir bölme için veri dosyalarını okur ve ayrıştırır. Ardından DatasetBuilder._info() içindeki features tarafından belirtilen formata göre veri seti örneklerini üretir. DatasetBuilder._generate_examples girdisi, aslında son yöntemin anahtar kelime argümanlarında sağlanan filepath'tir.

    Veri seti, tüm veriyi belleğe yüklemeyen bir Python üreteciyle oluşturulur. Bu sayede üreteç, büyük veri setleriyle başa çıkabilir. Ancak, üretilen örnekler disktaki veri seti dosyasına yazılmadan önce ArrowWriter tamponunda saklanır. Bu, üretilen örneklerin parti (batch) bazında yazıldığı anlamına gelir. Veri seti örnekleriniz çok fazla bellek kullanıyorsa (görseller veya videolar), DatasetBuilder içindeki DEFAULT_WRITER_BATCH_SIZE özniteliği için düşük bir değer belirtmekten emin olun. 200 MB boyutunu aşmamanızı öneririz.

Bütünlüğün korunması

Bir veri setinin eksiksiz olduğundan emin olmak için load_dataset(), her şeyin yerinde olduğundan emin olmak amacıyla indirilen dosyalar üzerinde bir dizi test gerçekleştirir. Bu sayede, istediğiniz veri seti beklenildiği gibi oluşturulmadığında herhangi bir sürprizle karşılaşmazsınız. load_dataset() aşağıdakileri doğrular:

  • Oluşturulan DatasetDict içindeki bölme sayısı.
  • Oluşturulan DatasetDict'in her bölümündeki örnek sayısı.
  • İndirilen dosyaların listesi.
  • İndirilen dosyaların SHA256 kontrol toplamları (varsayılan olarak devre dışıdır).

Veri seti doğrulamalardan geçemezse, büyük olasılıkla veri seti yazarı veri dosyalarında bazı değişiklikler yapmıştır.

Bu durumda, veri setinin değiştiğine dair bir hata yükseltilir. Hatanın yok sayılması için load_dataset() içinde verification_mode="no_checks" belirtmek gerekir. Bir doğrulama hatası gördüğünüzde, ilgili veri setinin “Community” sekmesinde bir tartışma veya pull request açmaktan çekinmeyin; böylece o veri seti için bütünlük denetimleri güncellenir.

Güvenlik

Hub'daki veri seti depoları kötü amaçlı yazılım açısından taranır, daha fazla bilgi için buraya bakın.

Update on GitHub