Методические рекомендации по созданию ТЗ на разметку данных

Оглавление статьи

Вы собрались сделать тестовый или обучающий датасет для LLM.

С одной стороны это просто - берешь данные, назначаешь метки, тяп-ляп, фит-предикт, модель в продакшен! Профит! Или нет? Чаще нет… С большой вероятностью полученная модель будет иметь низкое качество, обусловленное низким качеством обучающих данных.

Почему низким? Обсудим далее. Как сделать качество данных хорошим? А вот это уже сложно. И достаточно больно. И чтобы это сделать более эффективно и менее больно, лучше знать некоторые принципы.

Этапы создания разметки

Нельзя просто так взять и разметить данные. Вернее можно - но тогда данные получатся достаточно грязные и вы получите Garbage in (мусор на входе), что неминуемо выдаст Garbage out (мусор на выходе) - LLM ничему не научится или ваши тестовые данные не будут отражать реальность практически никак.

Чтобы мусора не получилось, надо понимать, что каждая отдельная задача разметки - это отдельный проект с набором этапов.

И само создание разметки это только небольшая часть общего состава работ.

Общий список этапов проекта по созданию разметки:

Определение целей и сбор данных

На этом этапе надо написать первое ТЗ на разметку - драфт. Это ТЗ по существу. Для доменных экспертов, чтобы они оценили реализуемость задачи. Тут должны быть цели, задачи, примеры, общая характеристика данных, формализация разметки по типу задачи.

Определение целей и задач проекта

  • Четко сформулируйте, зачем нужна разметка, например, обучение модели, тестирование модели,
  • Как звучит задача в ее бизнес постановке
  • Определите как звучит задача в ее технической постановке - например, классификации текстов.
  • Пример: "Цель — создать набор данных для определения тональности отзывов" или “обучения модели определять нарушает ли ситуация норму закона” и т.д.
  • Какого типа задачи данная разметка будет (дискриминативная, селективная или генеративная).

Про типы задач будет далее. Упрощенно их всего три типа:

  • Дискриминативные
  • Селективные
  • Генеративные

Но пока важно понимать про типы задач - что они разные по сложности для человека.

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

Чем больше надо искать, думать, писать самому, вникать в детали - тем больше сил и времени это у людей занимает.

Поэтому где можно хочется минимизировать человеческий ресурс и искать готовые данные, которые нужно только отфильтровать или отобрать (те свести задачу к дискриминативной в части работы разметчиков, даже если датасет вы делаете для генеративной или селективной задачи).

Сбор и подготовка данных

Чем меньше люди придумывают и ищут, тем проще, быстрее и в итоге лучше делается разметка. Поэтому исходя из целей и задач поищите источники готовых живых данных.

  • Соберите сырые данные (исходные тексты, лучше реальные, лучше откуда-то спарсить, взять живые данные из Интернета и т.д.).
  • Проведите предварительную очистку (удаление дубликатов, шумов, не тематических текстов, слишком коротких, слишком длинных текстов, замусоренных оглавлением, сносками и другими элементами текстов и т.д.).
  • Проведите анализ получившегося корпуса данных:
    • анализ ключевых слов,
    • анализ тематик,
    • анализ длин текстов,
    • анализ доли источников, откуда были взяты тексты.

Этот анализ можно и нужно делать не вручную, а используя программистов и их аналитические инструменты.

Итоговая выборка данных, которые пойдут в дальнейшую работу должна быть диверсифицированная и сбалансированной.

Выборка — это часть данных, отобранная из более крупной группы (генеральной совокупности), чтобы изучить её характеристики. Например, если нужно узнать средний возраст или рост студентов вуза, можно не опрашивать всех, а выбрать несколько человек. Выборка должна быть репрезентативной, означает, что эта выборка точно отражает генеральную совокупность. Например, если в вузе учатся 50% юристов и 50% инженеров, то в выборке должно быть примерно такое же соотношение

Это достигается через:

  • Случайный отбор (если есть доступ к генеральной совокупности, то можно брать примеры из нее с условием, что каждый элемент имеет равный шанс попасть в выборку)
  • Квоты (фиксация доли подгрупп, например, для примера с людьми - полов, возрастов).
  • Достаточный объём (слишком маленькая выборка может исказить результаты).

Если выборка нерепрезентативна, выводы будут ошибочными. Например, опрос только первокурсников не покажет мнение всех студентов. Подробнее об этом далее.

Требования к структуре данных

Что такое репрезентативность, сбалансированность и диверсифицированность и как их учесть одновременно - и рыбку съесть и в лужу не сесть.

Репрезентативность

Репрезентативность выборки — это свойство выборки, при котором её характеристики (состав, структура, параметры) точно отражают свойства генеральной совокупности, из которой она была извлечена или которую она моделирует.

Это означает, что выборка должна включать все значимые подгруппы, категории или атрибуты, присущие исходной популяции, в пропорциях, соответствующих реальному распределению.

Ключевые аспекты репрезентативности

  • Соответствие генеральной совокупности

    • Например при социологических исследованиях выборка людей должна сохранять баланс ключевых параметров (пол, возраст, география, доход и т.д.), как в целевой популяции.
    • Пример: Если в городе 60% женщин и 40% мужчин, репрезентативная выборка сохранит это соотношение.
    • Исследование удовлетворённости услугами больницы включает пациентов всех возрастов, полов, социальных групп и отделений (терапия, хирургия и т.д.)
    • При анализе мнения о продукте важно включить как новых пользователей, так и постоянных клиентов
    • Разделение популяции на страты (подгруппы) и их пропорциональное включение в выборку. Например, для исследования по регионам: 50% данных из города A, 30% — из города B, 20% — из сельской местности
    • Репрезентативная выборка позволяет делать достоверные выводы о генеральной совокупности. В выборке должны быть представлены все группы, влияющие на результат исследования.
    • Методы отбора (например, случайная выборка) должны исключать смещение. Например, опрос только подписчиков соцсетей может исказить результаты. Примеры только из одного внешнего источника - могут отличаться от общей генеральной совокупности (реального мира).
  • Контроль размера выборки :

    • Чем больше выборка, тем выше её репрезентативность, но даже небольшие выборки могут быть репрезентативными при правильном дизайне.
  • Плохая репрезентативность :

    • Опрос о качестве образования, проведённый только среди студентов одного университета, не отражает мнение всех учащихся страны.

Важно избегать ложных обобщений (например, экстраполяция результатов с нерепрезентативной выборки на всю популяцию).

Репрезентативность выборки в контексте текстовых данных и задач NLP означает, что набор текстов, используемых для обучения или оценки моделей, точно отражает ключевые характеристики генеральной совокупности (всех возможных текстов, которые модель встретит в реальных условиях). Это включает:

  • Разнообразие тем, стилей, типов, источников.
  • Баланс классов (например, тональностей, категорий).
  • Соответствие реальному распределению длин текстов, сленга, шума и других параметров

Примеры репрезентативности в NLP

Задача: классификация тональности отзывов

Репрезентативная выборка :

  • Отзывы с разных платформ (Amazon, Google Play, форумы).
  • Тексты разной длины (от коротких "Отлично!" до развернутых описаний).
  • Сбалансированное соотношение классов (40% позитивных, 30% нейтральных, 30% негативных).

Нарушение репрезентативности :

  • Все отзывы собраны только с одной платформы (например, App Store), где доминируют короткие позитивные оценки

Как проверить репрезентативность текстовых данных?

  • Анализ статистики :
    • Распределение классов по типам или целевым меткам
    • Гистограммы длин текстов.
    • TF-IDF для выявления ключевых слов в разных подгруппах

Репрезентативность критична для NLP, так как модели склонны "переобучаться" на доминирующих паттернах в данных. Например, модель, обученная на новостях, может плохо работать с текстами из соцсетей.

Задача: извлечение именованных сущностей (NER)

Репрезентативная выборка :

  • Тексты из разных доменов: новости, медицинские статьи, соцсети.
  • Учет разных типов сущностей (например, имена людей, организации, даты, названия товаров и др.).
  • Включение разговорного языка и сленга (например, "Яблоко" как компания и как фрукт в разных контекстах)

Задача: определение спама

Репрезентативная выборка :

  • Сообщения с разных каналов (email, SMS, мессенджеры).
  • Баланс классов: 90% "не спам" и 10% "спам", если такое соотношение характерно для реальных данных.
  • Учет шума (опечатки, сокращения: "Продам авто дешево!!!" vs "Конференция по ML в Москве")

Задача: машинный перевод

Репрезентативная выборка :

  • Тексты разных жанров: официальные документы, художественная литература, разговорная речь.
  • Учет диалектов и разновидностей языка (например, британский vs американский английский)

Сравнение с "эталоном":

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

Мы обсудили репрезентативность.

Но есть нюанс! Абсолютно репрезентативная выборка может быть не пригодна для целей обучения и тестирования моделей. Если какого-то важного для вас целевого класса в реальной генеральной совокупности мало и вы так же мало его заложите в обучение - модель его просто проигнорирует. Поэтому для целей обучения и тестирования стоит отходить от репрезентативности в сторону сбалансированности.

Условно если спам реально 0.5%, не спам - 99.5%, то в обучающую выборку стоит заложить хотя бы 15% спам и 85% не спам, или даже 25% спам, 75% не спам.

Те важное для вас явление должно быть достаточно заметно.

Но нельзя его делать и 50/50 - т.к. тогда вы обучите модель тому что это очень вероятно и она начнет завышать вероятность спама и на обычных данных.

В общем идеального рецепта тут нет. Это всегда компромисс между:

  • репрезентативностью
  • диверсифицированностью
  • сбалансированностью.

Как выстроить этот компромисс и провести границы - всегда решается по месту исходя из данных и экспертной интуиции.

Общие принципы как искать баланс данных


Репрезентативность данных

Требование: Выборка должна отражать реальное распределение явлений в целевой предметной области.

  • Пример:
    Если вы размечаете отзывы на мобильные приложения, в данных должны быть:
    • Тексты разной эмоциональной окраски (от восторженных до негативных).
    • Упоминания разных аспектов (интерфейс, скорость, поддержка).
    • Источники: App Store, Google Play, форумы, соцсети.

Баланс классов

Требование: Избегайте доминирования одного класса, если это не отражает реальность.

  • Примеры:
    • В задаче бинарной классификации спама идеальное соотношение 50/50 редко достижимо, но дисбаланс более 90/10 (например, 95% "не спам" и 5% "спам") требует коррекции (например, oversampling до 70/30).
    • В мультиклассовой классификации тематик (спорт, политика, технологии) старайтесь, чтобы каждый класс составлял не менее 15-20% выборки.

Диверсификация источников

Требование: Тексты должны быть собраны из разных источников, чтобы избежать смещения.

  • Пример: Для задачи распознавания именованных сущностей (NER):
    • Новостные статьи (формальный стиль).
    • Соцсети (разговорный язык, сленг).
    • Научные публикации (термины).
    • Эффект: Модель научится работать с разными стилями.

Распределение длин текстов

Требование: Убедитесь, что в выборке есть тексты разной длины.

  • Пример:
    • Короткие тексты: твиты (до 280 символов), SMS-сообщения.
    • Средние: отзывы на товары (100-500 слов).
    • Длинные: статьи, техническая документация.
    • Анализ: Используйте гистограммы распределения длин

Типы текстов

Требование: Включайте разнообразные жанры и форматы.

  • Примеры:
    • Структурированные тексты (таблицы, списки).
    • Неформальные (диалоги, комментарии).
    • Профессиональные (юридические документы, медицинские отчеты).
    • Эффект: Модель не будет "переобучаться" на одном формате.

Учет контекста и шума

Требование: Включайте примеры с шумом (опечатки, сокращения) и разнообразным контекстом.

  • Пример:
    • Для задачи сентимент-анализа:
    • Чистые тексты: "Обслуживание в ресторане отличное!"
    • Тексты с шумом: "Обслуживание в рест. ваще ужас(((" (опечатки, эмодзи).
    • Инструменты: Используйте библиотеки вроде nltk или spaCy для анализа шума.

Анализ ключевых слов и тематик

Требование: Проверьте, что выборка покрывает все ключевые темы и сущности.

  • Методы:
    • TF-IDF для выявления доминирующих терминов.
    • Тематическое моделирование (LDA) для проверки разнообразия тем.
  • Пример
    • В датасете для классификации новостей тема "политика" не должна занимать более 40% без явной причины.

Этапы проверки диверсификации

Как автоматизировать анализ:

  • Статистический отчет:
    • Количество текстов по классам, источникам, длинам.
  • Визуализация:
    • Графики распределения классов.
    • Wordcloud для визуализации ключевых слов.

Пример плохой и хорошей выборки

  • Плохая выборка:
    • 90% текстов из одного источника (например, Вконтакте).
    • Все отзывы положительные (дисбаланс классов).
    • Тексты длиной 10-20 слов (нет длинных примеров).
  • Хорошая выборка:
    • 30% новостей, 30% соцсетей, 40% форумов.
    • Соотношение классов "положительный" (40%), "нейтральный" (30%), "отрицательный" (30%).
    • Тексты от 5 до 1000 слов с равномерной гистограммой.

Коротко:

Диверсификация выборки — это не просто "разнообразие", а системный подход, который включает:

  • Баланс классов и источников.
  • Покрытие разных стилей, жанров, длин.
  • Учет шума и контекста.

Недооценивание этого этапа приводит к моделям, которые "работают" только на бумаге, но не в реальных условиях.

Для проверки парметров выборки используйте автоматизацию (Python, Tableau) для анализа, но не игнорируйте и анализ “руками и глазами”.

Создание ТЗ на проект разметки - на интерфейс, технические детали и метрики проекта

Создание именно технического задания для инженера

Теперь надо начинать думать как с данными будут работать разметчики - какой интерфейс работы будет у них

  • в каких полях они будут что-то заполнять?

  • у них будут галочки для выбора опций? или кнопочки для нажатия? или выбор из выпадающего списка?

  • какие у них будут подсказки в интерфейсе

  • как мы будем проверять корректность выбранного или введенного разметчиками (проверки и валидация в моменте разметки),

  • какими ограничениями и метриками мы обложим их работу, как будем валидировать синхронность разметки и смещение каждого из разметчиков

  • и многие другие важные технические детали

  • Определите:

    • Критерии разметки (например, "выделять все упоминания организаций").
    • Формат разметки (BIO-тегирование, bounding boxes).

Кроме общей текстовой инструкции для разметчиков, учитывающей интерфейс собранного проекта еще нужны:

  • Встроенная справка с краткими инструкциями и примерами для полей интерфейса
  • Разъяснение значения каждого поля (текст, определение, рассуждение, результат).
  • Контекстная помощь при наведении курсора на элементы интерфейса.

Выбор инструментов и платформ

И тут важно определиться, с помощью какого инструмента вы будете делать разметку.

Самый бедный вариант - это excel или Google Таблицы. Но часто это не самый удобный и автоматизируемый вариант. Он потребует очень много ручной работы по верификации, валидации, пост-процессингу данных.

Поэтому лучше использовать специализированные инструменты или платформы для разметки данных.

  • Подберите платформу для разметки. Для нас целевым инструментом является платформа TagMe. Помимо нее есть и другие платформы:
    • Для текста: Label Studio, Tagtog, Toloka
    • Для изображений: CVAT, Supervisely.

Обдумайте хранение и версионирование выгруженных данных.

На основе этого ТЗ происходит инженерная сборка проекта на платформе разметки данных. Если подразумевается несколько этапов с разными интерфейсами, то все эти вещи нужно продумывать для каждого из этапов.

Обучение разметчиков

На данном этапе надо написать понятную инструкцию для разметчиков, используя уже собранный интерфейс проекта.

В инструкции для разметчиков привести примеры задач и лучше побольше.

В примерах указать:

  • Подробное описание критериев, по которым определяется, то что нужно создать в разметке, чтобы было понятно удовлетворяет ли объект определению.
  • Чёткие примеры и контрпримеры (что относится к «подходит» и что – к «не подходит»).
  • Если разметка подразумевает рассуждение - то привести рекомендации по составлению рассуждения:
    • Рассуждение должно быть логичным, последовательным и обоснованным.
    • Обязательно указание конкретных элементов текста, подтверждающих или опровергающих соответствие.
    • Минимальные требования к объёму и структуре рассуждения (например, не менее 3–5 предложений).

И очень желательно сделать обучение и экзамен обучающий экзамен для разметчиков, хотя бы примеров на 20.

Также к этому этапу относится формирование команды разметчиков

  • Наберите аннотаторов с учётом предметной области (например, юристы для разметки юридических документов).
  • И с учетом опыта разметчиков - распределите роли (рядовой разметчик, ведущий эксперт для разбора сложных ситуаций, проверяющие).

Обучение разметчиков

  • Проведите тренинги с примерами и контрольными заданиями.
  • Объясните критерии и разберите краевые случаи (например, как обрабатывать сарказм в отзывах, вложенные сущности в селективной разметке и др.).

На платформе TagMe заложен функционал создания обучающих и экзаменационных задач в проекте. Обучающие задачи состоят из заданий с автоматической проверкой ответа и подсказкой. Если разметчик сделает ошибку, он увидит подсказку, и это поможет ему избежать подобных ошибок в будущем. Экзаменационные задачи состоят из контрольных заданий - заданий с автоматической проверкой ответа, но БЕЗ подсказки. Проведение обучения и экзамена позволяют на самом раннем этапе выявить неоднозначности в ТЗ и непонимание разметчиками целевой задачи.

Пилотная разметка

  • Выполните пробную разметку небольшой выборки данных - например 10-100 примеров.
  • Оцените вручную что получилось, замеряейте метрики. Все ли полуается так как вам надо?
  • Много ли ошибок? Проведите анализ ошибок и дисбалансов в данных. Чем вызваны ошибки и дисбалансы?
  • Выявите и устраните неоднозначности в ТЗ, технической реализации проекта, инструкции для разметчиков.

Основная разметка

  • Запустите процесс в полном объёме.
  • Контролируйте прогресс через аналитику платформы (например, скорость и согласованность разметки).

Например некоторые примеры вы можете давать нескольким разметчикам одновременно в работу. И если разметка на данных примерах расходится - то это возможно повод приостановить разметку и что-то откорректировать. Можно давать в разметку с перекрытием например 20% данных.

Разметчиков можно контролировать через

  • время выполнения задач,
  • диверсификацию текстов и меток которые он выставляет
  • автоматические параметры генерируемой разметки (длина текста, количество меток)

Также в получающейся разметке стоит контролировать диверсификацию, репрезентативность и сбалансированность через контроль метрик, которые заложены в техническое задание на проект.

Если примеров какого-то типа не хватает или слишком много - то надо откорректировать состав заданий.

В процессе разметки можно подмешивать ханипоты - примеры на которых мы знаем правильный ответ (в терминологии TagMe это те же контрольные задания). Их надо заранее заготовить и использовать их для контроля качества. Например:

  • При ошибке в 2 honeypots подряд — блокировка разметчика до переобучения.
  • При 3 ошибках в 10 заданиях из ханипотов— отстранение от проекта.

На TagMe подобный механизм реализован следующим образом:

  • можно создать “навык” - признак, который присваивается разметчику, когда он успешно выполняет контрольные и обучающие задания. Уровень навыка — это процент правильных ответов среди последних контрольных и обучающих задач с этим навыком, которые выполнял разметчик;
  • можете настроить количество заданий, по результатам которых будет складываться уровень конкретного навыка;
  • можно поставить ограничение на уровень навыка для каждой конкретной задачи;
  • если у разметчика падает уровень навыка ниже установленного, то ему перестает быть доступной задача;
  • на ТегМи есть еще один тип задач - реабилитационные. Разметчик попадает в рехаб, если его уровень навыка падает ниже установленной границы, в рехабе ему дается шанс повысить свой навык через выполнение других контрольных задач.

Подробнее о ханипотах далее.

После проведения основной разметки может понадобиться этап постпроцессинга данных.

  • Например удаление дубликатов и противоречивых примеров.
  • Сведение результатов при перекрестной разметке.
  • Нормализация текста (исправление опечаток, приведение к нижнему регистру).

Верификация разметки

Все что создали разметчики - должно быть перепроверено. И перепроверено с перекрытием. Те на каждый сделанный пример, хорошо бы посмотреть 3-м разным людям и сказать, это сделано верно или нет.

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

Honeypots - Ханипоты

При проведении верификации надо обязательно закладывать ханипоты (honey-pots) - примеры ловушки. Это примеры которые размечены экспертом высокого уровня и проверенные с перекрытием. Т.е. это голда - золотой стандарт, точно верная и хорошая разметка, для которой мы знаем правильный ответ.

Голду можно делать как верные примеры так и заведомо неверные примеры. И такие примеры голды закладывать в проект верификации как ловушки наравне с проверяемой разметкой.

И на этих ловушках проверяется качество работы верификатора. Если он допускает на них ошибки, то он должен быть отстранен от разметки, а все его метки аннулированы.

Такие ловушки нужны, чтобы проверять что верификаторы не халтурят, что они верно понимают задание.

Общая доля ханипотов на верификации желательна в размере 5-10%. При этом не все ханипоты должны быть сложными, можно большую часть из них сделать заданиями с простыми ответами, чтобы контролировать внимательность и добросовестность проверяющих.

Где та граница когда отстранять верификатора, и когда аннулировать его предыдущие метки - вопрос дискуссионный и решается тоже по месту.

Всю эту бизнес логику надо настраивать на стороне платформы разметки данных. У каждой платформы свои возможности по автоматизации и контролю.

  • Проверка качества разметки:

    • Процент согласованности разметчиков - на каком проценте примеров все 3 верификатора сошлись, на каком проценте 2 верификатора из 3х сошлись.
  • Межэкспертная согласованность (коэффициент Каппа). Основная формула Каппа: (P0 - Pe) / (1 - Pe), где P0 — наблюдаемое согласие, Pe — ожидаемое случайное. Для многоклассового случая P0 рассчитывается как сумма диагональных элементов матрицы ошибок (точность), а Pe — сумма произведений сумм по строкам и столбцам для каждого класса.

    • Значение коэффициента Каппа интерпретируется как:
    • < 0 — согласие хуже случайного,
    • 0–0.20 — незначительное,
    • 0.21–0.40 — слабое,
    • 0.41–0.60 — умеренное,
    • 0.61–0.80 — хорошее,
    • 0.81–1 — почти полное
    • Можно установить для прохождения валидации проекта в целом минимальное значение коэффициента Каппа например в 0.7.
  • Сравнение с "золотым стандартом" Процент ошибок на ханипотах (эталонных данных).

  • Статистический анализ (распределение меток, выбросы). Выброс - когда чего-то или сильно меньше или сильно больше чем должно быть.

На TagMe реализованы метрики качество и согласованность.

Подсчет качества и согласованности нужно обговаривать на этапе постановки ТЗ на техническую реализацию проекта. Обе метрики считаются по одинаковому алгоритму в рамках одного проекта: при подсчете качества ответ разметчика сравнивается с эталонным ответом на контрольное задание (ханипот), а при подсчете разметчика ответ каждого разметчика сравнивается с ответами других разметчиков на то же самое задание и подсчитывается среднее арифметическое.

На TagMe заложены три алгоритма подсчета качества и согласованности (но для нас релевантны только первые два, потому что они про тексты):

  • binary — алгоритм для вопросов, где требуется полное совпадение ответов. Если ответ разметчика в точности совпадает с контрольным ответом или ответом другого разметчика, то показатель 1. Если ответы хоть в чем-то различаются — 0. Подходит для всех типов заданий.
  • levenshtein — алгоритм для вопросов с текстовыми ответами. При расчете используется вычисление редакционного расстояния, без учета регистра. Подробнее — по ссылке. При использовании этого алгоритма в заданиях не с текстовыми ответами, например, сегментация изображений, показатель будет равен 0.
  • iou — алгоритм для заданий сегментации изображений, видео и аудио. При использовании этого алгоритма в других заданиях, показатель будет равен 0.

Нужно иметь в виду, что Tagme-инженеру нужно свести любой подсчет качества и согласованности на платформе либо к алгоритму levenstein, либо к binary. После выгрузки инженер-аналитик может придумать собственные более сложные методы подсчета, но для контроля качества на платформе нужно придумать такие проверки, которые можно свести к указанным. Иначе все разговоры про ханипоты и экзамены на платформе бессмысленны.

Можно проверять также валидирующие критерии для итоговой разметки, например:

  • Автоматическая проверка на соответствие формату (например, длина рассуждения > 50 символов).
  • Ручная проверка 10% данных старшим разметчиком должна показать качество не ниже 0.9.

Исправление ошибок

  • Переразметить спорные или некорректные примеры - то что на верификации отобрано как неверное или на чем низкая согласованность верификторов.
  • Обновите инструкции, если обнаружены системные ошибки.

Анализ качества и доработка

  • Оцените, соответствует ли разметка целям проекта.
  • Проверьте соблюдаются ли требования по сбалансированности, репрезентативности и диверсификации.
  • возможно какой-то тип данных срезался на верификации как несогласованный и его было сложно размечать. Тогда нужно заново создать инструкции, примеры и провести разметку недостающей части данных
  • Те. при необходимости повторите этапы начиная с самого начала для недостающей части данных или целиком. Хорошая разметка редко получается с первого подхода. 2-3 цикла переразметки и оптимизации - это нормально.

Экспорт и документирование

Платформа разметки данные выгружает в не удобном для вас формате в 99% случаев. Поэтому для целей хранения, передачи в обучение или тестирование вам надо преобразовать формат.

Поэтому вам надо написать ТЗ на формат передачи в дальнейшую обработку данных

  • Сохраните данные в требуемом формате (JSON, CSV, XML).

  • Напишите скрипты преобразования данных

  • Сохраните данные с учетом версионности данных (т.к. вы будете делать это несколько раз и надо не запутаться)

  • Зафиксируйте все артефакты чтобы потом это было легко найти и использовать.

Планирование поддержки и обновлений

  • Определите, как будет обновляться разметка при появлении новых данных.
  • Назначьте ответственных за долгосрочное сопровождение разметки - хранителя скриптов, пайплайнов отчистки, выгрузки, дедупликации, валидации, верификации и т.д.

Типы задач

Прежде чем начинать собирать данные, лучше остановиться и подумать о том через какой тип задачи проще и надежнее будет данные получить. Поэтому сначала обсудим типы задач.

Дискриминативные задачи

Самый простой тип задач - дискриминативный.

  • Дискриминативная задача связана с разделением или дифференциацией объектов на основе определённых характеристик.
  • чаще всего такая задача состоит в классификации - вам надо выбрать одну или несколько из заранее известных меток для данных
  • бинарная классификация - когда у вас всего 2 метки (например да или нет)
  • многоклассовая классификация (когда мы выбираем только одну из нескольких меток)
  • мультилейбловая классификация (мы выбираем несколько меток из заранее известных, или ни одну из меток, если объект не подходит ни под один из рассматриваемых классов)

Вот примеры для дискриминативных задач в сфере NLP (обработки естественного языка):

  1. Бинарная классификация

Описание: Задача, где нужно выбрать между двумя метками (например, "Да" или "Нет").

Примеры:

  • Анализ тональности текста:

    • Определить, является ли отзыв положительным или отрицательным.
    • Вход: "Этот ресторан — просто ужас! Еда невкусная, обслуживание медленное."
    • Выход: Отрицательный.
  • Определение спама:

    • Классифицировать сообщение как спам или не спам.
    • Вход: "Вы выиграли миллион долларов! Нажмите здесь, чтобы получить приз."
    • Выход: Спам.
  • Фейковые новости:

    • Определить, является ли новость достоверной или фейковой.
    • Вход: "NASA подтвердило существование инопланетян."
    • Выход: Фейк.
  1. Многоклассовая классификация

Описание: Задача, где нужно выбрать одну метку из нескольких заранее известных классов.

Примеры:

  • Классификация тематики текста:

    • Определить, к какой категории относится статья (например, спорт, политика, технологии).
    • Вход: "Сборная России одержала победу в матче против Канады со счетом 3:2."
    • Выход: Спорт.
  • Языковая идентификация:

    • Определить язык текста из списка возможных языков.
    • Вход: "Bonjour, comment ça va?"
    • Выход: Французский.
  • Классификация намерений пользователя (Intent Classification):

    • Определить, какое действие пользователь хочет выполнить в чатботе имея заранее известный набор типовых ситуаций, и одну общую ситуацию “все остальное”..
    • Вход: "Как мне сбросить пароль?"
    • Выход: Восстановление пароля.
  1. Мультилейбловая классификация

Описание: Задача, где нужно выбрать несколько меток из заранее известного набора, или ни одной, если объект не подходит ни под один класс.

Примеры:

  • Маркировка тегов для вопроса на Stack Overflow:

    • Определить, какие теги лучше всего описывают содержание вопроса имея уже существующие теги.
    • Вход: "Как создать REST API на Python с использованием Flask?"
    • Выход: ["Python", "Flask", "REST API"].
  • Классификация эмоций в тексте:

    • Определить, какие эмоции выражены в тексте (радость, грусть, злость).
    • Вход: "Я так счастлив, что мы наконец встретились, но немного грустно, что это произошло так поздно."
    • Выход: ["Радость", "Грусть"].
  • Тематическая классификация документов:

    • Определить, к каким темам относится документ (например, наука, образование, технологии).
    • Вход: "Исследование показывает, что использование ИИ в образовании повышает эффективность обучения."
    • Выход: ["Наука", "Образование", "Технологии"].

Кратко:

  • Бинарная классификация — простая задача с двумя метками (спам/не спам, положительный/отрицательный).
  • Многоклассовая классификация — выбор одной метки из нескольких (определение темы текста, языка).
  • Мультилейбловая классификация — выбор нескольких меток из набора (маркировка тегов, эмоций).

Верификация разметки дискриминативных задач

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

1. Проверка межэкспертного согласия

  • Коэффициенты согласия
    Используйте метрики, такие как коэффициент Каппа или Fleiss' kappa, чтобы оценить согласованность между разметчиками.
    • Пример: В бинарной классификации спама низкий коэффициент (<0.6) указывает на неоднозначность критериев (например, спорные письма, которые могут быть как рекламой, так и личными сообщениями). И такие данные требуют дополнительных примеров и методических пояснений в инструкции для разметчиков и повторной разметки.

2. Сравнение с "золотым стандартом"

  • Эталонный датасет
    Создайте небольшую выборку, размеченную экспертами с высокой точностью, и сравните с основной разметкой.
    • Метрики: Accuracy, Precision, Recall, F-мера.
    • Пример: В многоклассовой классификации тематик статей (например, "спорт", "политика" и др.) F-macro <0.8 требует перепроверки меток.

3. Статистический анализ разметки

  • Распределение меток

    • Проверьте, соответствует ли соотношение классов ожидаемому. Например:
    • В мультилейбловой классификации тегов аномально высокая частота редких меток (например, "космос" в кулинарных текстах) сигнализирует об ошибке.
  • Анализ выбросов

    • Тексты с противоречивыми метками (например, одновременно "положительный" и "отрицательный" в сентимент-анализе) требуют ручной проверки.

4. Валидация через обученную модель

  • Использование baseline-модели

Вы можете использовать LLM как верификатора. Сделайте промпт с примерами классов, иснтрукцией по оценке и предложите нескольким моделям оценить пример. И если несколько моделей одинаково не согласны с разметчиком - то возможно разметчик не прав и такие примеры можно отдать на ручную проверку.

Также вы можете использовать и другие техники валидации - через предобученные модели типа BERT - например сентимент-анализ, токсичность и др.

Но в целом универсальным рецептом для верификации дискриминативной задачи может быть LLM Judje.

Если модель показывает низкое качество (например, Accuracy <0.7) относительно человеческой разметки, это может быть признаком некорректной разметки.

  • Пример: В бинарной классификации "фейк/не фейк" модель часто ошибается на текстах с сарказмом — требуется уточнение руководства по разметке.

5. Ручная проверка краевых случаев

  • Сложные примеры
    • Выделите тексты, где:
    • Разметчики не согласны (например, твит с сарказмом в сентимент-анализе).
    • Модель не уверена (вероятность класса ~50%).

6. Проверка формата разметки

  • Корректность структуры
    • Убедитесь, что метки соответствуют формату (например, JSON, CSV). Например:
    • В мультилейбловой задаче отсутствие разделителя между метками (например, "спорт,политика" вместо списка) нарушает парсинг.

LLM Judge

LLM Judge (LLM-as-a-Judge) — это подход, при котором крупные языковые модели (LLM) используются для автоматической оценки качества выводов других моделей, проверки данных или верификации разметки. Этот метод заменяет или дополняет традиционную экспертную оценку, предлагая масштабируемость, согласованность и экономию ресурсов

Применение в верификации разметки:

  • LLM Judge полезен для проверки качества разметки данных, которая используется для обучения моделей. Например:

Проверка согласованности:

  • Если несколько экспертов разметили данные, LLM Judge может выявить противоречия между их оценками
  • Вы можете делать проверку разными моделями или с разными промптами (например подставляя разные few-shot примеры, разные версии инструкции и т.д.)

Масштабируемость:

  • Проверка тысяч примеров за считанные минуты

Нюансы языка:

  • LLM Judge может не заметить тонкие смысловые оттенки или сарказм, где требуется человеческое понимание, или нюансы доменной области.

Рекомендации по использованию:

  • Комбинируйте с human-in-the-loop : Используйте LLM Judge для предварительной проверки, а сложные случаи передавайте экспертам
  • Или наоборот разметку людей проверяйте на согласованность с машинной разметкой
  • Верифицируйте разметку людей с помощью LLM

Например, если модель должна классифицировать текст по эмоциям, LLM Judge проверяет, совпадает ли её вывод с ожидаемой меткой (например, "позитивный" или "негативный").

Настройка через промпты:

Для верификации разметки критерии оценки формулируются в виде инструкций внутри промпта. Например:

  • "Оцени, соответствует ли метка 'спам' содержанию письма. Ответь 'Да' или 'Нет'."

Это позволяет LLM Judge действовать как "судья", принимающий решения на основе контекста

Разные LLM могут давать противоречивые оценки из-за различий в обучении

Тестируйте разные LLM: Например, GPT-4 или Claude могут показывать более высокую точность в оценке, чем менее мощные модели

Дорабатывайте промпты: Четко формулируйте критерии и примеры, чтобы минимизировать ошибки

Селективные задачи

Более сложный и трудоемкий как по разметке, так и по верификации разметки тип задач - селективные задачи.

Селективная задача при разметке данных подразумевает выборочное выделение определённых элементов данных в процессе аннотирования.

для текстов такую задачу называют еще span-extraction или спан-экстракцией. Тут надо выделить из текста отдельные куски. А на изображении например выделить отдельные области.

В селективных задачах текст выделяется как он есть, без перефразировок и адапатции.

Вот примеры селективных задач (span-extraction) в сфере NLP, где требуется выделение определённых фрагментов текста:

Примеры селективных задач

Извлечение именованных сущностей (Named Entity Recognition, NER)

Описание: Выделение из текста именованных сущностей, таких как имена людей, организации, даты, географические названия и т.д.

Пример:

  • Вход: "Компания Apple объявила о выпуске нового iPhone 15 на конференции в Калифорнии 12 сентября 2023 года."
  • Выход:
    • ORG (организация): "Apple"
    • PRODUCT (продукт): "iPhone 15"
    • LOC (локация): "Калифорния"
    • DATE (дата): "12 сентября 2023 года"

При этом все метки

  • ORG (организация)
  • PRODUCT (продукт)
  • и др.

Заранее заданы и известны разметчикам. Они знают что они ищут, как это может выглядеть и т.д.

Но даже уже здесь могут быть сложности

  • Магазин зоотоваров ДРУЖОК. Что здесь сущность ORG?
    • Только ДРУЖОК?
    • или все вместе Магазин зоотоваров ДРУЖОК?
    • никто не знает где правда. И это надо объяснять в инструкции для разметчиков, показывать им примеры.
    • потому что если каждый поймет по-своему и часть примеров такого типа будет сделана одним способом, часть другим, то и модель этот навык не освоит. При обучении модели она будет “шуметь” - выдавать случайным образом разметку на данных такого типа. А если это вы делаете тестовые данные, то конечные цифры будут не корректны.
  • А еще есть множество многозначных слов и терминов
    • Вашингтон – столица США.
    • Джордж Вашингтон – первый президент США.
  • А еще могут быть сущности вложенные в сущности: Средне уральский университет Российской Федерации имени Б.Н. Ельцина тут и ORG, и PER, и LOC

Как правильно разметить?

Никто не знает как правильно. Правильно так - как вы сможете это раскрыть в своей инструкции и показать на примерах, чтобы все разметчики делали это единообразно (согласованно и консистентно).

Извлечение ключевых фраз (Keyphrase Extraction)

Описание: Выделение важных частей текста, которые передают основную информацию.

Пример:

  • Вход: "Машинное обучение — это раздел искусственного интеллекта, который позволяет компьютерам учиться на данных без явного программирования. Основные методы включают регрессию, классификацию и кластеризацию."
  • Выход:
    • "машинное обучение"
    • "искусственный интеллект"
    • "регрессия"
    • "классификация"
    • "кластеризация"

Ответы на вопросы (Extracting Question Answering, QA)

Описание: Поиск точного ответа на вопрос в предложенном тексте (span-extraction).

Пример:

  • Вопрос: "Когда была основана компания Apple?"
  • Контекст: "Apple Inc. была основана Стивом Джобсом, Стивом Возняком и Рональдом Уэйном 1 апреля 1976 года в Купертино, Калифорния."
  • Выход: "1 апреля 1976 года"

Извлечение отношений (Relation Extraction)

Описание: Выделение пар сущностей и их отношений в тексте.

Пример:

  • Вход: "Билл Гейтс является основателем компании Microsoft."
  • Выход:
    • Сущность 1: "Билл Гейтс"
    • Отношение: "является основателем"
    • Сущность 2: "компании Microsoft"

Извлечение событий (Event Extraction)

Описание: Выделение событий и их участников из текста.

Пример:

  • Вход: "Конференция по искусственному интеллекту состоится в Москве 15 октября 2023 года. Ожидается участие экспертов из Google, IBM и Microsoft."
  • Выход:
    • Событие: "конференция"
    • Дата: "15 октября 2023 года"
    • Место: "Москва"
    • Участники: "Google", "IBM", "Microsoft"

Извлечение временных интервалов (Temporal Expression Extraction)

Описание: Выделение временных меток или интервалов из текста.

Пример:

  • Вход: "Проект должен быть завершён к концу следующего месяца, а презентация состоится 15 ноября 2023 года."
  • Выход:
    • Временной интервал 1: "к концу следующего месяца"
    • Дата: "15 ноября 2023 года"

Извлечение цитат (Quote Extraction)

Описание: Выделение цитат и их авторов из текста.

Пример:

  • Вход: "Как сказал Альберт Эйнштейн: 'Воображение важнее знаний'."
  • Выход:
    • Автор: "Альберт Эйнштейн"
    • Цитата: "'Воображение важнее знаний'"

Извлечение причинно-следственных связей (Causality Extraction)

Описание: Выделение причин и следствий из текста.

Пример:

  • Вход: "Из-за сильного дождя дороги были затоплены, что привело к отмене футбольного матча."
  • Выход:
    • Причина: "сильный дождь"
    • Следствие: "дороги были затоплены"
    • Дополнительное следствие: "отмена футбольного матча"

Извлечение семантических ролей (Semantic Role Labeling, SRL) Описание: Выделение участников события и их ролей в предложении.

Пример:

  • Вход: "Мария купила книгу в магазине за 500 рублей."
  • Выход:
    • Агент (Agent): "Мария"
    • Действие (Action): "купила"
    • Объект (Object): "книгу"
    • Место (Location): "в магазине"
    • Цена (Price): "за 500 рублей"

Извлечение слотов для диалоговых систем (Form Filling/Slot Filling)

Описание: Выделение значимых частей текста для использования в диалоговых системах.

Пример:

  • Вход: "Я хочу забронировать билет на самолет из Москвы в Париж на 20 октября."
  • Выход:
    • Отправление (Departure): "Москвы"
    • Назначение (Destination): "Париж"
    • Дата (Date): "20 октября"

Извлечение данных из документов (Document Information Extraction)

Описание: Выделение структурированных данных из неструктурированных текстов, например, из счетов, писем или контрактов.

Пример:

  • Вход: "ИНН: 1234567890, ООО 'Ромашка', адрес: г. Москва, ул. Ленина, д. 10, тел.: +7 (495) 123-45-67."
  • Выход:
    • ИНН: "1234567890"
    • Название организации: "ООО 'Ромашка'"
    • Адрес: "г. Москва, ул. Ленина, д. 10"
    • Телефон: "+7 (495) 123-45-67"

Кратко

Селективные задачи в NLP требуют точного выделения фрагментов текста (спанов), которые несут конкретную информацию. Эти задачи широко применяются в различных областях, но разметить данные тут существенно сложнее, чем в дискриминативных задачах.

Для верификации разметки в селективных задачах (например, извлечение именованных сущностей, ключевых фраз, ответов на вопросы) необходимо комбинировать автоматические методы, ручную проверку и статистический анализ.

Также для спан задач не только верификацию но и разметку имеет смысл проводить с перекрытием. И например итоговую разметку сводить как объединение или пересечение выделенных спанов разными разметчиками на одном и том же примере.

Такой подход должен выясняться на пилотной разметке или на начальных задачах основной разметки, когда разметка делается с перекрытием минимум 3 и далее считается согласованность по первым 100 примерам.

Верификация селективных задач

Разметку такого типа задач надо делать с помощью специальных платформ и инструментов, в excel или google docs это делать очень не удобно.

Для каждого выделенного спана надо знать начало и конец - с какого символа спан начинается, на каком символе текста заканчивается, какая метка у этого спана. Т.к. спаны могут быть разных типов.

Автоматическая проверка согласованности разметки

  • Методы оценки межэкспертного согласия

    • Используйте коэффициенты Каппа Коэна или Флетта для измерения согласованности между разметчиками. Например, если два аннотатора выделяют разные спаны для одного и того же текста, это указывает на неоднозначность в руководстве по разметке.
  • Пример:

    • Для задачи NER низкий коэффициент Каппа (<0.6) может сигнализировать о необходимости уточнения правил выделения сущностей (например, включать ли предлоги в спаны).

Сравнение с "золотым стандартом"

  • Эталонные данные Создайте эталонный набор данных, размеченный экспертами с высокой точностью. Сравните текущую разметку с этим стандартом, используя метрики по каждому типу спанов:

    • Precision (точность): доля корректно выделенных спанов.
    • Recall (полнота): доля найденных эталонных спанов.
    • F-score (среднее гармоническое).
  • Пример:

    • В задаче извлечения ключевых фраз эталонный датасет может содержать 50 текстов с разметкой, где F1-score <0.8 требует перепроверки инструкции и понимания разметчиками задачи.

Ручная проверка краевых случаев

  • Анализ спорных примеров Выделите тексты, где разметчики не согласны, или модель показывает низкую уверенность. Например:
    • Сложные синтаксические конструкции.
    • Многозначные слова (например, "Apple" как компания и фрукт).
    • Вложенные сущности ("Москва, Россия" — город и страна).
  • Инструменты: Используйте платформы вроде Tagme или Label Studio, где можно визуализировать разметку и вносить правки.

Статистический анализ размеченных данных

  • Проверка распределения сущностей
    • Сравните частоту выделенных спанов с ожидаемой.
    • Например:
    • Если в корпусе 80% сущностей относится к категории "ORG", а остальные 20% — к "PERSON", резкое отклонение (например, 50/50) может указывать на ошибки.
  • Анализ длины спанов
    • Слишком короткие (1 слово) или длинные (10+ слов) спаны требуют проверки на аномалии.

Перекрестная валидация с моделями машинного обучения

  • Обучение модели на размеченных данных
    • Если модель, обученная на разметке, показывает низкое качество (например, F1 <0.65), это может быть признаком некачественной разметки.

Для спан экстракции хорошо подходят модели типа BERT и имея несколько сотен размеченных примеров уже можно обучить BERT модель и посмотреть насколько хорошо она обучится на этих данных. Проверка качества может проводиться тут через кросс-валидацию (Это способ обучить модель на части данных, а на оставшихся данных проверить, что модель хорошо работает. И так сделать на 10 разных разбиениях данных на обучающую или тестовую часть.)

  • Анализ ошибок модели
    • Проверьте примеры, где модель ошиблась.
    • Например:
    • Пропущенные сущности.
    • Ложные срабатывания (например, выделение "123" как даты вместо номера телефона).

Проверка логической непротиворечивости

  • Связность выделенных элементов

    • Убедитесь, что спаны соответствуют контексту. Например:
    • В задаче извлечения отношенийпара "Стив Джобс — основатель Apple" должна быть корректной.
    • В ответах на вопросы спан должен быть строго внутри контекста.
  • Пример:

    • Если в тексте указано "Конференция состоится в Москве", спан "Москве" должен относиться к категории "LOC", а не "ORG".

Использование автоматизированных скриптов

  • Валидация формата разметки
    • Проверьте, соответствует ли разметка формату (JSON, XML, BIO). Например:
    • Отсутствие пересекающихся спанов.
    • Корректность тегов (например, закрывающий тег </ORG> после открывающего <ORG>, если вы используете такой формат разметки).

Задача конвертации форматов и валидации результата может возникнуть и часто возникает на пост-процессинге. Например с TagMe, вы выгружаете JSON, а для обучения модели LLM или иной, вам требуется формат части данных XML или вставка в текст тегов и т.д.

Генеративные задачи

  • самый сложный и неудобный для разметки тип задач.
  • к таким задачам может относиться очень много что, например ответы на вопросы в свободной форме, абстрактивная суммаризация текста (т.е. извлечение из текста основного смысла и пересказ его своими словами), навешивание на текст меток, тегов, тематик,

Основные принципы

  • Дискриминативные задачи решаются быстрее и проще всего.
  • Дискриминативные задачи верифицируются быстрее и проще всего.
  • Где можно сводите задачу к дискриминативной
  • Где можно сводите задачу к селективной, если не получится свести к дискриминативной
  • Если все таки задача не сводится и нужна генерация
    • постарайтесь найти готовые данные и уже из них или что-то отобрать/отфильтровать (дискриминативная задача)
    • или из найденных и отфильрованных данных что-то выбрать - сведя к селективной задаче
  • И если все-таки источника с готовыми данными для парсинга, выгрузки, скачивания нету - сгенерируйте данные LLMками
  • Синтетическая генерация данных поможет вам в 90% случаев.

Те основная задача стараться не решать генеративные задачи.

  • Или что-то парсим, скачиваем, нарезаем.
  • Или генерируем LLMками
  • А затем уже выбираем хорошее/фильтруем
  • При выборе мы используем
    • автоматизацию скриптами
    • LLM judje
    • и только потом отбор руками через дискриминативну/селективную задачу

Генерация синтетических данных

Синтетическая генерация текстовых данных — это создание искусственных текстов, имитирующих реальные, для решения задач обучения, тестирования и улучшения моделей языкового моделирования (LLM). Этот подход особенно актуален, когда реальные данные недостаточны

Использование предобученных LLM

  • Крупные языковые модели (например, GigaChat, ChatGPT, DeepSeek и др.) генерируют тексты на основе заданных параметров (длина, тематика, стиль)
  • Расширение данных: Синтетические данные решают проблему нехватки реальных примеров и позволяют свести задачу уже только к отбору лучших примеров из множества сгенерированных.
  • Вы можете генерировать данные имея всего несколько десятков образцов того чего вы хотите и подготовленную инструкцию-промпт для LLM.

Также вы можете генерировать данные имея только часть или половину данных.

LLM отлично справляются с задачами типа

  • поставить вопросы к тексту
  • придумать ситуацию к заданным вводным
  • придумать диалог с заданными параметрами
  • суммаризировать текст
  • придумать заголовки
  • выделить из текста данных
  • и др.

Аугментация данных

  • Модификация реальных текстов через замену слов, добавление шума или перефразирование.
  • Пример:
    • Замена синонимов в предложениях для увеличения разнообразия обучающей выборки

Балансировка классов: Генерация редких или экстремальных сценариев (например, кризисные сообщения для чат-ботов)

Безопасность: Создание из анонимизированных данных реалистичные данные с пероснальными значениями

Гораздо проще найти или сделать руками 10-20 примеров как надо, написать промпт, сгенерировать 2000 примеров LLM, из них отобрать 1000 примеров, чем придумывать 1000 примеров.

Основные типы генеративных задач

Абстрактивная суммаризация

Описание: Создание краткого содержания текста своими словами, включая переформулировку и генерацию новых предложений, которые могут отсутствовать в исходном тексте.

В отличие от экстрактивной суммаризации (извлечение ключевых предложений), абстрактивная требует "понимания" текста и генерации нового текста в нужном формате, виде.

Перефразирование

Передача смысла текста иными словами без потери информации, но с приобретением нужной формы. Используется для рерайтинга, упрощения или адаптации текста.

Примеры:

  • перескажи текст короче
  • перескажи текст более художественно
  • перефразируй вопрос пользователя в юридических терминах.

Назначение тегов

Маркировка текста метками (тегами) для категоризации или анализа. Особенность в том что заранее готового списка меток нет и их надо определять по месту.

Примеры:

  • Текст:
    • "Новая коллекция Zara уже в продаже! Скидки до 50% на летние платья."
  • Теги:
    • мода, распродажа, Zara, лето2024.

Такие теги могут генерироваться автоматически (например, с помощью LLM) и потом фильтроваться или только добавляться вручную

Ответы на вопросы

Генерация точных ответов на основе контекста или знаний модели. Задача связана с пониманием текста и извлечением релевантной информации

Это применяется в чат-ботах, виртуальных ассистентах, системах поддержки.

Диалог в чате

Генерация естественных ответов в интерактивных системах (чат-боты, голосовые помощники). Требует учёта контекста, эмоций и предыдущих сообщений

Примеры диалогов также хорошо могут генерироваться LLM на основе вводных параметров диалога. LLM обучены поддерживать связные диалоги, адаптируя стиль под пользователя.

Еще варианты генеративных задач, которые хорошо решают LLM:

  • Машинный перевод - преобразование текста с одного языка на другой с сохранением смысла
  • Генерация текста по ключевым словам
  • Креативное письмо - генерация ситуаций, художественных текстов (рассказы, стихи, сценарии)
  • Генерация заголовков
  • Продолжение истории
  • Создание описаний продуктов или объектов
  • Генерация вопросов
  • Редактирование текста

Верификация генеративной разметки

Генеративные задачи (например, суммаризация, диалог, перефразирование) требуют особого подхода к валидации и верификации разметки, так как выходные данные не ограничиваются жесткими метками, а предполагают творческий или контекстно-зависимый вывод.

И верификацию таких данных делать сложно. И менее удобно чем для задач дискриминативных и селективных.

Бинарная верификация

Самое простое что тут может быть - это верификация в виде задачи бинарной классификации что пример сделан хорошо (те у нас две метки хорошо и плохо, т.е. принять или не принять пример. И такую верификацию можно делать с перекрытием 3.

И как в обычной бинарной верификации мы можем считать процент согласованности разметчиков, коэффициент Каппа.

Статистический анализ данных

В некоторых случаях можно провести статистический анализ. Например если вы ставили метки на тексты.

Проверка распределения: Убедитесь, что метки (например, теги, категории) распределены реалистично. Аномалии (например, 90% текстов с одной меткой) требуют коррекции.

Анализ длины текстов:

  • Гистограммы длин входных и выходных текстов помогают выявить выбросы (например, суммаризации длиннее исходного текста)

Использование LLM для проверки

Пример:

  • Задача: генерация ответов на вопросы .
  • Метод: LLM проверяет, соответствует ли сгенерированный ответ исходному контексту.
  • И как в LLM Judge можно использовать несколько запусков LLM - с разной температурой, промптами, моделями и др.
  • Тексты с низкой уверенностью LLM (например, вероятность подтеврждающей генерации <0.4).

Оценка качества через метрики

Метрики для генеративных задач:

  • BLEU, ROUGE: Для сравнения с эталонными текстами (например, суммаризация).
  • Perplexity: Оценка "уверенности" LLM в генерации (нижние значения лучше)
  • BERT-score - вычисление векторной близости к эталонной генерации

Но это потребует подготовки золотого стандарта на каком-то количестве данных.

Краткое резюме

Итого, проект разметки включает в себя несколько этапов, что в сумме будет иметь несколько разных ТЗ и инструкций для разных целевых пользователей.

Разметка будет проводиться в несколько этапов в инструменте разметки и потребуется собрать несколько разных интерфейсов разметчика.

Нескольких этапов выгрузки, преобразования и валидации данных.

И если что-то идет не так - это может повторяться в цикле несколько раз.

И очень важно проектировать структуру целевого датасета по параметрам - репрезентативность, диверсификация, сбалансированность.

А также продумывать метрики контроля и валидации данных.

Еще раз общий список шагов может быть примерно таким.

  1. Структурируйте процесс
    • Определите цели проекта
    • Напишите ТЗ с формализацией задачи и бизнес примерами
    • Подберите источники для сбора сырых данных
    • Определите порядок и проведите предобработку данных.
    • Разработайте ТЗ для инженера платформы разметки (интерфейс, метрики, ханипоты, валидаций, форматы выводы, требования к диверсификации и балансам) с учётом типа задачи (дискриминативная, селективная, генеративная).
    • Подготовьте инструкцию для разметчиков и тестовый экзамен
    • Проведите пилотную разметку
    • Проведите основную разметку
    • Проведите аннотацию, верификацию и анализ качества на основе части основной разметки
    • Итеративные циклы доработки для обеспечения репрезентативности, сбалансированности и диверсификации данных.
  2. Упрощайте где можно задачи сводя к более простому типу - возможно разбейте задачу на несколько этапов. Если нужна генерация, то возможно надежнее будет сделать этапы: фильтрация, экстракция, синтетическая генерация, бинарная верификация
    • Типы задач:
    • Дискриминативные : Классификация (бинарная, многоклассовая, мультилейбловая). Проще всего для разметки и верификации.
    • Селективные : Выделение спанов (NER, извлечение ключевых фраз, ответов на вопросы). Требуют точности и согласованности между разметчиками.
    • Генеративные : Самые сложные (суммаризация, диалоги, творческие тексты). Рекомендуется минимизировать, используя синтетические данные (LLM) и последующую фильтрацию.
  3. Проектируйте на входе и следите за качеством данных
    • Репрезентативность : Данные должны отражать реальное распределение явлений.
    • Баланс : Избегайте доминирования классов, если это не соответствует целям.
    • Диверсификация : Разнообразие источников, стилей, жанров и контекстов.
  4. Обязательно проводите верификацию
    • Измеряйте межэкспертное согласие (коэффициент Каппа).
    • Закладывайте ханипоты и делайте сравнение с «золотым стандартом» (эталонными данными).
    • Где можно используйте автоматизацию: Использование LLM как «судьи» для проверки логичности и соответствия критериям.
  5. Используйте специализированные инструменты и платформы разметки данных
    • Специализированные платформы (Label Studio, TagMe) упрощают разметку и контроль.
    • Итеративный подход: Пилотные тесты, анализ ошибок и повторная разметка — норма для достижения качества.
    • Разбиение задачи на несколько этапов разметки и верификации это норма. Чтобы сделать одну разметку - вам может понадобиться несколько внутренних подпроектов разметки и верификации.
  6. Подготовка ТЗ. Когда готовите задания на каждый из этапов разметки нужно определить и описать в виде ТЗ:
    • Задача разметчика на этом этапе
    • Какие входные данные, с чем разметчику нужно будет работать
    • Как должен выглядеть интерфейс для этой задачи. Никаких «у вас есть таблица, вы ее заполняете», в идеале нужно мыслить категориями шаблонов инструмента, например TagMe и возможных элементов интерфейса, в приближенном к идеалу мире просто понимать какие бывают поля и формы: разметчики должны выбрать варианты да/нет из списка, разметчики должны заполнить текстовое поле, разметчики должны выделить в тексте слова и так далее
    • Примеры данных
    • Инструкция для разметчиков на основе реального интерфейса собранного проекта разметки
    • Информация о контроле качества
      • С каким перекрытием выполняется задача
      • Какая логика подсчета согласованности/качества. Неплохо бы знать имеющиеся на платформе алгоритмы, чтобы иметь представление о том, что на платформе можно накостылять. Это сложный момент, но вообще никак в ТЗ не оговаривать нельзя. На крайний случай мы можем оценивать качество и согласованность пост-фактум, используя собственные методы, просто это не будет отображаться на платформе.
    • Контрольные задания:
      • Для обучения и экзамена - сколько и какие.
      • Для ханипотов и верификации - сколько и какие
    • Формат выгрузки подготовленных данных: JSON, XML - какая структура объектов в итоговых файлах

Часто используемые метрики для оценки и сравнения данных

Процент согласия (Percent Agreement)

  • Самый простой метод: доля случаев, где разметчики пришли к одинаковому результату.
  • Пример: Если 80 из 100 задач размечены одинаково, процент согласия = 80%.
  • Ограничение: Не учитывает случайное совпадение оценок.

Коэффициент согласия Каппа или его модификация Альфа Криппендорфа (Krippendorff’s Alpha)

  • Улучшенная метрика, учитывающая случайное согласие и работающая с любыми типами данных (номинальные, порядковые, интервальные).
  • Преимущество: Устойчива к пропускам в данных.

F-мера (F1-Score)

  • Гармоническое среднее точности (precision) и полноты (recall).
  • Применение: Для задач классификации, где важны баланс между ошибками первого и второго рода.
  • Макро/Микро F1-Score - для многоклассовой классификации.

Матрица ошибок (Confusion Matrix)

  • Таблица, показывающая соотношение истинно положительных, ложноположительных, истинно отрицательных и ложноотрицательных результатов.
  • Преимущество: Позволяет визуализировать ошибки и анализировать их типы.

ROC-AUC

  • Метрика, оценивающая качество бинарной классификации через площадь под кривой ошибок (ROC).
  • Применение: Для задач с несбалансированными классами и наличии голдовой разметки

Коэффициенты корреляции и ранговой корреляции

  • Корреляция Пирсона - для оценки согласованности числовых данных.

  • Тау Кендалла или корреляция Спирмена .

    • Для оценки согласованности порядковых оценок (например, оценки в баллах или иных порядковых шкалах).

Доля полного совпадения (Exact Match, EM)

  • Метрика, которая считается успешной только при полном совпадении разметки между всеми аннотаторами.
  • Пример: В задаче определения иронии в тексте EM = 0.99 означает, что 99% разметок совпали.

Метрики на основе расстояний

  • Например, Евклидово расстояние или расстояние Махаланобиса
  • Применение: Для задач, где разметка имеет числовые или многомерные признаки (например, определение степени схожести текстов).

Метрики на основе близости векторов-эмбеддингов для текстов

  • Косинусная близость
  • BERT-score

Хороших вам разметок!

Если у вас есть задачи по созданию текстовой разметки, то вы можете написать нам.