3,583 papers
arXiv:2604.07562 72 8 апр. 2026 г. FREE

LLM как семантический судья: трёхэтапная проверка и очистка группировок

КЛЮЧЕВАЯ СУТЬ
LLM уверенно разваливается на задаче 'разбей эти 200 текстов на темы' — слишком большая, контекст не резиновый, нет системного контроля. Но та же модель точно справляется с локальным суждением: 'вот 5 текстов и описание — они про одно?'. Метод позволяет проверять и чистить любые уже готовые группы текстов через три отдельных запроса. Фишка: разделение труда — ты делаешь грубую сортировку, LLM получает маленькие, хорошо сформулированные задачи — и именно там работает без сбоев.
Адаптировать под запрос

TL;DR

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

Проблема: когда группируешь тексты вручную или любым инструментом, результат часто выглядит разумно, но на деле — часть групп смешанная (туда попало всё подряд), часть дублирует друг друга под разными словами, а названия самих групп расплывчатые. Это трудно заметить "изнутри" — нет внешней точки зрения.

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


🔬

Схема метода

Шаг 0: ТЫ группируешь тексты любым способом (вручную, таблицей, другим инструментом)
         → у тебя есть группы + по 3-5 примеров из каждой

Шаг 1 (Проверка связности) — отдельный запрос
  Входные данные: краткое описание группы + 3-5 текстов из неё
  Задача LLM: "Это описание точно отражает тексты? Или группа смешанная?"
  → LLM: подтверждает / объясняет, что не так

Шаг 2 (Поиск дублей) — отдельный запрос
  Входные данные: список описаний всех групп
  Задача LLM: "Какие группы про одно и то же? Что объединить?"
  → LLM: предлагает какие пары / кластеры слить

Шаг 3 (Присвоение названий) — отдельный запрос
  Входные данные: итоговые группы с примерами
  Задача LLM: "Придумай точную, конкретную метку для каждой"
  → LLM: названия, которые человек понял бы без объяснений

🚀

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

Задача: Ты — маркетолог сервиса доставки еды. Собрал 150 отзывов с Яндекс Карт, вручную разбил на 8 групп по теме. Хочешь убедиться, что группы получились чёткими — и правильно их назвать перед тем, как писать отчёт руководству.

Промпт — Шаг 1 (проверка одной группы):

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

Описание группы: «Жалобы на опоздание курьеров»

Примеры текстов из группы:
1. «Курьер привёз заказ через 1,5 часа, хотя обещали 40 минут»
2. «Приложение показало "доставлено", а курьера нет уже 20 минут»
3. «Служба поддержки не отвечает, когда звонишь узнать где заказ»
4. «Опять опоздание. Третий раз за месяц»
5. «Еда приехала холодной, потому что долго везли»

Ответь:
— Насколько группа связная (по шкале 1-10)?
— Все ли тексты про одно?
— Если нет — какие тексты сюда не подходят и почему?

Промпт — Шаг 2 (поиск дублей):

Вот описания моих групп отзывов. Найди пары, которые фактически 
про одно и то же — их стоит объединить.

Группа 1: «Жалобы на опоздание курьеров»
Группа 2: «Недовольство временем ожидания»
Группа 3: «Проблемы с качеством еды»
Группа 4: «Холодная или испорченная еда при доставке»
Группа 5: «Ошибки в составе заказа»
Группа 6: «Привезли не то, что заказывали»
Группа 7: «Вежливость курьеров»
Группа 8: «Плохой сервис при получении заказа»

Для каждой пары дублей: объясни почему их стоит объединить 
и предложи одно общее название.

Результат:

На шаге 1 — LLM покажет конкретные тексты, которые выпадают из темы (например, «служба поддержки не отвечает» — это уже про другое), и объяснит почему. На шаге 2 — выявит смысловые дубли: группы 1+2 и 3+4 и 5+6 окажутся про одно, предложит объединить и переименовать. В итоге из 8 групп останется 5 чётких.


🧠

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

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

LLM хорошо делает локальное суждение: "вот 5 текстов и описание — они совпадают?" Это задача на сопоставление смысла, а не на глобальную оптимизацию. Именно здесь у неё нет слабых мест.

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

Рычаги управления: - k примеров на группу (в исследовании использовали 5) — меньше 3 ненадёжно, больше 7 не даёт новой информации, только растягивает контекст - Шкала связности в запросе (1-10) — даёт числовой сигнал, по которому легче отсортировать проблемные группы - Критерий для объединения — можно сузить: "объединяй только если описания буквально одинаковые" или расширить: "объединяй если клиент не отличил бы эти группы"


📋

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

Шаг 1 — проверка связности группы:

Проверь, насколько группа [{название_группы}] внутренне связная.

Описание группы: {описание_что_объединяет_тексты}

Примеры текстов из группы:
1. {текст_1}
2. {текст_2}
3. {текст_3}
4. {текст_4}
5. {текст_5}

Ответь по пунктам:
— Оценка связности: [1-10]
— Все ли тексты отражают описание?
— Если нет: какие тексты выпадают и почему?
— Предложи уточнённое описание группы, если нужно

Шаг 2 — поиск семантических дублей:

Вот список групп с их описаниями. 
Найди пары или наборы групп, которые фактически про одно и то же.

{список_групп_с_описаниями_через_нумерацию}

Для каждого найденного дубля:
— Какие группы объединить (номера)
— Почему они дублируют друг друга
— Предложи единое название для объединённой группы

Шаг 3 — присвоение названий:

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

{список_финальных_групп_с_примерами_текстов}

Формат ответа:
Группа X: [старое название] → [новое название]
Обоснование: [одна фраза почему именно так]

Плейсхолдеры: - {название_группы} — как ты сейчас называешь эту группу - {описание_что_объединяет_тексты} — 1-2 предложения про суть - {текст_1..5} — буквальные примеры из группы, лучше самые "центральные" - {список_групп} — все группы разом, каждая с кратким описанием


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

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

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

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


⚠️

Ограничения

⚠️ Нужны уже готовые группы: Метод — это валидация, не первичная сортировка. Если группировки ещё нет вообще, начинать нужно с другого.

⚠️ Контекстное окно: Если групп много (больше 20-30) и в каждой много текстов, шаг 2 (поиск дублей) придётся разбивать на несколько запросов — всё сразу не влезет.

⚠️ Узкоспециальные домены: LLM может не поймать дубли в очень специфических профессиональных областях — медицине, праве, технике. Там нужна экспертная проверка поверх.

⚠️ Субъективность: "Связная группа" — суждение, не математика. Разные запросы дадут немного разные ответы. Запусти один и тот же шаг дважды, если результат важный.


🔍

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

Команда из Purdue взяла реальные твиты и посты о веганстве с двух платформ — X (бывший Twitter) и Bluesky — и прогнала их через стандартный алгоритм кластеризации HDBSCAN. Получилось 359 кластеров для X и 37 для Bluesky. Потом применили трёхэтапную LLM-очистку и сравнили результат с двумя альтернативами: без очистки вообще и с очисткой через SBERT-эмбеддинги (без LLM).

Самый интересный результат — не там, где ожидали. По метрике "разделённости кластеров" (Davies-Bouldin Index) SBERT-очистка выиграла на X-данных. Зато по смысловой связности внутри кластеров LLM-очистка оказалась несравнимо лучше: силуэтный коэффициент 0,674 против 0,156 у SBERT. Это значит: геометрия в пространстве эмбеддингов и реальная смысловая близость текстов — разные вещи. Кластеры могут выглядеть "хорошо" статистически, но быть кашей по содержанию.

Финальную проверку делали живые люди: два эксперта по NLP оценили 500 случайных текстов на каждой платформе. Согласие между ними — Cohen's Kappa 0,82, это "почти идеальное". GPT-4o совпал с людьми на ~78% на X и ~90% на Bluesky — лучше Llama 3.2, Mistral и классических тематических моделей типа LDA и BERTopic.


💡

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

🔧 Техника: один промпт вместо трёх шагов → экспресс-аудит группировки

Если групп немного (5-7) и нужна быстрая проверка без детального разбора, можно объединить все три шага в один запрос:

Вот мои группы с примерами. Сделай три вещи:

1. СВЯЗНОСТЬ: для каждой группы — связная или смешанная? (1-10)
2. ДУБЛИ: какие группы фактически про одно? Что объединить?
3. НАЗВАНИЯ: предложи более точные метки

{список_групп_с_примерами}

Работает хуже на больших наборах — LLM начинает скользить по поверхности. Но для 5-7 групп — достаточно.


🔧 Экстраполяция: тот же принцип для структуры документа

Три этапа метода применимы не только к группировкам текстов, но и к структуре любого документа — статьи, отчёта, презентации:

Вот структура моего документа (разделы + краткое содержание каждого).
Сыграй роль строгого редактора:

1. СВЯЗНОСТЬ: в каком разделе содержание не соответствует заголовку?
2. ДУБЛИ: какие разделы говорят про одно и то же? Что объединить?
3. НАЗВАНИЯ: переименуй разделы, если текущие названия расплывчатые

Структура:
{список_разделов_с_кратким_содержанием}

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


🔗

Ресурсы

Название работы: Reasoning-Based Refinement of Unsupervised Text Clusters with LLMs

Код и датасеты: github.com/tunazislam/reasoning-based-refinement-llms-vegan

Автор: Tunazzina Islam — Department of Computer Science, Purdue University, West Lafayette, IN


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

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

LLM уверенно разваливается на задаче 'разбей эти 200 текстов на темы' — слишком большая, контекст не резиновый, нет системного контроля. Но та же модель точно справляется с локальным суждением: 'вот 5 текстов и описание — они про одно?'. Метод позволяет проверять и чистить любые уже готовые группы текстов через три отдельных запроса. Фишка: разделение труда — ты делаешь грубую сортировку, LLM получает маленькие, хорошо сформулированные задачи — и именно там работает без сбоев.

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

Не 'разбей всё на темы', а 'проверь эту группу'. Три шага — три отдельных запроса. Шаг 1: даёшь описание группы + 5 примеров текстов. LLM ставит оценку связности 1-10 и называет тексты, которые выпадают. Шаг 2: даёшь список описаний всех групп сразу. LLM находит пары, которые фактически про одно, и предлагает объединить. Шаг 3: финальные группы с примерами → точные метки, понятные без объяснений. Грубую работу делаешь ты или любой инструмент. LLM судит — не сортирует.

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

5 примеров на группу — не случайная цифра. Меньше 3 — ненадёжно, больше 7 — только раздувает промпт без новой информации. Шкала 1-10 в запросе принуждает модель выдать числовой сигнал — по нему сразу видно проблемные группы, не нужно читать каждый ответ целиком. Сопоставить пять текстов с одним описанием — это задача на смысл, а не глобальная раскладка по темам. Там у LLM нет слабых мест.

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

Анализ отзывов, обратной связи, интервью, идей → проверка тематических групп перед отчётом или презентацией, особенно когда группировка делалась вручную или в таблице и нужна уверенность что ничего не смешалось и дубли убраны. НЕ подходит для первичной сортировки с нуля — нужны уже готовые группы с примерами. Если групп больше 20-30, шаг с поиском дублей придётся бить на несколько запросов — всё разом не влезет.

Мини-рецепт

1. Собери группы любым способом: вручную, в таблице, инструментом — неважно. Нужны группы и 3-5 примеров текстов из каждой.
2. Проверь связность каждой группы: отдельный запрос для каждой — описание + 5 примеров. Попроси оценить 1-10 и назвать тексты, которые выпадают.
3. Найди дубли: один запрос со списком всех описаний. Попроси найти пары, которые фактически про одно, и предложить объединение с новым названием.
4. Поставь точные метки: финальные группы с примерами → попроси назвать так, чтобы понял человек, который не видел исходные тексты. Попроси дать обоснование в одной фразе — это страховка от расплывчатых меток.

Примеры

[ПЛОХО] : Вот 150 отзывов клиентов. Разбей их на тематические группы и назови каждую.
[ХОРОШО] : Проверь связность группы. Описание: 'Жалобы на опоздание курьеров'. Примеры текстов: 1. Курьер привёз заказ через 1,5 часа вместо 40 минут. 2. Приложение показало 'доставлено', а курьера нет 20 минут. 3. Служба поддержки не отвечает, когда звонишь узнать где заказ. 4. Опять опоздание, третий раз за месяц. 5. Еда приехала холодной, потому что долго везли. Оцени связность 1-10. Если группа смешанная — назови тексты, которые выпадают, и объясни почему.
Источник: Reasoning-Based Refinement of Unsupervised Text Clusters with LLMs
ArXiv ID: 2604.07562 | Сгенерировано: 2026-04-10 04:31

Проблемы LLM

ПроблемаСутьКак обойти
Модель группирует тексты с нуля непредсказуемоДаёшь модели 50–200 текстов. Просишь разбить на темы. Результат каждый раз разный. Группы пересекаются. Некоторые тексты попадают куда попало. Чем больше текстов — тем хуже. Контекстное окно не резиновое. Модель не может удерживать весь массив одновременноНе проси модель делать первичную группировку. Раздели задачу: ты (или любой инструмент) создаёшь черновые группы, модель только проверяет и исправляет. Маленькая задача — точный результат

Методы

МетодСуть
Трёхшаговая проверка готовых группУ тебя уже есть группы текстов. Запускаешь три отдельных запроса. Шаг 1 — связность: даёшь описание группы + 5 примеров, спрашиваешь "оцени связность от 1 до 10, какие тексты выпадают и почему". Шаг 2 — дубли: даёшь список описаний всех групп, спрашиваешь "какие пары фактически про одно, что объединить". Шаг 3 — названия: даёшь финальные группы с примерами, просишь точную метку для каждой. Три отдельных запроса, не один. Почему работает: каждый запрос маленький и конкретный. Модель не оптимизирует глобально — она сравнивает локально. "Вот 5 текстов и описание — совпадает?" — это модель делает хорошо. Параметры: 3–5 примеров на группу (меньше трёх — ненадёжно, больше семи — лишний шум). Когда не работает: групп ещё нет вообще — тогда нечего проверять

Тезисы

ТезисКомментарий
Модель точнее в локальном суждении чем в глобальной сортировкеГлобальная задача: "разбей 100 текстов на темы" — слишком много переменных одновременно. Результат непредсказуем. Локальная задача: "вот описание и 5 примеров — они совпадают?" — это сопоставление смысла. Здесь модель работает надёжно. Механика простая: маленький контекст меньше ошибок позиционирования, чёткий критерий понятно что считать правильным. Применяй: любую большую задачу разбивай на локальные суждения. Не "рассортируй всё", а "проверь этот конкретный кусок"
📖 Простыми словами

Reasoning-Based Refinement of Unsupervised Text Clusters withLLMs

arXiv: 2604.07562

Суть в том, что нейронки наконец-то научились не просто генерировать текст, а работать контролерами качества для хаоса из данных. Когда у тебя есть гора отзывов или заметок, обычные алгоритмы группируют их по ключевым словам, но часто мажут мимо смысла. Метод Reasoning-Based Refinement превращает LLM в придирчивого аудитора: модель не пытается сама рассортировать тысячи строк, а берет уже готовую структуру и ищет в ней логические дыры. Она работает на уровне смысловых связей, понимая, где тексты склеены «на соплях», а где они реально про одно и то же.

Это как если бы ты нанял стажера разложить документы по папкам, а потом позвал опытного юриста проверить его работу. Стажер может положить жалобу на холодный суп в папку «Меню», потому что там есть слово «суп». Но LLM-судья сразу увидит подвох: «Слышь, это не про состав блюд, это про сервис». Она не делает черную работу с нуля, она верифицирует структуру, выкидывая лишнее и объединяя дубликаты, которые пропустил тупой алгоритм.

В основе лежат три конкретных действия: валидация кластеров (проверка, не попал ли в группу мусор), слияние избыточных групп (когда у тебя три папки про одно и то же разными словами) и генерация точных лейблов. Вместо того чтобы называть группу «Еда», модель выдает «Жалобы на температуру горячих блюд». Это работает, потому что нейронка видит контекст целиком и может объяснить, почему этот конкретный отзыв — чужеродный элемент в данной выборке.

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

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

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

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

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