# Ручная настройка

В этом руководстве показано, как настроить собственную структуру для репозитория набора данных. [Сопутствующая коллекция примеров наборов данных](https://huggingface.co/collections/datasets-examples/manual-configuration-655e293cea26da0acab95b87) демонстрирует каждый раздел документации.

Набор данных с поддерживаемой структурой и [форматами файлов](./datasets-adding#file-formats) автоматически получает Dataset Viewer на своей странице в Hub. С помощью YAML можно определить сплиты, подмножества и параметры билдера, которые используются в Viewer.

Также можно определить несколько подмножеств (также называемых «конфигурациями») для одного и того же набора данных (например, если набор данных содержит различные независимые файлы).

## Разделения

Если у вас несколько файлов и вы хотите определить, какой файл попадает в какой сплит, вы можете использовать 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` является обязательным, даже если у вас есть только один поднабор.

## Несколько подмножеств

Ваш набор данных может содержать несколько подмножеств, которые вы хотите использовать по отдельности. Например, у каждого подмножества есть собственный выпадающий список в Dataset Viewer на 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`.

## Параметры конструктора

Не только `data_files`, но и другие параметры, специфичные для конкретного билдера, можно передать через YAML, что позволяет гибче настраивать загрузку данных без необходимости писать собственный код. Например, можно указать, какой разделитель использовать в каждом подмножестве при загрузке файлов `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), чтобы узнать, какие параметры они поддерживают.

