Классификация токенов - это задача классификации каждого токена в определенной последовательности. Это может быть использовано для распознавания именованных объектов (NER), выделения частей речи (POS) и многого другого. Подготовьте свои данные в нужном формате, и тогда всего несколькими щелчками мыши ваша современная модель будет готова к использованию в производстве.

Формат данных

Данные должны быть представлены в следующем формате CSV:

tokens,tags
"['I', 'love', 'Paris']","['O', 'O', 'B-LOC']"
"['I', 'live', 'in', 'New', 'York']","['O', 'O', 'O', 'B-LOC', 'I-LOC']"
.
.
.

или вы также можете использовать формат JSONL:

{"tokens": ["I", "love", "Paris"],"tags": ["O", "O", "B-LOC"]}
{"tokens": ["I", "live", "in", "New", "York"],"tags": ["O", "O", "O", "B-LOC", "I-LOC"]}
.
.
.

Как вы можете видеть, в CSV-файле у нас есть два столбца. Один столбец - это токены, а другой - теги. Оба столбца представляют собой структурированные списки! Столбец "tokens" содержит токены предложения, а столбец "tags" содержит теги для каждого токена.

Если у вас большой CSV-файл, вы можете разделить его на несколько CSV-файлов и загрузить их отдельно. Пожалуйста, убедитесь, что имена столбцов во всех CSV-файлах совпадают.

Один из способов разделить CSV-файл с помощью pandas заключается в следующем:

import pandas as pd

# Set the chunk size
chunk_size = 1000
i = 1

# Open the CSV file and read it in chunks
for chunk in pd.read_csv('example.csv', chunksize=chunk_size):
    # Save each chunk to a new file
    chunk.to_csv(f'chunk_{i}.csv', index=False)
    i += 1

Пример набора данных из HuggingFace Hub: conll2003

Столбцы

Ваш набор данных CSV/JSONL должен содержать два столбца: tokens и tags.

Параметры

class autotrain.trainers.token_classification.params.TokenClassificationParams

( 
    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,
    tokens_column: str = 'tokens',
    tags_column: str = 'tags',
    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.
  • tokens_column (str) — Имя столбца токенов. По умолчанию используется значение “tokens”.
  • tags_column (str) — Имя столбца "теги". По умолчанию используется значение “tags”.
  • 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]) — Токен Hugging Face hub для аутентификации. Значение по умолчанию None.
  • push_to_hub (bool) — Следует ли перемещать модель в Hugging Face hub. Значение по умолчанию 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.

TokenClassificationParams - это класс конфигурации для обучающих параметров классификации токенов.