Інтеграція 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 (якість даних + розмітка).
Для NER-завдань з active learning Prodigy залишається найкращим вибором незважаючи на платність: економія 2-3x часу анотаторів порівняно з ручною розміткою.







