Интеграция Prodigy для разметки данных
Prodigy — профессиональный инструмент для аннотации данных от создателей spaCy. Специализируется на NLP-задачах: NER, классификация текста, семантическое сходство. Active learning встроен — модель учится по мере разметки и направляет аннотатора к наиболее информативным примерам.
Преимущества Prodigy
- Active Learning: не нужно размечать всё подряд. Prodigy выбирает примеры, где модель наименее уверена — максимальная ценность каждой размеченной единицы
- Встроенные рецепты: готовые workflows для NER, классификации, сравнения
- spaCy-интеграция: разметка → обучение → обновление модели → новые примеры — бесшовно
- Human-in-the-loop: модель предлагает аннотации, человек корректирует
Установка и запуск
pip install prodigy # требует лицензионный ключ
prodigy ner.manual my_ner_dataset blank:ru texts.jsonl --label PER,ORG,LOC
Или с Active Learning (модель уже обучена частично):
prodigy ner.teach my_ner_dataset ru_core_news_lg texts.jsonl --label PRODUCT,FEATURE
Форматы данных
Входные данные — JSONL, каждая строка — один пример:
{"text": "Газпром подписал соглашение с Deutsche Bank в Берлине."}
{"text": "Иван Петров, CEO компании Яндекс, выступил на конференции."}
Экспорт размеченных данных для обучения spaCy:
prodigy data-to-spacy ./train ./dev --ner my_ner_dataset
python -m spacy train config.cfg --output ./model
Workflows для разных задач
Классификация текста:
prodigy textcat.manual news_cats dataset texts.jsonl \
--label POSITIVE,NEGATIVE,NEUTRAL
Семантическое сходство (обучение sentence-transformers):
prodigy pos.teach similarity_dataset en_core_web_md sentence_pairs.jsonl
Разметка отношений между сущностями:
prodigy rel.manual rel_dataset blank:ru texts.jsonl \
--label WORKS_AT,LOCATED_IN
Интеграция в production pipeline
# Экспорт из Prodigy
import prodigy
from prodigy.components.db import connect
db = connect()
examples = db.get_dataset("my_ner_dataset")
# Конвертация в HuggingFace dataset
from datasets import Dataset
hf_dataset = Dataset.from_list([
{"tokens": ex["tokens"], "labels": convert_spans_to_bio(ex)}
for ex in examples if ex["answer"] == "accept"
])
Стоимость и альтернативы
Prodigy: $490 (разовая лицензия на персональное использование), $790 для команды. Альтернативы open-source: Label Studio (больше форматов, UI сложнее), Doccano (проще, только базовые задачи), Argilla (data quality + разметка).
Для NER-задач с active learning Prodigy остаётся лучшим выбором несмотря на платность: экономия в 2–3x времени аннотаторов по сравнению с ручной разметкой.







