3,583 papers
arXiv:2610.03324 73 2 окт. 2026 г. FREE

Определения и декомпозиция в классификации: «добавь критерии и разбей на вопросы» редко улучшает результат

КЛЮЧЕВАЯ СУТЬ
Добавил в промпт подробное определение нарушения — и 28% решений поменялись, а точность осталась на месте. Статья про модерацию языка вражды проверила два привычных приёма классификации: вставить правило и разбить решение на вопросы. Это не новая техника, а способ за вечер понять, помогают ли эти приёмы именно вам. Фишка: определение двигает ответы, но не обязательно в сторону вашей разметки. Улучшение нашлось примерно в трети сравнений, ухудшение — в стольких же. Метод даёт возможность сравнить два промпта на 100–200 размеченных примерах и выбрать по цифрам, а не по ощущениям.
Адаптировать под запрос
⚡

TL;DR

Исследование HateDecide проверяет два привычных приёма при классификации текстов по правилам: вставить определение нарушения в промпт и разбить решение на несколько вопросов (например, «есть ли мишень?» и «есть ли оскорбление?»), а вердикт собрать по фиксированной формуле. Обе идеи звучат разумно, и обе работают нестабильно.

Главная находка: определение сильно меняет ответы (до 28% решений меняются), но не делает их точнее. Улучшение есть примерно в трети сравнений, ухудшение — в стольких же. Разбивка на вопросы значимо помогает в одной пятой случаев, а вредит почти в двух пятых. Лучшей модели на одном наборе данных нет гарантии быть лучшей на другом. Классификатор, обученный на одном наборе, на другом теряет до 54 пунктов качества.

Практический вывод: не считай, что подробные критерии и больше вопросов = лучше. Прогони оба варианта промпта на 100–200 своих размеченных примерах и выбери по цифрам. Дешёвая специализированная модель на хорошо подобранной задаче может отстать от топовой всего на 1,6 пункта при цене на 97% ниже.


🔬

Схема метода

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

ВАРИАНТ A (прямой):
  Текст + вопрос + варианты ответа [+ определение] → один вердикт

ВАРИАНТ B (декомпозиция):
  Текст + вопрос 1 (мишень?) → да/нет
  Текст + вопрос 2 (оскорбление?) → да/нет
  Фиксированное правило: вердикт = ответ 1 И ответ 2

СРАВНЕНИЕ: прогнать A и B на одних и тех же текстах с разметкой
           → считать среднюю точность по обоим классам поровну (macro-F1)
           → смотреть, сколько решений изменилось и в какую сторону

Шаги B можно делать в одном запросе или в отдельных. В исследовании каждый вопрос задавали отдельно.


🚀

Пример применения

Задача: Вы ведёте сообщество интернет-магазина в Telegram и VK. Каждый день приходят сотни комментариев. Нужно автоматически помечать те, что нарушают правило «унижение по признаку возраста, пола, национальности, религии». Вы не знаете, что лучше: длинное определение в одном промпте или два коротких вопроса с формулой.

Промпт (вариант B, декомпозиция):

Ты помогаешь модерировать комментарии в сообществе интернет-магазина.

Правило сообщества: нарушением считается комментарий, который унижает человека или группу из-за возраста, пола, национальности, религии или другого неизменяемого признака. Критика сервиса, курьеров или товара без привязки к такому признаку нарушением не является. Цитирование чужих оскорблений с осуждением — не нарушение.

Комментарий: «Бабки за рулём — зло, опять встали на светофоре и перекрыли всем проезд к пункту выдачи»

Ответь на два вопроса отдельно. На каждый — только «да» или «нет».

Вопрос 1 (мишень): комментарий направлен на человека или группу по признаку возраста, пола, национальности, религии?
Вопрос 2 (оскорбление): комментарий выражает презрение, унижение или враждебность?

Ответ в формате:
Q1: да/нет
Q2: да/нет

Вердикт считаете сами: нарушение, только если Q1 = да И Q2 = да.

Для сравнения запускаете тот же комментарий прямым промптом: правило + «Это нарушение? Ответь: нарушение / не нарушение». Так прогоняете 100–200 комментариев, которые уже разметил модератор.

Результат: Для каждого комментария у вас будут два вердикта, A и B. Вы увидите, на скольких они расходятся, и сравните оба варианта с разметкой модератора. Часть расхождений окажется ошибками B, часть — исправлениями. Если B не лучше A, оставляйте простой промпт. Он дешевле и быстрее.


🧠

Почему это работает

Слабость LLM. Модель не «читает правила» как юрист. Подробное определение она воспринимает как ещё один контекст, который сдвигает ответ, но не обязательно в сторону разметки. В исследовании определение меняло до 28% решений. При этом точность относительно эталонной разметки в среднем не росла. Разметка людей может расходиться с формальным определением, и модель, строго следуя тексту, начинает расходиться с разметкой.

Сильная сторона. Модель хорошо отвечает на узкие вопросы с вариантами «да/нет». Для слабых моделей это помогает. Маленькая модель на одном из наборов данных, которая почти всё помечала как нарушение, после разбивки на вопросы резко улучшилась (на 35,8 пункта). У сильных коммерческих моделей, наоборот, разбивка чаще слегка вредила.

Что из этого следует. Метод — не «всегда разбивай», а «проверяй на своей выборке». Рычаги управления промптом такие: - Определение — добавляй или убирай и смотри, не меняются ли решения в нужную сторону. Если решений меняется много, а точность не растёт, определение просто шумит. - Число вопросов — чем больше вопросов, тем больше шансов ошибиться на каждом и тем дороже решение. Начни с двух-трёх. - Формула сборки — «И», «ИЛИ», вложенные условия. Чем сложнее формула, тем выше риск, что ошибка одного вопроса испортит весь вердикт. - Размер модели — слабым моделям декомпозиция может помочь, сильным чаще нет.


📋

Шаблон промпта

Сначала прямой вариант (A), потом декомпозиция (B). Запускайте оба на одних и тех же текстах.

=== ВАРИАНТ A (прямой) ===

Задача: {задача_классификации}

Определение / правило: {определение}   ← можно убрать для проверки без определения

Текст: {текст}

Варианты ответа: {вариант_1} / {вариант_2}
Ответь только одним вариантом.


=== ВАРИАНТ B (декомпозиция) ===

Задача: {задача_классификации}

Определение / правило: {определение}

Текст: {текст}

Ответь на каждый вопрос отдельно, только «да» или «нет».

Вопрос 1 ({название_критерия_1}): {формулировка_вопроса_1}
Вопрос 2 ({название_критерия_2}): {формулировка_вопроса_2}

Формат ответа:
Q1: да/нет
Q2: да/нет

Правило сборки (применяешь ты, не модель): {вердикт} = Q1 И Q2

Что подставлять: - {задача_классификации} — что ищем: нарушение правил, жалоба, спам и так далее. - {определение} — правило сообщества или политика вашими словами, с исключениями. - {текст} — комментарий, отзыв, обращение. - {название_критерия} и вопросы — разбейте определение на независимые условия. Например, «адресат» и «оскорбление». - Правило сборки пишите по определению: «И», «ИЛИ» или вложенное условие.

🚀 Быстрый старт — вставь в чат:

Вот шаблон сравнения прямого и декомпозированного промпта для классификации. Адаптируй под мою задачу: {опиши, какие тексты и по какому правилу ты классифицируешь}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

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


⚠️

Ограничения

⚠️ Один домен и один язык: всё проверено на классификации языка вражды в английских текстах. Для других типов правил (спам, юридические риски, токсичность в русском) вывод может отличаться, это нужно проверять самому.

⚠️ Ответы без рассуждений: коммерческие модели отвечали строгим форматом без объяснений. Что будет, если дать им «подумать вслух» перед ответом, исследование не проверяло.

⚠️ Вопросы писали авторы вручную: формулы сборки и формулировки вопросов составлены исследователями по документации наборов данных. Другая разбивка могла бы дать другой результат.

⚠️ Определение и описания меток подавались вместе: эффект «определения» на деле эффект целого пакета инструкций, а не отдельной фразы.

⚠️ Часть инструментов — не для чата: большинство «структурированных моделей» из статьи требуют API или локального запуска. Вывод про определения и декомпозицию применим в любом чате, а сравнение стоимости — нет.

⚠️ Согласие с разметкой ≠ следование правилу: авторы сами оговаривают, что совпадение с разметчиками не доказывает, что модель применяет именно ваше определение.

⚠️ Фрагмент статьи: в имеющемся тексте оборвались результаты по трёхклассовой задаче и атрибутам, поэтому они не разобраны.


🔍

Как исследовали

Исследователи взяли четыре набора данных с разными определениями языка вражды: тексты, написанные специально чтобы обмануть классификаторы, комментарии из соцсетей, посты из Twitter и Gab, и набор тестовых ситуаций вроде угроз и цитирования оскорблений с осуждением. Всего оценивали около 13 тысяч текстов. Сравнивали десять моделей и конфигураций: шесть «структурированных решающих» моделей, две коммерческие LLM, специализированную модерационную модель и классификатор без обучения под задачу. Отдельно обучили два классических классификатора как точку отсчёта.

Каждый тест был парным: одни и те же тексты, одна и та же модель, меняется только одно условие (определение есть или нет, прямое решение или декомпозиция). Различия оценивали повторной выборкой тестового набора 10 тысяч раз и жёсткой поправкой на множественные сравнения. Поэтому «значимо» здесь означает действительно значимо.

Результаты оказались неоднородными. Коммерческие модели значимо обошли все решающие модели только на одном наборе. На другом (MHS) специализированная модель Decider обогнала обе коммерческие на 12 пунктов. Слабая маленькая модель (2B) на том же наборе набрала .220, а это хуже, чем если бы она вообще всё помечала как «не вражда» (.431). Определение значимо улучшало результат в 29% сравнений и ухудшало в стольких же. Декомпозиция значимо улучшала в 20% и ухудшала примерно в 37%. Наконец, у одной коммерческой модели на HateXplain охват был 94%, но точность всего 49%: она ловит почти всё, но половина помеченного — ложные срабатывания. Для практики это значит: на каждой новой задаче проверяйте не только общую точность, но и баланс «поймал» и «ложно поймал».


📄

Оригинал из исследования

В доступном фрагменте нет текстов промптов (определения вынесены в Приложение A). Есть правила сборки вердикта из Таблицы 2:

Dynamic:     Hate if Intent ∧ (support ∨ (scope ∧ hostile))
MHS:         Hate if Targeting ∧ abuse
HateXplain:  Hate if Targeting ∧ abuse
HateCheck:   Hate if Targeting ∧ abuse (same target)

(∧ = AND, ∨ = OR;
 hostile = animosity, derogation, dehumanization или threatening;
 support = выбрана категория «support»)

Контекст: исследователи составили вопросы и правила вручную из документации каждого набора данных. Для трёх наборов формула одинаковая («мишень И оскорбление»). Для Dynamic она сложнее, и именно сложная формула даёт больше точек отказа.


💡

Адаптации и экстраполяции

💡 Адаптация для вашей политики: тот же метод на другой задаче, например на отсеве жалоб клиентов в поддержке.

Задача: определить, требует ли обращение клиента срочной эскалации.

Правило: эскалация нужна, если (клиент называет сумму более 10 000 ₽ И требует возврата) ИЛИ (клиент упоминает суд, Роспотребнадзор или блокировку аккаунта).

Обращение: {текст}

Вопрос 1: названа ли сумма более 10 000 ₽ и есть ли требование возврата? да/нет
Вопрос 2: упоминается ли суд, Роспотребнадзор или блокировка аккаунта? да/нет

Формат: Q1: да/нет, Q2: да/нет

Вердикт: Q1 ИЛИ Q2. Проверьте на 100 уже разобранных обращениях и сравните с прямым вариантом.

🔧 Техника: проверка «определение помогло или нет» → выяснить, не шумит ли оно

Прогоните один и тот же набор текстов с определением и без. Попросите чат посчитать:

Вот два файла: ответы модели без определения и с определением, плюс эталонная разметка модератора.
Посчитай:
1. Сколько решений изменилось?
2. Сколько из изменившихся стали правильными, сколько неправильными?
3. Какова средняя точность по обоим классам поровну до и после?

Если решений изменилось много, а итог не лучше, определение лучше убрать или переписать. Этот приём не из статьи, а вывод из её метода «считать изменённые решения».


🔗

Ресурсы

  • Название: To Jev or Not? Evaluating the Accuracy and Efficiency of Structured Decision Models for Hate-Speech Moderation (HateDecide).
  • Авторы: Demetris Paschalides, George Pallis, Marios D. Dikaiakos — University of Cyprus, Computer Science Department.
  • Наборы данных: Dynamic (Vidgen et al.), MHS, HateXplain, HateCheck.
  • Связанные подходы: гипотезная инженерия и чек-листы (xList-Hate), специализированная модерационная модель CoPE.

📋 Дайджест исследования

Ключевая суть

Добавил в промпт подробное определение нарушения — и 28% решений поменялись, а точность осталась на месте. Статья про модерацию языка вражды проверила два привычных приёма классификации: вставить правило и разбить решение на вопросы. Это не новая техника, а способ за вечер понять, помогают ли эти приёмы именно вам. Фишка: определение двигает ответы, но не обязательно в сторону вашей разметки. Улучшение нашлось примерно в трети сравнений, ухудшение — в стольких же. Метод даёт возможность сравнить два промпта на 100–200 размеченных примерах и выбрать по цифрам, а не по ощущениям.

Принцип работы

Прогони два варианта на одних и тех же текстах. Вариант A: текст, вопрос, варианты ответа, один вердикт. Вариант B: два узких вопроса «да/нет» (например, «есть мишень?» и «есть оскорбление?»), а вердикт собираешь сам по формуле «Q1 И Q2». Дальше смотри на две вещи: насколько совпало с разметкой и сколько решений поменялось. Если решений меняется много, а точность не растёт — приём просто шумит. Рычагов четыре: определение, число вопросов, формула сборки и размер модели. Это как крутить четыре ручки на пульте без шкалы. Без замера на своих данных не поймёшь, какая из них что делает.

Почему работает

Модель не читает правило как юрист. Определение для неё ещё один кусок контекста, который сдвигает ответ, но не обязательно к человеческой разметке. Люди размечали по ощущению, а модель строго следует тексту правила — и они расходятся. Строгое следование определению может уводить модель от разметки людей. Разбивка на вопросы работает по-разному. Слабой модели она помогает: маленькая модель, которая почти всё помечала как нарушение, прыгнула сразу на 35,8 пункта. Сильным коммерческим моделям разбивка чаще слегка вредила. В целом значимо помогла в одной пятой случаев, а навредила почти в двух пятых. Жесть в другом: классификатор, обученный на одном наборе, на другом терял до 54 пунктов. Победитель на одних данных не гарантирует победу на других. И ещё про деньги: дешёвая специализированная модель отстала от топовой всего на 1,6 пункта при цене на 97% ниже.

Когда применять

Модерация и разметка текстов по правилам → особенно когда вы выбираете между длинным определением в одном промпте и несколькими короткими вопросами. Подходит для комментариев, отзывов, обращений, жалоб, спама. Лучше всего работает, если у вас есть хотя бы 100–200 примеров, уже размеченных живым модератором. НЕ подходит, если разметки нет совсем: сравнивать будет не с чем. Выводы проверены только на английском и только на языке вражды. Для русского, спама или юридических рисков результат надо перепроверять. Ответы моделей были без «рассуждений вслух», этот вариант не проверяли.

Мини-рецепт

1. Собери выборку: 100–200 текстов, которые уже разметил человек. Классы должны быть представлены поровну, иначе цифры обманут.
2. Напиши прямой промпт A: правило плюс «нарушение / не нарушение». Это ваша контрольная точка.
3. Разбей правило на два-три вопроса: каждый про одно условие. Не больше трёх, иначе ошибки начнут копиться.
4. Выбери формулу сборки: «И», «ИЛИ» или вложенное условие. Считай её сам, не поручай модели.
5. Прогони оба варианта на одних и тех же текстах. Заодно запусти A без определения, чтобы увидеть, что оно меняет.
6. Считай две цифры: среднюю точность по обоим классам и долю решений, которые разошлись между A и B.
7. Смотри на расхождения: где B исправил ошибку, а где испортил верный ответ. Если B не лучше, оставь простой промпт. Он дешевле и быстрее.
8. Проверь модель подешевле: вдруг она отстаёт на пару пунктов, а стоит в разы меньше.

Примеры

[ПЛОХО] : Вот подробное определение нарушения на полстраницы. Это нарушение? Ответь да или нет. — и вера в то, что чем длиннее правило, тем точнее.
[ХОРОШО] : Правило: нарушение — комментарий унижает человека или группу из-за возраста, пола, национальности, религии. Критика сервиса и курьеров без привязки к признаку — не нарушение. Комментарий: «Бабки за рулём — зло, опять встали на светофоре». Ответь отдельно, только да или нет. Q1 (мишень): комментарий направлен на группу по признаку возраста, пола, национальности, религии? Q2 (оскорбление): комментарий выражает презрение, унижение или враждебность? Вердикт считаешь сам: нарушение, только если Q1 = да И Q2 = да. Тот же комментарий гонишь прямым промптом. Потом сравниваешь оба вердикта с решением модератора на 100–200 примерах.
Источник: To Jev or Not? Evaluating the Accuracy and Efficiency of Structured Decision Models for Hate-Speech Moderation
ArXiv ID: 2610.03324 | Сгенерировано: 2026-10-05 05:21

Концепты не выделены.

📖 Простыми словами

To Jev or Not? Evaluating the Accuracy and Efficiency of Structured DecisionModelsfor Hate-Speech Moderation

arXiv: 2610.03324

Языковая модель — это не юрист, ей плевать на твой регламент. Когда ты пихаешь в промпт простыню с формальным определением нарушения, модель не начинает понимать правила глубже: она просто цепляется за лишний шум. В итоге подробная инструкция меняет до 28% решений, но итоговая точность не растёт вообще. Модель пытается трактовать буквы буквально, пока живые люди в разметке судят по контексту и понятиям.

Это как поставить на фейсконтроль в клуб душного стажёра и вручить ему талмуд правил на 50 страниц. Вместо того чтобы быстро вычислять неадекватов, он начнёт с линейкой замерять ширину штанин, сверяясь с пунктом регламента 4Б. В итоге нормальные люди развернутся и уйдут, а реальный хам просочится внутрь, потому что формально к нему не придерёшься.

В исследовании HateDecide проверили две популярные иллюзии: инъекцию определений в промпт и структурированную декомпозицию — когда решение дробят на подвопросы вроде «есть ли мишень?» и связывают формулой. Итог — полный провал ожиданий. Оба метода работают нестабильно: разбивка на логические ветки только сбивает фокус, а механическая формула лишь суммирует косяки модели на каждом шаге.

Опыт ставили на токсичных комментах, но грабли одинаковы везде: модерация чатов в Telegram, отзывы на маркетплейсах или тикеты техподдержки. Длинный формальный промпт не делает модель умнее, он делает её слепой к нюансам. Пытаться превратить LLM в компилятор кода через обычный текст — верный способ словить галлюцинации на ровном месте, когда безобидную иронию банят, а откровенную грязь пропускают.

Главный вывод: хватит надеяться на текстовые костыли и скармливать сетке юридический bullshit. Громоздкие деревья решений и заумные формулы внутри одного запроса не заменят нормальных примеров в промпте или целевого дообучения. Если многоэтажная инструкция меняет треть вердиктов, но не делает фильтр точнее — ты просто впустую сжигаешь токены.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с