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، يتوفر أكثر من 900 مجموعة بيانات لمساعدتك على البدء في مهمة معالجة اللغة الطبيعية الخاصة بك. كل ما عليك فعله هو استدعاء load_dataset() لإجراء خطوتك الأولى. هذه الدالة حصان عمل حقيقي بكل معنى الكلمة، لأنها تبني وتحمّل كل مجموعة بيانات تستخدمها.

ELI5: تحميل مجموعة البيانات

لنبدأ بشرح مبسّط على طريقة «اشرح لي وكأنّني في الخامسة من عمري».

مجموعة البيانات هي مجلد يحتوي على:

  • بعض ملفات البيانات بتنسيقات عامة (JSON، CSV، Parquet، نص، إلخ)
  • بطاقة مجموعة بيانات باسم README.md تحتوي على توثيق حول مجموعة البيانات بالإضافة إلى ترويسة YAML لتحديد وسوم وإعدادات مجموعات البيانات

تجلب الدالة load_dataset() مجموعة البيانات المطلوبة محليًا أو من Hugging Face Hub. يُعد Hub مستودعًا مركزيًا تُخزَّن فيه جميع مجموعات البيانات والنماذج الخاصة بـ Hugging Face.

إذا كانت مجموعة البيانات تحتوي على ملفات بيانات فقط، فإن load_dataset() يستنتج تلقائيًا كيفية تحميل ملفات البيانات من امتداداتها (json، csv، parquet، tsfile، txt، إلخ). في الخلفية، سيقوم 🤗 Datasets باستخدام DatasetBuilder مناسب بناءً على تنسيق ملفات البيانات. يوجد منشئ واحد لكل تنسيق ملف بيانات في 🤗 Datasets:

اقرأ قسم Share لمعرفة المزيد حول كيفية مشاركة مجموعة بيانات.

🤗 Datasets يقوم بتنزيل ملفات مجموعة البيانات من الرابط الأصلي، ثم يولّد مجموعة البيانات ويخزّنها مؤقتًا في جدول Arrow على قرصك. إذا كنت قد نزّلت مجموعة البيانات من قبل، فسيقوم 🤗 Datasets بإعادة تحميلها من التخزين المؤقت لتوفير عنك عناء تنزيلها مرة أخرى.

الآن وقد أصبحت لديك فهم عام لكيفية بناء مجموعات البيانات، دعونا ننظر عن كثب في التفاصيل التقنية لكيفية عمل كل هذا.

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

عند تحميل مجموعة بيانات لأول مرة، يقوم 🤗 Datasets بأخذ ملف البيانات الخام وبناءه في جدول من الصفوف والأعمدة المُعرَّفة الأنواع. هناك صفحتان رئيسيتان مسؤولتان عن بناء مجموعة البيانات: BuilderConfig و DatasetBuilder.

BuilderConfig

BuilderConfig هي فئة التهيئة الخاصة بـ DatasetBuilder. تحتوي BuilderConfig على السمات الأساسية التالية المتعلقة بمجموعة البيانات:

الخاصيةالوصف
nameالاسم المختصر للمجموعة.
versionمعرّف إصدار مجموعة البيانات.
data_dirيخزن المسار إلى مجلد محلي يحتوي على ملفات البيانات.
data_filesيخزّن المسارات إلى ملفات البيانات المحلية.
descriptionوصف مجموعة البيانات.

إذا كنت ترغب في إضافة سمات إضافية إلى مجموعة البيانات الخاصة بك، مثل تسميات الفئات، يمكنك إنشاء فئة فرعية من الفئة الأساسية BuilderConfig. هناك طريقتان لتعبئة سمات فئة BuilderConfig أو فئة فرعية منها:

  • قدّم قائمةً بمحادثات BuilderConfig (أو فئة فرعية منها) محددة مسبقًا في خاصية DatasetBuilder.BUILDER_CONFIGS() في مجموعات البيانات.

  • عند استدعاء load_dataset()، تُستخدم أي معاملات كلمات مفتاحية ليست محددة للطريقة لتعيين السمات المرتبطة لفئة BuilderConfig. وسيؤدي ذلك إلى تجاوز السمات المحددة مسبقاً إذا تم اختيار تكوين معين.

يمكنك أيضًا تعيين DatasetBuilder.BUILDER_CONFIG_CLASS إلى أي فئة فرعية مخصصة من BuilderConfig.

DatasetBuilder

يتصل DatasetBuilder بجميع السمات داخل BuilderConfig لبناء مجموعة البيانات الفعلية.

توجد ثلاث طرق رئيسية في DatasetBuilder:

  1. DatasetBuilder._info() مسؤول عن تحديد سمات مجموعة البيانات. عند استدعاء dataset.info، تُرجع 🤗 Datasets المعلومات المخزنة هنا. وبالمثل، يتم تحديد Features هنا أيضًا. تذكّر، Features تشبه هيكل مجموعة البيانات. فهي توفر أسماء وأنواع كل عمود.

  2. DatasetBuilder._split_generator يقوم بتنزيل أو استرجاع ملفات البيانات المطلوبة، وتنظيمها إلى تقسيمات، وتعريف معاملات محددة لعملية التوليد. يحتوي هذا الأسلوب على DownloadManager يقوم بتنزيل الملفات أو جلبها من نظام الملفات المحلي لديك. داخل DownloadManager، يوجد أسلوب DownloadManager.download_and_extract() يقبل قاموسًا من عناوين URL لملفات البيانات الأصلية، وينزّل الملفات المطلوبة. تشمل المدخلات المقبولة: عنوان URL أو مسار واحد، أو قائمة/قاموس من عناوين URL أو مسارات. سيتم فك ضغط أي ملفات مضغوطة مثل أرشيفات TAR وGZIP وZIP تلقائيًا.

    بمجرد تنزيل الملفات، يقوم SplitGenerator بتنظيمها إلى تقسيمات. يحتوي SplitGenerator على اسم التقسيم، وأي حُجج بكلمات مفتاحية تُمرَّر إلى طريقة DatasetBuilder._generate_examples. يمكن أن تكون الحُجج بكلمات مفتاحية خاصة بكل تقسيم، وعادةً ما تتضمن على الأقل المسار المحلي لملفات البيانات لكل تقسيم.

  3. تقرأ DatasetBuilder._generate_examples ملفات البيانات الخاصة بقسم (split) وتحللها. ثم تُنتج أمثلةً للبيانات (dataset examples) وفقًا للتنسيق المحدد في features من DatasetBuilder._info(). مدخل DatasetBuilder._generate_examples هو في الواقع filepath المُقدَّم في معاملات الكلمات المفتاحية (keyword arguments) للطريقة الأخيرة.

    يتم توليد مجموعة البيانات باستخدام مولّد بلغة بايثون، لا يُحمّل جميع البيانات في الذاكرة. ونتيجةً لذلك، يمكن للمولّد التعامل مع مجموعات بيانات كبيرة. ومع ذلك، قبل أن تُكتب العينات المولّدة إلى ملف مجموعة البيانات على القرص، تُخزَّن في مخزن مؤقت ArrowWriter. وهذا يعني أن العينات المولّدة تُكتب على دفعات. إذا كانت عينات مجموعة البيانات تستهلك مساحة ذاكرة كبيرة (صور أو مقاطع فيديو)، فتأكد من تحديد قيمة منخفضة لخاصية DEFAULT_WRITER_BATCH_SIZE في DatasetBuilder. ننصح بعدم تجاوز حجم 200 ميغابايت.

الحفاظ على السلامة

لضمان اكتمال مجموعة البيانات، سيقوم load_dataset() بإجراء سلسلة من الاختبارات على الملفات التي تم تنزيلها للتأكد من وجود كل شيء. وبهذه الطريقة، لن تواجه أي مفاجآت عندما لا يتم توليد مجموعة البيانات المطلوبة كما هو متوقع. يتحقق load_dataset() مما يلي:

  • عدد التقسيمات في DatasetDict المولّد.
  • عدد العينات في كل قسم من DatasetDict المولّد.
  • قائمة الملفات التي تم تنزيلها.
  • ملخصات SHA256 للملفات التي تم تنزيلها (معطلة افتراضيًا).

إذا لم يجتز مجموعة البيانات عمليات التحقق، فمن المرجح أن قام مؤلف مجموعة البيانات بإجراء بعض التغييرات في ملفات البيانات.

في هذه الحالة، يُستدعى خطأ للتنبيه إلى أن مجموعة البيانات قد تغيّرت. لتجاهل الخطأ، يجب تحديد verification_mode="no_checks" في load_dataset(). عندما ترى خطأً في التحقق، لا تتردد في فتح نقاش أو طلب سحب في تبويب "المجتمع" الخاص بمجموعة البيانات المعنية، حتى يتم تحديث فحوصات السلامة لتلك المجموعة.

الأمان

تُفحص مستودعات مجموعات البيانات على Hub بحثًا عن البرمجيات الخبيثة، لمزيد من المعلومات راجع هنا.

Update on GitHub