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

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

ستُظهر لك هذه الدليل كيفية تنظيم مستودع مجموعة البيانات عند رفعها. تُحمَّل مجموعات البيانات التي تتمتع ببنية مدعومة وصيغة ملفات (`.txt`، `.csv`، `.parquet`، `.jsonl`، `.mp3`، `.jpg`، `.zip` إلخ) تلقائيًا باستخدام [load_dataset()](/docs/datasets/v5.2.0/ar/package_reference/loading_methods#datasets.load_dataset)، وستتوفر لها عارض مجموعات بيانات في صفحة المجموعة على Hub.

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

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

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

```
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 الخاص بك:

```yaml
---
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
```

```yaml
---
configs:
- config_name: default
  data_files:
  - split: train
    path:
    - "data/abc.csv"
    - "data/def.csv"
  - split: test
    path: "holdout/ghi.csv"
---
```

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

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

> [!WARNING]
> لاحظ أن حقل `config_name` مطلوب حتى لو كان لديك تكوين واحد فقط.

## التكوينات

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

```
my_dataset_repository/
├── README.md
├── main_data.csv
└── additional_data.csv
```

```yaml
---
configs:
- config_name: main_data
  data_files: "main_data.csv"
- config_name: additional_data
  data_files: "additional_data.csv"
---
```

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

```python
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` الخاصة بك:

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

راجع [توثيق المُنشئين المحددين](./package_reference/builder_classes) لمعرفة ما هي معاملات التهيئة التي يمتلكونها.

> [!TIP]
> يمكنك ضبط تكوين افتراضي باستخدام `default: true`، على سبيل المثال يمكنك تشغيل `main_data = load_dataset("my_dataset_repository")` إذا قمت بضبط
>
> ```yaml
> - 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
```

