Классификация и регрессия текста
Обучить текстовую классификационную/регрессионную модель с помощью AutoTrain очень просто! Подготовьте данные в нужном формате, и всего несколькими щелчками мыши ваша современная модель будет готова к использованию в рабочей среде.
Имена задач конфигурационного файла:
- text_classification
- text-classification
- text_regression
- text-regression
Формат данных
Классификация текста/регрессия поддерживает наборы данных как в форматах CSV, так и в формате JSONL.
Формат CSV
Давайте разработаем модель для классификации настроений в обзоре фильма. Данные должны быть в следующем формате CSV:
text,target "this movie is great",positive "this movie is bad",negative . . .
Как вы можете видеть, в CSV-файле у нас есть два столбца. Один столбец - это текст, а другой - метка. Меткой может быть любая строка. В этом примере у нас есть две метки: положительная и отрицательная. Вы можете использовать столько меток, сколько захотите.
И если вы хотите обучить модель оценивать рецензию на фильм по шкале от 1 до 5 баллов. Данные могут быть следующими:
text,target "this movie is great",4.9 "this movie is bad",1.5 . . .
Формат JSONL
Вместо CSV вы также можете использовать формат JSONL. Формат JSONL должен быть следующим:
{"text": "this movie is great", "target": "positive"}
{"text": "this movie is bad", "target": "negative"}
.
.
.
и для регрессии:
{"text": "this movie is great", "target": 4.9}
{"text": "this movie is bad", "target": 1.5}
.
.
Столбец Отображение / Имена
В вашем наборе данных CSV должно быть два столбца: text и target. Если имена ваших столбцов отличаются от text и target, вы можете сопоставить столбец набора данных с именами столбцов AutoTrain.
Обучение
Локальное Обучение
Чтобы обучить текстовую классификационную/регрессионную модель локально, вы можете использовать команду autotrain --config config.yaml.
Вот пример файла config.yaml для обучения модели классификации текста:
task: text_classification # or text_regression
base_model: google-bert/bert-base-uncased
project_name: autotrain-bert-imdb-finetuned
log: tensorboard
backend: local
data:
path: stanfordnlp/imdb
train_split: train
valid_split: test
column_mapping:
text_column: text
target_column: label
params:
max_seq_length: 512
epochs: 3
batch_size: 4
lr: 2e-5
optimizer: adamw_torch
scheduler: linear
gradient_accumulation: 1
mixed_precision: fp16
hub:
username: ${HF_USERNAME}
token: ${HF_TOKEN}
push_to_hub: true
В этом примере мы обучаем модель классификации текста, используя модель google-bert/bert-base-uncased на основе набора данных IMDB. Мы используем набор данных stanfordnlp/imdb, который уже доступен на Hugging Face Hub. Мы обучаем модель в течение 3 периодов с размером пакета 4 и скоростью обучения 2e-5. Мы используем оптимизатор adamw_torch и линейный планировщик. Мы также используем смешанное прецизионное обучение с накоплением градиента, равным 1.
Если вы хотите использовать локальный набор данных CSV/JSONL, вы можете изменить раздел данных на:
data:
path: data/ # это должен быть путь к каталогу, содержащему действительные файлы train
train_split: train # это должен быть либо train.csv, либо train.json
valid_split: valid # это должен быть либо файл valid.csv, либо файл valid.json
column_mapping:
text_column: text # это должно быть название столбца, содержащего текст
target_column: label # это должно быть имя столбца, содержащего целевой объект
Чтобы обучить модель, выполните следующую команду:
$ autotrain --config config.yaml
Вы можете найти примеры конфигурационных файлов для классификации текста и регрессии здесь и здесь соответственно.
Тренировка на Hugging Face Spaces
Параметры для тренировки на Hugging Face Spaces такие же, как и для локального обучения. Если вы используете свой собственный набор данных, выберите “Local” в качестве источника набора данных и загрузите свой набор данных. На следующем скриншоте мы обучаем модель классификации текста, используя модель google-bert/bert-base-uncased на основе набора данных IMDB.

Для текстовой регрессии все, что вам нужно сделать, это выбрать “Text Regression” в качестве задачи, и все остальное останется прежним (кроме данных, конечно).
Параметры тренировки
Параметры обучения для классификации текста и регрессии одинаковы.
class autotrain.trainers.text_classification.params.TextClassificationParams
(
data_path: str = None,
model: str = 'bert-base-uncased',
lr: float = 5e-05,
epochs: int = 3,
max_seq_length: int = 128,
batch_size: int = 8,
warmup_ratio: float = 0.1,
gradient_accumulation: int = 1,
optimizer: str = 'adamw_torch',
scheduler: str = 'linear',
weight_decay: float = 0.0,
max_grad_norm: float = 1.0,
seed: int = 42,
train_split: str = 'train',
valid_split: typing.Optional[str] = None,
text_column: str = 'text',
target_column: str = 'target',
logging_steps: int = -1,
project_name: str = 'project-name',
auto_find_batch_size: bool = False,
mixed_precision: typing.Optional[str] = None,
save_total_limit: int = 1,
token: typing.Optional[str] = None,
push_to_hub: bool = False,
eval_strategy: str = 'epoch',
username: typing.Optional[str] = None,
log: str = 'none',
early_stopping_patience: int = 5,
early_stopping_threshold: float = 0.01
)
Parameters
- data_path (str) — Путь к набору данных.
- model (str) — Название используемой модели. По умолчанию используется “bert-base-uncased”.
- lr (float) — Скорость обучения. Значение по умолчанию 5e-5.
- epochs (int) — Количество периодов обучения. Значение по умолчанию 3.
- max_seq_length (int) — Максимальная длина последовательности. Значение по умолчанию 128.
- batch_size (int) — Размер обучающего пакета. Значение по умолчанию 8.
- warmup_ratio (float) — Пропорция прогрева. Значение по умолчанию 0.1.
- gradient_accumulation (int) — Количество шагов накопления градиента. Значение по умолчанию равно 1.
- optimizer (str) — Использовать оптимизатор. Значение по умолчанию - “adamw_torch”.
- scheduler (str) — Использовать планировщик. Значение по умолчанию “linear” (линейный).
- weight_decay (float) — Уменьшение веса. Значение по умолчанию равно 0.0.
- max_grad_norm (float) — Максимальная норма градиента. Значение по умолчанию 1.0.
- seed (int) — Случайное начальное число. Значение по умолчанию 42.
- train_split (str) — Название тренировочного блока. По умолчанию используется “train”.
- valid_split (Optional[str]) — Имя раздела проверки. Значение по умолчанию - None.
- text_column (str) — Имя текстового столбца в наборе данных. По умолчанию используется “text”.
- target_column (str) — Имя целевого столбца в наборе данных. Значение по умолчанию - “target”.
- logging_steps (int) — Количество шагов между регистрациями. По умолчанию -1.
- project_name (str) — Название проекта. По умолчанию используется “project-name”.
- auto_find_batch_size (bool) — Следует ли автоматически определять размер пакета. Значение по умолчанию False.
- mixed_precision (Optional[str]) — Настройка смешанной точности (fp16, bf16 или None). По умолчанию None.
- save_total_limit (int) — Общее количество сохраняемых контрольных точек. Значение по умолчанию -1.
- token (Optional[str]) — Токен для аутентификации на хабе. Значение по умолчанию - None.
- push_to_hub (bool) — Следует ли перемещать модель на хаб. Значение по умолчанию - False.
- eval_strategy (str) — Стратегия оценки. Значение по умолчанию - “epoch”.
- username (Optional[str]) — Имя пользователя Hugging Face. По умолчанию - None.
- log (str) — Метод ведения журнала для отслеживания эксперимента. Значение по умолчанию - “none”.
- early_stopping_patience (int) — Количество периодов без улучшений, по истечении которых обучение будет прекращено. Значение по умолчанию 5.
- early_stopping_threshold (float) — Пороговое значение для определения нового оптимального значения для продолжения тренировки. Значение по умолчанию равно 0.01.
TextClassificationParams - это класс конфигурации для обучающих параметров текстовой классификации.