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

تنظيم مستودعك

للاستضافة ومشاركة مجموعة بياناتك، أنشئ مستودع مجموعة بيانات على Hugging Face Hub وارفع ملفات بياناتك.

ستُظهر لك هذه الدليل كيفية تنظيم مستودع مجموعة البيانات عند رفعها. تُحمَّل مجموعة البيانات ذات البنية الصالحة وصيغة الملفات المدعومة (.txt، .csv، .parquet، .jsonl، .mp3، .jpg، .zip إلخ) تلقائيًا باستخدام load_dataset()، وستتوفر لها عارض مجموعات بيانات في صفحة المجموعة على Hub.

أهم حالة استخدام

أبسط بنية للبيانات تتكون من ملفين: train.csv وtest.csv (يعمل هذا مع أي صيغة ملفات مدعومة).

ستحتوي مستودعك أيضًا على ملف README.md، وهو بطاقة مجموعة البيانات المعروضة في صفحة مجموعة بياناتك.

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

في هذه الحالة البسيطة، ستحصل على مجموعة بيانات تحتوي على قسمين: train (تحتوي على أمثلة من train.csv) وtest (تحتوي على أمثلة من test.csv).

حدد تقسيماتك ومجموعاتك الفرعية في YAML

التقسيمات

إذا كان لديك ملفات متعددة وتريد تحديد الملف الذي ينتمي إلى كل تقسيم، يمكنك استخدام حقل configs بصيغة YAML في أعلى ملف README.md الخاص بك.

على سبيل المثال، عند وجود مستودع كهذا:

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

يمكنك تحديد تقسيماتك عن طريق إضافة حقل configs في كتلة YAML في أعلى ملف README.md الخاص بك:

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

يمكنك تحديد ملفات متعددة لكل تقسيم باستخدام قائمة من المسارات:

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

أو يمكنك استخدام أنماط glob لتجميع جميع الملفات التي تحتاجها تلقائيًا:

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

لاحظ أن حقل config_name مطلوب حتى لو كان لديك تكوين واحد فقط.

التكوينات

قد يحتوي مجموعة بياناتك على عدة مجموعات فرعية من البيانات ترغب في تحميلها بشكل منفصل. في هذه الحالة، يمكنك تحديد قائمة من التكوينات داخل حقل configs في ملف YAML:

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

تُعرض كل تهيئة بشكل منفصل على Hugging Face Hub، ويمكن تحميلها عن طريق تمرير اسمها كعامل ثانٍ:

from datasets import load_dataset

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

معاملات المُنشئ

يمكن تمرير معاملات أخرى خاصة بالبناء عبر YAML إلى جانب data_files، مما يتيح مرونة أكبر في كيفية تحميل البيانات دون الحاجة إلى أي مخصصات مخصصة. على سبيل المثال، حدد الفاصل الذي يجب استخدامه في أي تكوين لتحميل ملفات csv الخاصة بك:

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

راجع توثيق المُنشئين المحددين لمعرفة ما هي معاملات التهيئة التي يمتلكونها.

يمكنك ضبط تكوين افتراضي باستخدام default: true، على سبيل المثال يمكنك تشغيل main_data = load_dataset("my_dataset_repository") إذا قمت بضبط

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

كشف التقسيمات تلقائيًا

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

اسم المجلد

يمكن أيضًا وضع ملفات البيانات الخاصة بك في مجلدات مختلفة تُسمى train وtest وvalidation، حيث يحتوي كل مجلد على ملفات البيانات الخاصة بتقسيمه:

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

تقسيمات اسم الملف

إذا لم تكن لديك أي تقسيمات غير تقليدية، فيمكنك وضع اسم التقسيم في أي مكان داخل ملف البيانات وسيتم استنتاجه تلقائيًا. القاعدة الوحيدة هي أن اسم التقسيم يجب أن يكون مفصولًا بأحرف غير كلمات، مثل test-file.csv على سبيل المثال بدلاً من testfile.csv. تشمل الفواصل المدعومة الشرطة السفلية، والشرطة، والمسافات، والنقاط، والأرقام.

على سبيل المثال، جميع أسماء الملفات التالية مقبولة:

  • تقسيم التدريب: train.csv، my_train_file.csv، train1.csv
  • مجموعة التحقق: validation.csv, my_validation_file.csv, validation1.csv
  • مجموعة الاختبار: test.csv، my_test_file.csv، test1.csv

فيما يلي مثال يتم فيه وضع جميع الملفات في مجلد يُسمى data:

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

تقسيم اسم الملف المخصص

إذا كانت تقسيمات مجموعة بياناتك تحمل أسماء مخصصة غير train أو test أو validation، فيمكنك تسمية ملفات البيانات الخاصة بك على النحو التالي: data/<split_name>-xxxxx-of-xxxxx.csv.

فيما يلي مثال يتضمن ثلاثة أقسام، train، وtest، و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

تقسيم واحد

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

كلمات مفتاحية لأسماء التقسيم

توجد عدة طرق لتسمية التقسيمات. يُطلق على تقسيم التحقق أحيانًا اسم “dev”، وقد يُشار إلى تقسيم الاختبار باسم “eval”. تُؤيَّد أسماء التقسيمات الأخرى أيضًا، والكلمات المفتاحية التالية مكافئة:

  • التدريب، التدريب
  • التحقق، صالح، val، dev
  • test, testing, eval, evaluation

البنية أدناه مستودع صالح:

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

ملفات متعددة لكل تقسيم

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

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

تأكد من أن جميع ملفات مجموعة train تحتوي على train في أسمائها (وكذلك الأمر بالنسبة لاختبار والتحقق). حتى إذا أضفت بادئة أو لاحقة إلى train في اسم الملف (مثل my_train_file_00001.csv على سبيل المثال)، فلا يزال بإمكان 🤗 Datasets استنتاج الجزء المناسب.

للسهولة، يمكنك أيضًا وضع ملفات البيانات في مجلدات مختلفة. في هذه الحالة، يُستنتج اسم التقسيم من اسم المجلد.

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