Datasets documentation

Veri setinizi tanıyın

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Veri setinizi tanıyın

İki tür veri seti nesnesi vardır: normal bir Dataset ve ✨ IterableDataset ✨. Dataset, satırlara hızlı rastgele erişim ve bellek eşlemesi (memory-mapping) sağlar; bu sayede büyük veri setlerini bile yüklemek, cihaz belleğinin nispeten küçük bir kısmını kullanır. Ancak diske veya belleğe sığmayacak kadar gerçekten, gerçekten büyük veri setleri için IterableDataset, veri setinin tamamen indirilmesini beklemeden erişmenize ve kullanmanıza olanak tanır!

Bu eğitimde bir Dataset ve bir IterableDataset nasıl yüklenir ve erişilir gösterilecektir.

Veri seti

Bir veri seti bölümü yüklediğinizde bir Dataset nesnesi alırsınız. Bir Dataset nesnesiyle birçok işlem yapabilirsiniz; bu nedenle, içinde saklanan verilerle nasıl etkileşime geçileceğini ve bunları nasıl manipüle edileceğini öğrenmek önemlidir.

Bu eğitimde rotten_tomatoes veri seti kullanılmaktadır, ancak istediğiniz herhangi bir veri setini yükleyip devam edebilirsiniz!

>>> from datasets import load_dataset

>>> dataset = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")

Dizinleme

Dataset veri sütunları içerir ve her sütun farklı bir veri türüne sahip olabilir. Örnekleri veri setinden erişmek için index (veya eksen etiketi) kullanılır. Örneğin, satıra göre indeksleme, veri setinden bir örneğin sözlüğünü döndürür:

# Get the first row in the dataset
>>> dataset[0]
{'label': 1,
 'text': 'the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'}

Veri setinin sonundan başlamak için - operatörünü kullanın:

# Get the last row in the dataset
>>> dataset[-1]
{'label': 0,
 'text': 'things really get weird , though not particularly scary : the movie is all portent and no content .'}

Sütun adıyla indeksleme, sütundaki tüm değerlerin listesini döndürür:

>>> dataset["text"]
['the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
 'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson\'s expanded vision of j . r . r . tolkien\'s middle-earth .',
 'effective but too-tepid biopic',
 ...,
 'things really get weird , though not particularly scary : the movie is all portent and no content .']

Satır ve sütun adlarındaki indekslemeyi birleştirerek belirli bir konumdaki değeri döndürebilirsiniz:

>>> dataset[0]["text"]
'the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .'

Dizinleme sırası önemli değildir. Sütun adıyla dizinleme, satır dizinleriyle normal şekilde dizinlenebilecek bir Column nesnesi döndürür:

>>> import time

>>> start_time = time.time()
>>> text = dataset[0]["text"]
>>> end_time = time.time()
>>> print(f"Elapsed time: {end_time - start_time:.4f} seconds")
Elapsed time: 0.0031 seconds

>>> start_time = time.time()
>>> text = dataset["text"][0]
>>> end_time = time.time()
>>> print(f"Elapsed time: {end_time - start_time:.4f} seconds")
Elapsed time: 0.0042 seconds

Dilimleme

Slicing, veri setinin bir dilimini - veya alt kümesini - döndürür ve bu, birden fazla satırı aynı anda görüntülemek için kullanışlıdır. Bir veri setini dilimlemek için, konum aralığını belirtmek üzere : operatörünü kullanın.

# Get the first three rows
>>> dataset[:3]
{'label': [1, 1, 1],
 'text': ['the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
  'the gorgeously elaborate continuation of " the lord of the rings " trilogy is so huge that a column of words cannot adequately describe co-writer/director peter jackson\'s expanded vision of j . r . r . tolkien\'s middle-earth .',
  'effective but too-tepid biopic']}

# Get rows between three and six
>>> dataset[3:6]
{'label': [1, 1, 1],
 'text': ['if you sometimes like to go to the movies to have fun , wasabi is a good place to start .',
  "emerges as something rare , an issue movie that's so honest and keenly observed that it doesn't feel like one .",
  'the film provides some great insight into the neurotic mindset of all comics -- even those who have reached the absolute top of the game .']}

IterableDataset

load_dataset() içinde streaming parametresini True olarak ayarladığınızda bir IterableDataset yüklenir:

>>> from datasets import load_dataset

>>> iterable_dataset = load_dataset("ethz/food101", split="train", streaming=True)
>>> for example in iterable_dataset:
...     print(example)
...     break
{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x512 at 0x7F0681F5C520>, 'label': 6}

Bir Dataset'ten mevcut bir IterableDataset oluşturabilirsiniz ancak veri seti yerel dosyalardan akış olarak alındığı için bu, streaming modundan daha hızlıdır:

>>> from datasets import load_dataset

>>> dataset = load_dataset("cornell-movie-review-data/rotten_tomatoes", split="train")
>>> iterable_dataset = dataset.to_iterable_dataset()

Bir IterableDataset, veri setini örnek örnek ilerleyerek iteratif olarak işler; bu sayede kullanmaya başlamadan önce tüm veri setinin indirilmesini beklemenize gerek kalmaz. Büyük boyutlu ve hemen kullanmak istediğiniz veri setleri için bunun ne kadar faydalı olduğunu hayal edebilirsiniz!

Dizinleme

Bir IterableDataset'in davranışı, standart bir Dataset'ten farklıdır. Bir IterableDataset'te örneklerin rastgele erişimine sahip olamazsınız. Bunun yerine, IterableDataset'ten bir sonraki öğeyi döndürmek için next(iter()) çağrısı yaparak veya bir for döngüsü kullanarak öğelerinin üzerinde gezinmeniz gerekir:

>>> next(iter(iterable_dataset))
{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x512 at 0x7F0681F59B50>,
 'label': 6}

>>> for example in iterable_dataset:
...     print(example)
...     break
{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x512 at 0x7F7479DE82B0>, 'label': 6}

Ancak bir IterableDataset, sütun değerleri için bir iterable döndüren sütun indekslemeyi destekler:

>>> next(iter(iterable_dataset["label"]))
6

Bir alt küme oluşturma

Belirli sayıda örnek içeren veri kümesinin bir alt kümesini IterableDataset.take() ile döndürebilirsiniz:

# Get first three examples
>>> list(iterable_dataset.take(3))
[{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x512 at 0x7F7479DEE9D0>,
  'label': 6},
 {'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=512x512 at 0x7F7479DE8190>,
  'label': 6},
 {'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=512x383 at 0x7F7479DE8310>,
  'label': 6}]

Ancak kesme'nin aksine, IterableDataset.take() yeni bir IterableDataset oluşturur.

Sonraki adımlar

Bu iki veri seti türü arasındaki farklar hakkında daha fazla bilgi edinmek mi istiyorsunuz? Onlar hakkında daha fazla bilgi için Dataset ve IterableDataset arasındaki farklar kavramsal rehberine göz atın.

Bu veri seti türleriyle daha yakından çalışmak için, bir Dataset'i nasıl ön işleyeceğinizi öğrenmek için Process kılavuzuna veya bir IterableDataset'i nasıl ön işleyeceğinizi öğrenmek için Stream kılavuzuna göz atın.

Update on GitHub