Datasets documentation
تنظيم مستودعك
تنظيم مستودعك
للاستضافة ومشاركة مجموعة بياناتك، أنشئ مستودع مجموعة بيانات على 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