TL;DR
Когда вы даёте LLM список категорий для классификации текста, полнота этого списка критически важна. Неполный список работает хуже, чем вообще никакого. Это нашли исследователи из Университета Юты: они встраивали разные классификаторы в промпт и замеряли, как точно LLM находит закодированный язык в постах TikTok и Bluesky.
Главная находка: LLM с полным классификатором в промпте бьёт LLM без классификатора. Но LLM с неполным классификатором проигрывает даже варианту без классификатора вовсе. Причина: неполный список создаёт слепые зоны — модель видит только категории из списка и пропускает всё, что в него не попало. Это как дать детектору металла инструкцию "ищи железо и медь" — золото пройдёт мимо.
Как метод работает: берёте задачу анализа/классификации → составляете исчерпывающий список всех возможных типов/механизмов → встраиваете в промпт → LLM классифицирует с опорой на полную карту. Результат — точность выше, чем если бы просто попросили "найди всё подозрительное".
Схема метода
ШАГ 1: Составить исчерпывающий классификатор
→ список категорий по МЕХАНИЗМУ (как устроено), не по теме (о чём)
→ категории могут пересекаться (один объект = несколько категорий)
ШАГ 2: Встроить классификатор в промпт
→ перед задачей: "Используй следующие категории..."
→ в одном запросе
ШАГ 3: LLM анализирует текст с опорой на классификатор
→ находит паттерны по каждой категории
→ отмечает какие категории нашлись
Всё выполняется в одном запросе.
Пример применения
Задача: Разобрать отзывы на маркетплейсе (Wildberries/Ozon) и найти косвенные сигналы качества — то, что покупатели пишут между строк, не говоря прямо "товар плохой".
Промпт:
Проанализируй отзыв на товар. Найди косвенные сигналы качества — случаи,
когда покупатель намекает на проблему, не называя её прямо.
Используй эти категории (можно отмечать несколько):
1. Сравнительное занижение — хвалят одно, чтобы скрыть проблему с другим
("цвет норм, зато...")
2. Условная похвала — "для такой цены неплохо" / "если не ждать большего"
3. Умолчание о важном — детально описывают мелочи, обходя главное
4. Метафора замены — "оно делает своё дело" / "справляется как может"
5. Временной якорь — "пока держится" / "посмотрим через месяц"
6. Обратная защита — "главное что не сломалось сразу же"
7. Групповая калибровка — "для этих товаров обычное дело"
8. Эмодзи-нейтрализация — позитивные эмодзи при нейтральном тексте
Отзыв:
[вставить текст]
Для каждого найденного сигнала: укажи категорию, процитируй фрагмент,
объясни что именно выдаёт скрытое недовольство.
Результат: Модель пройдётся по каждой из 8 категорий и укажет конкретные фрагменты текста, которые попадают под каждую. Выйдет структурированный разбор с цитатами и пояснением — не общая оценка "отзыв нейтральный", а точное указание на каждый механизм уклончивости.
Почему это работает
Проблема LLM в задачах классификации: модель генерирует текст, опираясь на то, что было в промпте. Если вы попросили "найди негатив", модель ищет явный негатив. Косвенные сигналы — те, что не похожи на негатив внешне — проходят мимо. Это не ошибка модели, это работа по заданному паттерну.
Почему неполный список хуже нуля: когда вы даёте список из 3 категорий, модель фокусируется на них и перестаёт замечать то, что не вошло. Без списка она использует всё, что знает. С неполным — только кусок. Это эффект "сужения поиска по плохой карте".
Почему работает полный классификатор: он даёт модели явную карту всех возможных паттернов. Модель не держит в голове абстрактное "ищи косвенное" — она сверяется с конкретными механизмами поочерёдно. Это переводит размытую задачу в серию конкретных проверок. Каждая категория — отдельный "детектор".
Рычаги управления: - Детализация категорий — чем точнее описан механизм (с примером), тем лучше работает детектор. "Условная похвала — например 'для такой цены'" > просто "условная похвала" - Разрешение overlap — явно напишите "одна фраза может относиться к нескольким категориям". Это снимает искусственное ограничение - Порядок категорий — самые редкие и нестандартные ставьте ближе к концу: иначе модель устаёт к ним и пропускает - Примеры к каждой категории — 1 пример на категорию резко поднимает точность. Это few-shot внутри классификатора
Шаблон промпта
Проанализируй {текст} на предмет {что ищем}.
Используй следующие категории (можно отмечать несколько для одного фрагмента):
1. {Категория 1} — {описание механизма}. Пример: "{пример}"
2. {Категория 2} — {описание механизма}. Пример: "{пример}"
3. {Категория 3} — {описание механизма}. Пример: "{пример}"
[... все категории]
Текст для анализа:
{текст}
Для каждого найденного случая:
- Категория
- Точная цитата из текста
- Объяснение почему это попадает в категорию
Что подставлять:
- {текст} — что анализируем: отзыв, письмо, пост, переписка
- {что ищем} — цель анализа: косвенный негатив, манипуляции, уклончивость, скрытые условия
- {Категория N} — механизм (КАК устроен паттерн, не о чём он)
- {описание механизма} — 1 предложение о том, как работает этот тип
- {пример} — 1 короткая фраза-иллюстрация
🚀 Быстрый старт — вставь в чат:
Вот шаблон для анализа текста с классификатором. Адаптируй под мою задачу:
{опиши что хочешь анализировать и что искать}.
Задавай вопросы, чтобы заполнить все поля.
[вставить шаблон выше]
LLM спросит какие типы/механизмы включить в классификатор — потому что именно их полнота определяет качество результата. Она поможет составить исчерпывающий список под вашу задачу.
Ограничения
⚠️ Неполный список хуже нуля: если не уверены что список исчерпывающий — лучше не давать никакого. Добавьте категорию "Другое" или явно напишите "если паттерн не попадает ни в одну категорию, опиши его отдельно"
⚠️ Категории по теме не работают: классификатор "наркотики / оружие / насилие" (по ТЕМЕ) слабее, чем "фонетическая замена / метафора / эмодзи-кодирование" (по МЕХАНИЗМУ). Тема устаревает, механизм — нет. При составлении классификатора думайте КАК устроен паттерн, а не О ЧЁМ он
⚠️ Для субъективных оценок не работает: если нельзя чётко описать механизм — категория будет размытой и модель будет угадывать. "Агрессивный тон" — плохая категория. "Императивы без обоснования" — хорошая
⚠️ Слишком длинный список теряет хвост: в экспериментах редкие категории работали хуже. При списке 15+ категорий добавляйте примеры к каждой, иначе дальние строки игнорируются
Как исследовали
Команда собрала 2000 постов из TikTok и Bluesky — там, где люди реально уклоняются от алгоритмической модерации. Два обученных аннотатора вручную разметили каждый пост: есть ли закодированный язык, где именно, какой механизм (по той самой новой таксономии). Согласованность аннотаторов — высокая (Cohen's κ от 0.79 до 0.89), то есть разночтений почти не было.
Дальше взяли три LLM (GPT, Claude, DeepSeek) и прогнали через них одни и те же посты с шестью разными промптами: без классификатора, с четырьмя существующими таксономиями из литературы, и с новой. Модели, классические ML-детекторы (SVM, логрегрессия) и векторные методы — все на одних данных.
Самое интересное: два из четырёх существующих классификаторов показали результат хуже, чем промпт вообще без классификатора. Это не случайность — паттерн повторился на всех трёх LLM. Когда убирали по одной категории из полного классификатора, точность падала при каждом удалении — то есть каждая категория вносила уникальный вклад, не дублирующий остальные. Самый болезненный дроп — при удалении категории "формальные системы кодирования" (ROT13, числовые коды): -3.6% к точности. Именно потому что ни один из конкурентных классификаторов её не включал.
Адаптации и экстраполяции
🔧 Техника: добавить fallback-категорию → поймать то, что не влезло
В конец классификатора добавьте:
X. Другой механизм — паттерн не попадает ни в одну из категорий выше. Опиши его своими словами.Это снимает риск неполного списка. Модель не будет "натягивать" нестандартный случай на ближайшую категорию, а честно покажет слепое пятно.
🔧 Экстраполяция: тот же принцип для аудита бизнес-документов
Принцип "механизм, а не тема" применим к любому аудиту. Например, для анализа договоров:
Вместо категорий "финансовые риски / юридические риски" (по теме) → "двойное толкование / условие без срока / обязательство без субъекта / размытый стандарт качества" (по механизму нечёткости).
Механизм стабилен — в каком бы договоре расплывчатость ни встретилась, детектор её поймает.
Ресурсы
Статья: "Beyond Surface Forms: A Comprehensive, Mechanism-Oriented Taxonomy of Indirect Linguistic Encoding for LLM-Based Coded Language Detection"
Код и данные: https://github.com/hmdfiroozfar/mechanism-oriented-ile-taxonomy
Авторы: Hamid Reza Firoozfar, Mohammadsadegh Abolhasani (University of Utah), Reza Mousavi (University of Virginia), Paul Jen-Hwa Hu (University of Utah)
