Назначение задач
Распределение объектов в Potato стратегиями random, fixed-order, least-annotated, max-diversity и active learning, а также лимиты нагрузки на каждого разметчика.
В Potato есть гибкие стратегии назначения задач, которые определяют, как объекты для разметки распределяются между разметчиками.
Как объекты доходят до разметчиков
Обзор
Назначение задач определяет:
- Какие объекты видит каждый разметчик
- Сколько объектов размечает каждый разметчик
- Сколько разметок получает каждый объект
- В каком порядке показываются объекты
Основные параметры конфигурации
| Параметр | Описание | По умолчанию |
|---|---|---|
assignment_strategy | Стратегия назначения объектов | fixed_order |
max_annotations_per_user | Максимум объектов на разметчика | без ограничений |
max_annotations_per_item | Целевое число разметок на объект | 3 |
Стратегии назначения
Случайное назначение
Назначает объекты разметчикам случайно, чтобы распределение было непредвзятым.
assignment_strategy: random
max_annotations_per_item: 3Подходит для обычных задач разметки, где порядок не важен.
Назначение в фиксированном порядке
Назначает объекты в том порядке, в каком они идут в датасете.
assignment_strategy: fixed_order
max_annotations_per_item: 2Подходит для задач, где разметчики должны видеть объекты в определённой последовательности.
Назначение наименее размеченных
Отдаёт приоритет объектам, у которых меньше всего разметок, чтобы распределение было равномерным.
assignment_strategy: least_annotated
max_annotations_per_item: 5Подходит для случаев, когда все объекты должны получить достаточное покрытие прежде, чем какой-либо объект получит лишние разметки.
Назначение по максимальному расхождению
Отдаёт приоритет объектам с наибольшим расхождением между уже имеющимися разметками.
assignment_strategy: max_diversity
max_annotations_per_item: 4Подходит для контроля качества и разрешения неоднозначных объектов.
Назначение с активным обучением
С помощью машинного обучения выдаёт в первую очередь объекты, в которых модель не уверена.
assignment_strategy: active_learning
active_learning:
enabled: true
schema_names: ["sentiment"]
min_annotations_per_instance: 2
min_instances_for_training: 20
update_frequency: 10Полная конфигурация описана в разделе Активное обучение.
Конфигурация
Современная конфигурация (рекомендуется)
# Strategy selection
assignment_strategy: random
# Limits
max_annotations_per_user: 10 # -1 for unlimited
num_annotators_per_item: 3
# Reproducible shuffling
random_seed: 1234random_seed задаётся на верхнем уровне, а не внутри вложенного блока, и если он не задан, по умолчанию равен 1234. Фиксируйте его всякий раз, когда запуск должен быть воспроизводимым, поскольку из него берут случайность и стратегия random, и стратегии разнообразия.
Каноническое написание лимита на объект: num_annotators_per_item. max_annotations_per_item служит устаревшим псевдонимом той же настройки, и если задать обоим разные значения, конфигурация будет отклонена при загрузке, а не согласована молча.
Устаревшая конфигурация
Старая конфигурация automatic_assignment по-прежнему поддерживается:
automatic_assignment:
on: true
output_filename: task_assignment.json
sampling_strategy: random # 'random' or 'ordered'
labels_per_instance: 3 # Annotations per item
instance_per_annotator: 5 # Items per annotator
test_question_per_annotator: 0Тестовые вопросы
Вставляйте в очередь разметки вопросы для проверки внимательности:
Определение тестовых вопросов
Добавьте _testing к идентификатору объекта в файле данных:
text,id
"This is test question 1",0_testing
"Regular item",dkjfdИли в JSON:
[
{"id": "0_testing", "text": "This is a test question"},
{"id": "regular_001", "text": "Normal annotation item"}
]Конфигурация
automatic_assignment:
on: true
test_question_per_annotator: 2 # Insert 2 test questions per annotatorПримеры конфигураций
Простое случайное назначение
annotation_task_name: "Sentiment Analysis"
assignment_strategy: random
max_annotations_per_user: 20
max_annotations_per_item: 3Назначение с упором на качество
annotation_task_name: "Quality Annotation"
assignment_strategy: max_diversity
max_annotations_per_item: 5
max_annotations_per_user: 50Настройка для краудсорсинга
annotation_task_name: "Crowdsourced Task"
assignment_strategy: random
max_annotations_per_user: 10
max_annotations_per_item: 3
# Crowdsourcing settings
hide_navbar: true
jumping_to_id_disabled: true
login:
type: url_direct
url_argument: workerIdНастройка с активным обучением
assignment_strategy: active_learning
active_learning:
enabled: true
schema_names: ["sentiment", "topic"]
min_annotations_per_instance: 2
min_instances_for_training: 20
update_frequency: 10
classifier_name: "sklearn.linear_model.LogisticRegression"
vectorizer_name: "sklearn.feature_extraction.text.TfidfVectorizer"Интеграция с админ-панелью
Следить за настройками назначения и менять их можно в админ-панели:
- Откройте
/admin - Перейдите на вкладку Configuration
- Измените:
- Max Annotations per User
- Max Annotations per Item
- Assignment Strategy
Изменения вступают в силу сразу, без перезапуска сервера.
Дополнительные материалы
- Активное обучение: приоритизация назначения с помощью ML
- Контроль качества: проверки внимательности и эталонные примеры
- Назначение по категориям: распределение объектов по специализации разметчиков
- Интеграция с краудсорсингом: Prolific, SONA и другие панели
Подробности реализации см. в исходной документации.