Datasets documentation

إنشاء مجموعة بيانات

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

إنشاء مجموعة بيانات

في بعض الأحيان، قد تحتاج إلى إنشاء مجموعة بيانات إذا كنت تعمل ببياناتك الخاصة. إن إنشاء مجموعة بيانات باستخدام 🤗 Datasets يمنح مجموعتك البيانات جميع مزايا المكتبة: التحميل والمعالجة السريعة، بث مجموعات البيانات الضخمة، تعيين الذاكرة، والمزيد. يمكنك إنشاء مجموعة بيانات بسهولة وسرعة باستخدام أساليب 🤗 Datasets منخفضة الكود، مما يقلل الوقت اللازم لبدء تدريب نموذج. في كثير من الحالات، الأمر سهل إلى حد السحب والإفلات لملفات بياناتك في مستودع مجموعة بيانات على Hub.

في هذا الشرح التعليمي، ستتعلم كيفية استخدام طرق 🤗 Datasets منخفضة الكود لإنشاء مجموعات بيانات من بياناتك الخاصة.

ملاحظة

إذا كنت ترغب في معرفة كيفية تحميل مجموعات البيانات الموجودة، أو كيفية تحميل الملفات المحلية والبعيدة (CSV، JSON، Parquet، إلخ)، فراجع دليل التحميل.

يتناول هذا الشرح:

  • منشئات مبنية على المجلدات لإنشاء مجموعة بيانات صور أو صوت بسرعة
  • طرق from_ لإنشاء مجموعات بيانات من كائنات بايثون المحلية

منشئات مبنية على الملفات

🤗 يدعم Datasets العديد من الصيغ الشائعة مثل csv وjson/jsonl وparquet وtxt.

على سبيل المثال، يمكنه قراءة مجموعة بيانات تتكون من ملف CSV واحد أو عدة ملفات (في هذه الحالة، مرّر ملفات CSV الخاصة بك كقائمة):

>>> from datasets import load_dataset
>>> dataset = load_dataset("csv", data_files="my_file.csv")

للحصول على قائمة الصيغ المدعومة وأمثلة الأكواد، اتبع هذا الدليل هنا.

المُنشِئون المعتمدون على المجلدات

يوجد منشئان قائمان على المجلدات، هما ImageFolder وAudioFolder. هذه طرق منخفضة الكود لإنشاء مجموعة بيانات سريعة للصور أو الكلام والصوت تحتوي على آلاف الأمثلة. وهي مثالية للنمذجة الأولية السريعة لنماذج الرؤية الحاسوبية ونماذج الكلام قبل التوسع إلى مجموعة بيانات أكبر. تأخذ المنشئات القائمة على المجلدات بياناتك وتولّد تلقائيًا خصائص مجموعة البيانات، وقسماتها، وتسمياتها. تحت الغطاء:

  • ImageFolder يستخدم ميزة Image لفك ترميز ملف صورة. يتم دعم العديد من صيغ امتدادات الصور، مثل jpg و png، ولكن يتم دعم صيغ أخرى أيضًا. يمكنك الاطلاع على القائمة الكاملة بامتدادات الصور المدعومة.
  • AudioFolder يستخدم ميزة Audio لفك ترميز ملف صوتي. يتم دعم الامتدادات مثل wav وmp3 وحتى mp4، ويمكنك الاطلاع على القائمة الكاملة بالامتدادات الصوتية المدعومة. يتم فك الترميز عبر ffmpeg.

تُستنتج تقسيمات مجموعة البيانات من بنية المستودع، وتُستنتج أسماء التسميات تلقائيًا من اسم المجلد.

على سبيل المثال، إذا كان مجموعة بيانات الصور الخاصة بك (وهو الأمر نفسه بالنسبة لمجموعة بيانات الصوت) مخزّنة على النحو التالي:

pokemon/train/grass/bulbasaur.png
pokemon/train/fire/charmander.png
pokemon/train/water/squirtle.png

pokemon/test/grass/ivysaur.png
pokemon/test/fire/charmeleon.png
pokemon/test/water/wartortle.png

ثم هذه هي الطريقة التي يولّد بها المُنشئ القائم على المجلدات مثالاً:

أنشئ مجموعة بيانات الصور عن طريق تحديد imagefolder في load_dataset():

>>> from datasets import load_dataset

>>> dataset = load_dataset("imagefolder", data_dir="/path/to/pokemon")

يتم إنشاء مجموعة بيانات صوتية بالطريقة نفسها، باستثناء تحديد audiofolder في load_dataset() بدلاً من ذلك:

>>> from datasets import load_dataset

>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")

يمكن تضمين أي معلومات إضافية عن مجموعة البيانات الخاصة بك، مثل التسميات النصية أو النصوص المنقولة، من خلال ملف metadata.csv في المجلد الذي يحتوي على مجموعة البيانات. يجب أن يحتوي ملف البيانات الوصفية على عمود file_name يربط ملف الصورة أو الصوت ببياناته الوصفية المقابلة:

file_name, text
bulbasaur.png, There is a plant seed on its back right from the day this Pokémon is born.
charmander.png, It has a preference for hot things.
squirtle.png, When it retracts its long neck into its shell, it squirts out water with vigorous force.

للتعرف على المزيد حول كل من هذه الأدوات المبنية على المجلدات، راجع أدلة ImageFolder أو AudioFolder أو MeshFolder.

من قواميس بايثون

يمكنك أيضًا إنشاء مجموعة بيانات من البيانات الموجودة في قواميس بايثون. هناك طريقتان لإنشاء مجموعة بيانات باستخدام طرق from_:

  • يُعدّ from_generator() الطريقة الأكثر كفاءةً في استخدام الذاكرة لإنشاء مجموعة بيانات من generator بسبب السلوك التكراري الخاص بالمولّدات. وهذا مفيد بشكل خاص عند العمل مع مجموعة بيانات ضخمة قد لا تتسع في الذاكرة، حيث يتم توليد المجموعة على القرص تدريجياً ثم تُخضع لعملية memory-mapping.

    >>> from datasets import Dataset
    >>> def gen():
    ...     yield {"pokemon": "bulbasaur", "type": "grass"}
    ...     yield {"pokemon": "squirtle", "type": "water"}
    >>> ds = Dataset.from_generator(gen)
    >>> ds[0]
    {"pokemon": "bulbasaur", "type": "grass"}

    يتطلب IterableDataset القائم على المولّدات أن يتم التكرار عليه باستخدام حلقة for على سبيل المثال:

    >>> from datasets import IterableDataset
    >>> ds = IterableDataset.from_generator(gen)
    >>> for example in ds:
    ...     print(example)
    {"pokemon": "bulbasaur", "type": "grass"}
    {"pokemon": "squirtle", "type": "water"}
  • تُعدّ طريقة from_dict() طريقة مباشرة لإنشاء مجموعة بيانات من قاموس:

    >>> from datasets import Dataset
    >>> ds = Dataset.from_dict({"pokemon": ["bulbasaur", "squirtle"], "type": ["grass", "water"]})
    >>> ds[0]
    {"pokemon": "bulbasaur", "type": "grass"}

    لإنشاء مجموعة بيانات للصور أو الصوت، اربط طريقة cast_column() مع from_dict() وحدد العمود ونوع الميزة. على سبيل المثال، لإنشاء مجموعة بيانات للصوت:

    >>> audio_dataset = Dataset.from_dict({"audio": ["path/to/audio_1", ..., "path/to/audio_n"]}).cast_column("audio", Audio())

الآن وقد أصبحتَ تعرف كيفية إنشاء مجموعة بيانات، فكّر في مشاركتها على Hub حتى يستفيد المجتمع أيضًا من عملك! انتقل إلى القسم التالي لمعرفة كيفية مشاركة مجموعة بياناتك.

Update on GitHub