3,583 papers
arXiv:2512.07583 82 8 дек. 2025 г. FREE

Complementary Learning Approach: итеративная классификация текстов через диалог человека и LLM

КЛЮЧЕВАЯ СУТЬ
Классифицируешь 500 текстов вручную — к вечеру критерии плывут от усталости. То что было "проблемой" в начале становится "общей критикой" к концу. Метод Complementary Learning Approach (взаимодополняющее обучение) позволяет классифицировать сотни-тысячи текстов с постоянными критериями через итеративный диалог с LLM. Фишка: расхождения между вашей и машинной классификацией показывают где ваши правила размыты. Размечаешь 10-20 примеров, LLM делает то же через пошаговые рассуждения (Chain-of-Thought), сверяешь расхождения, спрашиваешь "почему ты выбрал это?" — 2-3 раунда уточнений и критерии доточены. Запускаешь на весь массив — 500 текстов за час вместо дня работы.
Адаптировать под запрос

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 (абдуктивные вопросы)


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

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

Классифицируешь 500 текстов вручную — к вечеру критерии плывут от усталости. То что было "проблемой" в начале становится "общей критикой" к концу. Метод Complementary Learning Approach (взаимодополняющее обучение) позволяет классифицировать сотни-тысячи текстов с постоянными критериями через итеративный диалог с LLM. Фишка: расхождения между вашей и машинной классификацией показывают где ваши правила размыты. Размечаешь 10-20 примеров, LLM делает то же через пошаговые рассуждения (Chain-of-Thought), сверяешь расхождения, спрашиваешь "почему ты выбрал это?" — 2-3 раунда уточнений и критерии доточены. Запускаешь на весь массив — 500 текстов за час вместо дня работы.

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

Процесс как конвейер с обратной связью. Размечаешь 10-20 текстов вручную → LLM классифицирует те же с объяснением логики → сверяешь расхождения и спрашиваешь "почему ты отнёс это в категорию Х?" → ответ показывает пробелы в твоих инструкциях → улучшаешь промпт с уточнёнными правилами → тестируешь на новых примерах → повторяешь пока расхождений не станет меньше 10%. Используешь два рычага: Few-Shot Learning (5-10 примеров вместо одного помогают модели выделить общий принцип) и Chain-of-Thought (заставляешь показать логику пошагово — видишь на какие слова опиралась).

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

LLM не устаёт и не меняет критерии от примера к примеру — в отличие от человека. Если классифицирует не так как ты — значит правило не сформулировано явно. Расхождение работает как индикатор размытости определения. Ты держишь критерий "в голове" (например, "упоминание техпроблемы важнее похвалы"), но не записал. LLM работает только с написанным — её "ошибка" показывает что ты забыл добавить. Пошаговые рассуждения (CoT) раскрывают логику модели: видишь что она опёрлась на слово "огонь" и проигнорировала "видео тормозило". Добавляешь правило приоритета — следующий раунд даёт 95% совпадений.

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

Классификация текстов → для объёмов от 200+ текстов (отзывы, заявки, резюме, статьи) → когда критерии не тривиальны, но формализуемы. Особенно полезно если категории пересекаются ("проблема + похвала" в одном тексте) — метод заставит явно прописать приоритеты. НЕ подходит для субъективных оценок ("интересный" vs "скучный" текст), разовых задач на 50 текстов (итерации займут больше времени чем ручная разметка), ситуаций когда ты сам не эксперт в критериях.

Мини-рецепт

1. Размечаешь базу: 10-20 текстов вручную, для каждого записываешь категорию + почему отнёс сюда (1-2 предложения логики)
2. Даёшь LLM: те же тексты с промптом Классифицируй эти тексты. Для каждого напиши: категорию + пошаговое объяснение (какие слова повлияли, какой критерий применил)
3. Сверяешь расхождения: находишь где ваши классификации не совпали
4. Задаёшь вопрос: Ты классифицировал текст "..." как X. Я - как Y. Почему ты выбрал X? Какой критерий применил? Что могло изменить решение?
5. Улучшаешь промпт: на основе ответа добавляешь правила приоритета ("ЛЮБОЕ упоминание техсбоя → категория Платформа"), уточняешь определения категорий
6. Тестируешь: размечаешь 10-15 новых примеров вручную, даёшь LLM с обновлённым промптом, проверяешь совпадения
7. Повторяешь раунды: пока расхождений не станет меньше 10% (обычно 2-3 раунда)
8. Запускаешь массово: обрабатываешь весь корпус пачками по 20-50 текстов с финальным промптом

Примеры

[ПЛОХО] : Раздели эти 500 отзывов на категории: контент, платформа, общее. Контент - про материал, платформа - про технические проблемы (Критерии размыты, нет приоритетов для пересечений, LLM угадывает на слух)
[ХОРОШО] : Сначала размечаешь 10 отзывов сам с объяснениями: Отзыв: "Курс огонь, но видео тормозило" → Платформа (упоминание техсбоя важнее позитивной оценки). Даёшь LLM те же 10 с инструкцией показать логику. Видишь расхождение - она отнесла в "Общее" (слово "огонь" перевесило проблему). Спрашиваешь Почему выбрала Общее? Какой критерий?. Она объясняет что позитивный тон был сильнее. Добавляешь в промпт правило: ЛЮБОЕ упоминание техпроблемы → приоритет категории Платформа, даже если есть похвала. Тестируешь на новых 15 отзывах - теперь 95% совпадений. Запускаешь на оставшиеся 475 пачками по 50 - готово за час, критерии не плывут.
Источник: Complementary Learning Approach for Text Classification using Large Language Models
ArXiv ID: 2512.07583 | Сгенерировано: 2026-01-10 00:10
📖 Простыми словами

Complementary Learning Approach: итеративная классификация текстов через диалог человека и LLM

arXiv: 2512.07583

Суть Complementary Learning Approach (CLA) в том, что LLM — это не магический оракул, а стажер-отличник с феноменальной памятью, но полным отсутствием здравого смысла в контексте твоих личных правил. Когда ты просишь нейронку классифицировать тысячи отзывов, она опирается на «среднее по больнице» из интернета, а не на твою логику. Метод CLA превращает процесс в парное программирование, где ты и модель постоянно сверяете часы, пока она не начнет думать в точности как ты.

Это как учить нового сотрудника сортировать почту: ты не просто даешь ему папку с письмами и уходишь, а садишься рядом. Вы берете первые десять писем, он говорит: «Это в спам», а ты поправляешь: «Нет, это важный клиент, хоть он и пишет капсом». Вы спорите, уточняете правила, и так до тех пор, пока он не перестанет лажать. Итеративный процесс здесь важнее, чем сам итоговый промпт.

В основе лежат два костыля, без которых LLM падает: Chain-of-Thought (заставляем модель рассуждать вслух, а не выдавать готовый ответ) и Few-Shot Learning (подсовываем конкретные примеры «правильно/неправильно»). Если в отзыве написано «приложение огонь, но вылетает на оплате», обычная модель радостно пометит его как позитив. Но через CLA ты вбиваешь ей в голову жесткое правило: технический баг всегда важнее похвалы. Только когда вы добьетесь стабильного совпадения твоей разметки и её выводов, модель можно отпускать «в поле» на тысячи текстов.

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

Короче: хватит надеяться, что нейронка «сама поймет» твои критерии — она не телепат. Используй CLA, чтобы вытащить из модели галлюцинации и заменить их твоей экспертизой через постоянную сверку результатов. Либо ты тратишь время на настройку системы в начале, либо потом разгребаешь тонны мусора, который модель пометила не так, потому что «ей так показалось».

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

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

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