# الإعداد اليدوي

ستُظهر لك هذه الدليل كيفية تكوين بنية مخصصة لمستودع مجموعة البيانات الخاصة بك. تُبرز [المجموعة المصاحبة من مجموعات البيانات الأمثلة](https://huggingface.co/collections/datasets-examples/manual-configuration-655e293cea26da0acab95b87) كل قسم من التوثيق.

يتميز مجموعة بيانات ذات بنية مدعومة و[صيغ ملفات](./datasets-adding#file-formats) تلقائيًا بمشغل مجموعات البيانات في صفحة المجموعة على Hub. يمكنك استخدام YAML لتعريف التقسيمات والفرعية ومعاملات الباني التي يستخدمها المشغل.

كما يمكن تحديد عدة مجموعات فرعية (تُسمى أيضاً "إعدادات") لنفس مجموعة البيانات (على سبيل المثال، إذا كانت مجموعة البيانات تحتوي على ملفات مستقلة متنوعة).

## التقسيمات

إذا كان لديك عدة ملفات وتريد تحديد الملف الذي ينتمي إلى كل تقسيم، يمكنك استخدام 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` مطلوب حتى لو كان لديك مجموعة فرعية واحدة فقط.

## تعدد المجموعات الفرعية

قد يحتوي مجموعة بياناتك على عدة مجموعات فرعية من البيانات ترغب في استخدامها بشكل منفصل. على سبيل المثال، لكل مجموعة فرعية قائمة منسدلة خاصة بها في عارض مجموعات البيانات على Hugging Face Hub.

في هذه الحالة يمكنك تحديد قائمة من المجموعات الفرعية داخل حقل `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"
---
```

لاحظ أن ترتيب المجموعات الفرعية المعروضة في العارض هو الترتيب الافتراضي أولاً، ثم الترتيب الأبجدي.

> [!TIP]
> يمكنك تعيين مجموعة فرعية افتراضية باستخدام `default: true`
>
> ```yaml
> - config_name: main_data
>   data_files: "main_data.csv"
>   default: true
> ```
>
> يُفيد هذا في تحديد المجموعة الفرعية التي يعرضها عارض البيانات (Dataset Viewer) أولاً، والمجموعة الفرعية التي تُحمّلها مكتبات البيانات افتراضيًا.

## مجلد البيانات

بدلاً من سرد الملفات الفردية باستخدام `data_files`، يمكنك استخدام `data_dir` للإشارة إلى مجلد. يتم تحديد الملفات داخل ذلك المجلد تلقائيًا بناءً على امتدادات الملفات. وهذا مفيد بشكل خاص عندما تكون بياناتك منظمة في مجلدات فرعية:

على سبيل المثال، في حالة كهذه، يمكنك ببساطة استخدام `data_dir` لأن بيانات كل مجموعة فرعية موجودة في مجلد خاص بها:

```
my_dataset_repository/
├── README.md
├── main/
│   ├── train.csv
│   └── test.csv
└── extra/
    ├── train.csv
    └── test.csv
```

```yaml
---
configs:
- config_name: main
  data_dir: "main"
- config_name: extra
  data_dir: "extra"
---
```

عند تعيين `data_dir`، يحلّ الباني الملفات نسبةً إلى ذلك المجلد. إذا احتوى المجلد على ملفات تطابق نمط تسمية التقسيمات الافتراضي (مثل `train.csv`، `test.csv`)، تُسند التقسيمات تلقائيًا دون الحاجة إلى تحديد `data_files` صراحةً.

يمكنك أيضًا دمج `data_dir` مع `data_files` للحصول على مزيد من التحكم:

```yaml
---
configs:
- config_name: default
  data_dir: "data"
  data_files:
  - split: train
    path: "training_*.csv"
  - split: test
    path: "eval_*.csv"
---
```

في هذه الحالة، تُحلّ أنماط `path` في `data_files` نسبةً إلى `data_dir`.

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

يمكن تمرير معاملات أخرى خاصة بالبناء عبر 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: ","
---
```

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

