TL;DR
Complementary Learning Approach (CLA) — методология для классификации больших объёмов текста, где человек и LLM работают как команда исследователей. Человек размечает небольшую часть примеров, затем LLM пробует классифицировать те же тексты, после чего вы сверяете расхождения и улучшаете промпт. Процесс опирается на Chain-of-Thought (COT) — указание LLM думать пошагово — и Few-Shot Learning (FSL) — предоставление нескольких примеров вместо одного. Итерации продолжаются, пока классификации не совпадут стабильно.
Главная находка: LLM не "галлюцинирует" и не ошибается — она делает ровно то, что вы попросили математической моделью. Если вывод странный, проблема не в "глупости AI", а в недостаточной точности инструкций или в том, что вы сами не до конца формализовали критерии. Когда LLM классифицирует текст не так, как вы, это зеркало для ваших собственных критериев: возможно, ваше определение категории размыто, или вы применяете неосознанный контекст, которого нет в промпте. Исследование показывает, что люди подвержены когнитивным рамкам, скрытым предубеждениям, усталости — а LLM при правильном промпте работает по правилам без сбоев.
Суть метода: CLA превращает классификацию в диалектический процесс — столкновение двух точек зрения (человеческой и машинной) рождает улучшенное понимание. Вы классифицируете 10-20 примеров с объяснением логики, LLM делает то же самое с теми же текстами, вы выявляете расхождения и задаёте вопросы: "Почему ты отнёс это в категорию Х?", "Какой критерий я не учёл?". Ответы LLM помогают доточить определения и улучшить промпт, после чего вы тестируете на новой порции текстов. Цикл повторяется до получения стабильного совпадения классификаций, после чего LLM можно запускать на весь массив данных.
Схема метода
РАУНД 1: Базовая разметка
ШАГ 1: Человек → классифицирует 10-20 текстов вручную + записывает критерии
ШАG 2: LLM → классифицирует те же тексты (промпт с COT + FSL)
ШАГ 3: Сверка → выявление расхождений
РАУНД 2: Уточнение через диалог
ШАГ 4: Абдуктивный вопрос → "Почему ты классифицировал это так?"
ШАГ 5: Анализ ответа → понимание логики LLM + пересмотр своих критериев
ШАГ 6: Улучшение промпта → доточка определений, добавление контекста
РАУНД 3+: Итерация до консенсуса
ШАГ 7: Тест на новых примерах → человек и LLM снова классифицируют
ШАГ 8: Проверка согласованности → если расхождений мало → финальный промпт готов
ШАГ 9: Массовая обработка → LLM классифицирует весь корпус текстов
Все шаги выполняются в обычном чате ChatGPT/Claude. Отдельные запросы для каждого раунда.
Пример применения
⚠️ Зона силы метода: Классификация текстов, где есть правила, но нужна экспертиза; объёмы большие (сотни-тысячи текстов); критерии не тривиальны.
Задача: Вы продюсер онлайн-курса и получили 500 отзывов на Wildberries после запуска курса по нейросетям. Нужно классифицировать их на три категории: "Проблема с контентом" (материал непонятен, мало практики), "Проблема с платформой" (не открывается видео, глючит личный кабинет), "Общая похвала/критика" (всё остальное). Вручную разбирать 500 отзывов — день работы, плюс к вечеру внимание падает и критерии "плывут".
Промпт (Раунд 1):
Я классифицирую отзывы на курс. Вот мои критерии:
1. "Проблема с контентом" — отзыв упоминает, что материал сложный, непонятный, мало примеров, или хочется больше практики.
2. "Проблема с платформой" — отзыв упоминает технические сбои: видео не грузится, кабинет глючит, сертификат не скачивается.
3. "Общая похвала/критика" — всё остальное: благодарности, общие впечатления, рекомендации друзьям.
Вот 10 отзывов, которые я классифицировал вручную:
[вставляешь 10 отзывов с твоими категориями]
Теперь классифицируй эти же 10 отзывов. Для каждого напиши:
1. Категорию
2. Почему ты выбрал эту категорию (пошагово)
Результат (Раунд 1): LLM выдаст свою классификацию для тех же 10 отзывов. Пошаговая логика (COT) покажет, на какие слова и фразы она опиралась. Вы увидите расхождения: например, отзыв "Курс огонь, но видео тормозило" вы отнесли в "Платформа", а LLM в "Общая похвала", потому что слово "огонь" перевесило упоминание проблемы.
Промпт (Раунд 2 — уточнение):
Ты классифицировал отзыв "Курс огонь, но видео тормозило" как "Общая похвала".
Почему? Какой критерий ты применил? Что важнее — позитивная оценка или упоминание проблемы?
Результат (Раунд 2): LLM объяснит свою логику. Это заставит вас переформулировать критерии: возможно, нужно добавить правило "Если упоминается техническая проблема + что-то ещё → приоритет у проблемы". Вы обновляете промпт с уточнёнными определениями.
Промпт (Раунд 3 — тест):
Вот обновлённые критерии:
1. "Проблема с контентом" — отзыв упоминает сложность материала, нехватку примеров, непонятные объяснения.
2. "Проблема с платформой" — ЛЮБОЕ упоминание технических сбоев, даже если есть положительная оценка. Приоритет.
3. "Общая похвала/критика" — всё остальное.
Классифицируй эти 15 новых отзывов (пошагово):
[вставляешь новую порцию]
Результат (Раунд 3): Классификации теперь совпадают на 90%+. Промпт доточен. Вы копируете финальную версию и запускаете LLM на оставшиеся 475 отзывов пачками по 50 — за час всё готово, критерии не "плывут" от усталости.
Почему это работает
Слабость LLM: Модель генерирует текст на основе статистических паттернов из обучающего корпуса. Если задача требует применения специфических правил, которых нет в типовых примерах из интернета (например, критерий "проблема с платформой важнее похвалы"), LLM будет угадывать, опираясь на общий контекст. Без явных инструкций она выберет наиболее частотный паттерн — в данном случае, позитивный тон ("огонь") перевесит упоминание проблемы.
Сильная сторона LLM: Модель идеально следует чётким правилам, если они заданы явно и без двусмысленности. В отличие от человека, она не устаёт, не отвлекается, не меняет критерии от примера к примеру. Chain-of-Thought заставляет LLM разбивать решение на шаги, что снижает риск "короткого пути" через паттерн-матчинг. Few-Shot Learning (несколько примеров вместо одного) помогает модели выделить общий принцип классификации, а не просто скопировать единичный пример.
Как метод использует это: Итеративный процесс — это механизм выявления скрытых допущений. Когда вы видите расхождение, вы задаёте абдуктивный вопрос: "Почему LLM классифицировала это иначе?" Ответ LLM (благодаря COT) показывает её логику. Часто оказывается, что проблема не в LLM, а в вашем определении — вы держите критерий "в голове", но не записали явно. Например, вы интуитивно приоритезируете проблемы над похвалой, но не сформулировали это правило. LLM работает как когнитивное зеркало: она не подвержена вашим скрытым рамкам, и её "ошибка" указывает на пробел в инструкциях.
Рычаги управления:
- Количество примеров (FSL): 3-5 примеров достаточно для простых категорий, 10-15 для сложных. Больше примеров → выше точность, но медленнее итерация.
- Детальность COT: Уберите "объясни пошагово" → LLM выдаст только категорию, быстрее, но без прозрачности. Оставьте → видите логику, можете отладить.
- Приоритеты в правилах: Если категории пересекаются (как "платформа" + "похвала"), явно укажите приоритет. Без этого LLM будет выбирать случайно.
- Раунды итерации: 2-3 раунда обычно достаточно. Если после 5 раундов расхождения остаются → проблема в самих категориях (размыты, пересекаются).
Шаблон промпта
Промпт для Раунда 1 (базовая классификация):
Я классифицирую тексты по следующим категориям:
{опиши категории с чёткими критериями}
Вот {число} текстов, которые я классифицировал вручную:
ТЕКСТ 1: "{текст}"
МОЯ КАТЕГОРИЯ: {категория}
МОЁ ОБЪЯСНЕНИЕ: {почему отнёс в эту категорию}
ТЕКСТ 2: "{текст}"
МОЯ КАТЕГОРИЯ: {категория}
МОЁ ОБЪЯСНЕНИЕ: {почему отнёс в эту категорию}
[повтори для 5-10 примеров]
---
Теперь классифицируй эти же тексты. Для каждого напиши:
1. Категорию
2. Пошаговое объяснение: какие слова/фразы повлияли на решение, какой критерий применил
Плейсхолдеры:
- {опиши категории} — список категорий с определениями (2-3 предложения на категорию)
- {число} — рекомендуется 5-10 для первого раунда
- {текст} — конкретный текст для классификации
- {категория} — ваша классификация
- {почему} — ваша логика (1-2 предложения)
Промпт для Раунда 2 (уточнение расхождений):
Ты классифицировал текст "{текст}" как "{категория_LLM}".
Я классифицировал его как "{категория_человека}".
Вопросы:
1. Почему ты выбрал именно эту категорию?
2. Какой критерий ты применил?
3. Какие слова/фразы были ключевыми?
4. Что могло бы изменить твоё решение?
После получения ответа — доработайте определения категорий и повторите Раунд 1 с новыми примерами.
Промпт для финальной массовой обработки:
Вот окончательные критерии классификации:
{обновлённые категории с уточнёнными правилами}
Классифицируй следующие {число} текстов. Для каждого укажи только категорию (без объяснений).
ТЕКСТ 1: "{текст}"
ТЕКСТ 2: "{текст}"
...
Совет: Обрабатывайте по 20-50 текстов за запрос, чтобы избежать обрывов длинного вывода.
🚀 Быстрый старт — вставь в чат:
Вот методология Complementary Learning Approach для классификации текстов. Помоги мне адаптировать под мою задачу: {опиши задачу — что за тексты, на какие категории делить}.
Задай мне вопросы, чтобы:
1. Уточнить определения категорий
2. Понять, какие примеры мне взять для первого раунда
3. Подготовить промпт для классификации
[вставить шаблон "Промпт для Раунда 1" выше]
LLM спросит, как именно различить категории (где граница между "проблема" и "похвала"?), какие пограничные случаи бывают (смешанные отзывы), сколько примеров у тебя есть. Эти вопросы помогут формализовать критерии до начала работы — часто оказывается, что вы сами не до конца понимаете правила, пока LLM не попросит их уточнить.
Ограничения
⚠️ Требует экспертизы: Методология работает только если вы — эксперт в предметной области. Если не понимаете критерии классификации, итерации не помогут. LLM не заменяет экспертизу, она формализует уже существующее понимание.
⚠️ Затратно по времени на старте: Первые 2-3 раунда итераций могут занять несколько часов. Для разовой задачи на 50 текстов это избыточно — проще сделать вручную. Метод окупается при объёмах от 200+ текстов или при регулярной потребности в классификации.
⚠️ Не для субъективных оценок: Если категории размыты ("интересный текст" vs "скучный") или зависят от личного вкуса, согласованности не добиться. Метод требует чётких, формализуемых критериев.
⚠️ Проблема пересекающихся категорий: Если текст одновременно попадает в две категории, нужно либо ввести приоритет (как в примере с "платформа > похвала"), либо разрешить множественную классификацию. Без этого расхождения останутся даже после итераций.
Как исследовали
Исследователи из Fordham University взяли 1,934 пресс-релиза о фармацевтических альянсах (1990–2017) и классифицировали их по нескольким критериям, требующим экспертизы (например, тип партнёрства, стадия разработки препарата). Часть текстов размечалась вручную исследователями, затем тот же массив обрабатывался LLM с промптами, включающими Chain-of-Thought и Few-Shot Learning. Расхождения между человеческой и машинной классификацией не игнорировались, а становились предметом анализа: исследователи задавали LLM вопросы "Почему ты так классифицировал?" и пересматривали собственные критерии на основе ответов.
Логика была простой: если LLM с чёткими инструкциями классифицирует иначе, чем человек, значит либо (а) инструкции недостаточно точны, либо (б) человек применил неосознанный контекст. Исследователи обнаружили, что большинство расхождений возникало из-за скрытых допущений людей — критерии были понятны интуитивно, но не записаны явно. Например, человек мог автоматически учитывать исторический контекст ("в 1990-е такие партнёрства обычно означали Х"), но LLM этого контекста не имела. После добавления контекста в промпт точность LLM резко выросла.
Что удивило: Часто расхождения указывали не на слабость LLM, а на непоследовательность человека. Один и тот же исследователь мог классифицировать похожие тексты по-разному в зависимости от времени суток или усталости. LLM, следуя правилам без усталости, становилась более последовательной после доработки промпта. Это привело к ключевому выводу: "галлюцинаций" у LLM нет — есть только недостаточно точные промпты. Термин "hallucination" вводит в заблуждение, подразумевая, что модель "придумывает". На деле LLM — математическая функция, отображающая вход на выход по обученным паттернам. "Ошибка" всегда означает, что входные данные (промпт) не задали достаточно ограничений для получения нужного вывода.
Инсайт для практики: Метод показал, что итеративное улучшение промптов через диалог с LLM не только повышает точность классификации, но и улучшает понимание самой задачи исследователем. Часто в процессе выяснялось, что категории, казавшиеся чёткими, на деле были размыты или пересекались. Это делает CLA не просто инструментом автоматизации, а инструментом мышления.
Адаптации и экстраполяции
🔧 Техника: Убрать COT для ускорения после отладки
После 2-3 раундов итераций, когда промпт доточен, можно убрать требование пошагового объяснения из финального промпта для массовой обработки:
[вместо]
"Для каждого текста напиши: 1. Категорию 2. Пошаговое объяснение"
[используй]
"Для каждого текста укажи только категорию"
Эффект: Ускорение обработки в 2-3 раза, экономия токенов. Применяйте только когда уверены, что промпт стабилен.
🔧 Техника: Множественная классификация вместо взаимоисключающих категорий
Если тексты часто попадают в несколько категорий одновременно (например, отзыв упоминает и проблему контента, и проблему платформы), измените логику:
Классифицируй каждый текст. Текст может попадать в НЕСКОЛЬКО категорий одновременно.
Для каждого текста укажи ВСЕ применимые категории через запятую.
Если ни одна не подходит, напиши "Неопределённо".
Эффект: Снимается проблема пересекающихся категорий, но усложняется последующий анализ (нужно решить, как обрабатывать тексты с множественной меткой).
🔧 Техника: Добавить confidence score для пограничных случаев
Если после итераций остаются тексты, вызывающие сомнения, попросите LLM оценивать уверенность в классификации:
Для каждого текста укажи:
1. Категорию
2. Уверенность (Высокая / Средняя / Низкая)
Низкая уверенность — если текст пограничный, может попадать в несколько категорий.
Эффект: Вы получаете список текстов с "Низкой уверенностью" для ручной проверки, экономя время на очевидных случаях.
Ресурсы
Complementary Learning Approach for Text Classification using Large Language Models
Navid Asgari, Benjamin M. Cole
Gabelli School of Business, Fordham University
Ключевые отсылки из исследования: - Wei et al. (2022) — Chain-of-Thought Prompting - Brown et al. (2020) — Few-Shot Learning with GPT-3 - Lincoln & Guba (1985) — Naturalistic Inquiry (основа диалектического подхода) - Davis & Marquis (2005) — Mechanism-Based Theorizing (абдуктивные вопросы)
