3,583 papers
arXiv:2510.06708 72 8 окт. 2025 г. FREE

Boundary Cases: как LLM разделяют данные на лёгкие и сложные для точной фильтрации

КЛЮЧЕВАЯ СУТЬ
Обнаружено: LLM ошибаются не везде, а точечно — в граничных случаях, где критерий упомянут неявно или в другом контексте. Метод Boundary Cases позволяет проверять вручную только 15-20% данных вместо всех — модель берёт на себя очевидные решения. Фишка: модель делит данные на 4 категории по уверенности — лёгкие включения (явно подходит), лёгкие исключения (явно не подходит), граничные включения (вероятно подходит), граничные исключения (вероятно не подходит). Проверяешь вручную только граничные — экономия времени в 5-6 раз.
Адаптировать под запрос

TL;DR

Boundary Cases — принцип категоризации данных по сложности для LLM. Вместо бинарной классификации «включить/исключить» данные делятся на четыре категории по уверенности модели. Легкие включения — очевидно релевантно. Легкие исключения — очевидно нерелевантно. Граничные включения — вероятно релевантно, но неясно. Граничные исключения — вероятно нерелевантно, но неясно.

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

Принцип работы: сначала прогнать все данные через LLM с чёткими критериями (zero-shot), получить категоризацию. Потом вручную проверить только граничные случаи — те, где модель менее уверена. Для улучшения точности можно добавить примеры правильных решений (few-shot) или использовать несколько моделей для перекрёстной проверки.


🔬

Схема метода

ШАГ 1: Zero-shot фильтрация → четыре категории по уверенности
ШАГ 2: Few-shot для граничных → улучшение точности примерами 
ШАГ 3: Ручная проверка → только граничные случаи

Все шаги можно выполнить в одном чате последовательными запросами.


🚀

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

Задача: У вас 150 резюме на позицию Middle Python-разработчик в Яндексе. Нужно отобрать кандидатов с опытом 3+ года в Python и Django.

Промпт:

Оцени каждое резюме по критериям:
1. Опыт работы с Python 3+ года
2. Опыт работы с Django

Для каждого резюме дай:
- Решение: ВКЛЮЧИТЬ / ИСКЛЮЧИТЬ
- Категория: ЛЕГКОЕ ВКЛЮЧЕНИЕ / ГРАНИЧНОЕ ВКЛЮЧЕНИЕ / ГРАНИЧНОЕ ИСКЛЮЧЕНИЕ / ЛЕГКОЕ ИСКЛЮЧЕНИЕ
- Уверенность: 0-100%
- Обоснование: почему такое решение

[вставить список резюме]

Результат:

Модель разделит резюме на четыре группы. Легкие включения (явно указано «3 года Python + Django») и легкие исключения (нет Python или junior) — высокая точность. Граничные случаи (например, «2.5 года Python, упоминание Django в pet-проекте» или «Python указан в skills, но опыт не расшифрован») — нужна ручная проверка. Вы проверяете вручную только граничные случаи вместо всех резюме — обычно это 15-20% от общего объёма.


🧠

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

LLM хорошо распознают явные сигналы в тексте — когда критерий прямо указан. Модель анализирует текст и находит прямые упоминания: «3 года опыта в Python», «работал с Django». Это легкие включения.

Модель также хорошо распознает отсутствие сигналов — когда критерий явно не выполнен. Если в резюме нет Python или указан junior-уровень — это легкое исключение.

Но модель путается с неявными сигналами и контекстом. Например, если Django упомянут в списке технологий, но не в опыте работы — это граничный случай. Модель не всегда понимает разницу между «использовал в pet-проекте» и «коммерческий опыт». Именно здесь нужен человек.

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


📋

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

Оцени каждый элемент по критериям:
{критерии фильтрации}

Для каждого элемента дай:
- Решение: ВКЛЮЧИТЬ / ИСКЛЮЧИТЬ
- Категория: ЛЕГКОЕ ВКЛЮЧЕНИЕ / ГРАНИЧНОЕ ВКЛЮЧЕНИЕ / ГРАНИЧНОЕ ИСКЛЮЧЕНИЕ / ЛЕГКОЕ ИСКЛЮЧЕНИЕ
- Уверенность: 0-100%
- Обоснование: почему такое решение

{список элементов для фильтрации}

Плейсхолдеры:

  • {критерии фильтрации} — чёткие критерии включения/исключения
  • {список элементов} — данные для фильтрации (резюме, отзывы, идеи, статьи)

Для улучшения точности на граничных случаях:

Добавь после критериев:

Примеры правильных решений:

ВКЛЮЧИТЬ:
{пример 1 - что включать}
{пример 2 - что включать}

ИСКЛЮЧИТЬ:
{пример 3 - что исключать}
{пример 4 - что исключать}

⚠️

Ограничения

⚠️ Масштаб: В чате можно обработать 20-50 элементов комфортно. Для сотен и тысяч элементов нужны API или специализированные инструменты.

⚠️ Граничные случаи: LLM ошибается на граничных случаях — где критерий упомянут неявно или в другом контексте. Эти случаи требуют ручной проверки.

⚠️ Субъективные критерии: Работает для объективных критериев («3+ года опыта», «упоминание Django»). Для субъективных оценок («креативное мышление», «культурный фит») точность ниже.


🔍

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

Исследователи взяли 137 научных статей из systematic review по time pressure в software engineering. Запустили несколько LLM (через OpenRouter) с критериями включения/исключения. Модели должны были решить — релевантна ли статья для обзора.

Результат удивил: модели НЕ ошибались случайно по всему датасету. Все ошибки сконцентрировались в граничных случаях. Из 137 статей: 6 легких включений — ошибок 0, 107 легких исключений — ошибок 0, 24 граничных случая — все ошибки здесь.

Почему так? В легких случаях критерий явно выражен или явно отсутствует. Например, в статье про time pressure в разработке ПО прямо написано в абстракте: «time pressure is an important stress factor». Модель включает.

В граничных включениях критерий упомянут, но неявно — например, в разделе «findings suggest» написано «time pressure affects...», но не ясно, есть ли эмпирические данные. Модель часто исключает, хотя надо включить.

В граничных исключениях критерий упомянут в мотивационной части («problems arise due to time pressure»), но сама статья про другое (про technical debt prediction). Модель часто включает, хотя надо исключить.

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


📌

Адаптации

💡 Адаптация для приоритизации:

Вместо жёсткой категоризации попроси модель отсортировать по вероятности релевантности:

Оцени каждое резюме по критериям и дай оценку релевантности 0-100.

Отсортируй резюме от наиболее релевантных к наименее релевантным.

Критерии:
- 3+ года Python
- Опыт с Django

{список резюме}

Начни просматривать с топа. Установи порог отсечки — например, 10 нерелевантных подряд. Это работает для rapid screening, когда скорость важнее полноты.


💡 Адаптация для множественных критериев:

Для сложных задач с несколькими критериями попроси оценку по каждому критерию отдельно:

Оцени каждое резюме по критериям:

1. Технические навыки (Python 3+, Django): ПОДХОДИТ / НЕ ПОДХОДИТ / НЕЯСНО
2. Уровень (Middle+): ПОДХОДИТ / НЕ ПОДХОДИТ / НЕЯСНО 
3. Релевантный опыт (финтех/e-commerce): ПОДХОДИТ / НЕ ПОДХОДИТ / НЕЯСНО

Общее решение: ВКЛЮЧИТЬ / ИСКЛЮЧИТЬ / ПРОВЕРИТЬ ВРУЧНУЮ

{список резюме}

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


🔧 Техника: несколько моделей → снижение ошибок на граничных случаях

Для критически важных решений попроси оценку у нескольких моделей:

# В ChatGPT (GPT-4):
[твой промпт с критериями]

# В Claude:
[тот же промпт]

# Сравни результаты:
Где модели согласны - скорее всего правильно.
Где расходятся - граничный случай, нужна ручная проверка.

Если обе модели категоризируют элемент одинаково (оба «лёгкое включение» или оба «лёгкое исключение») — высокая уверенность. Если категоризация разная — это граничный случай, требующий вашего внимания.


🔗

Ресурсы

«AISysRev - LLM-based Tool for Title-abstract Screening» (ICSE 2026)

Инструмент: https://github.com/EvoTestOps/AISysRev

Aleksi Huotala, Miikka Kuutila, Olli-Pekka Turtio, Mika Mäntylä (University of Helsinki)


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

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

Обнаружено: LLM ошибаются не везде, а точечно — в граничных случаях, где критерий упомянут неявно или в другом контексте. Метод Boundary Cases позволяет проверять вручную только 15-20% данных вместо всех — модель берёт на себя очевидные решения. Фишка: модель делит данные на 4 категории по уверенности — лёгкие включения (явно подходит), лёгкие исключения (явно не подходит), граничные включения (вероятно подходит), граничные исключения (вероятно не подходит). Проверяешь вручную только граничные — экономия времени в 5-6 раз.

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

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

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

LLM видит паттерны в тексте, но не понимает контекст глубоко. Когда пишут "3 года опыта в Python" — модель уверена на 95%. Когда Python упомянут в списке навыков, но не в опыте — модель даёт 60% уверенности. Категоризация делает эту неуверенность видимой — вместо бинарного "да/нет" получаешь градации. Исследование показало: граничные случаи составляют 15-20% от всех данных, но именно в них 80% ошибок модели. Проверяешь только их — остальное модель делает с высокой точностью.

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

Фильтрация данных по чётким критериям → резюме кандидатов (опыт 3+ года), научные статьи для обзора (методология + результаты), отзывы клиентов (упоминание функции X), идеи для разработки (техническая реализуемость). Особенно полезно когда объём 50-500 элементов — слишком много для ручной проверки, но умещается в контекст LLM. НЕ подходит для субъективных критериев типа "культурный фит" или "креативное мышление" — там модель плывёт даже на явных случаях.

Мини-рецепт

1. Zero-shot категоризация: Даёшь модели критерии + список данных, просишь для каждого элемента: решение (включить/исключить), категория (лёгкое включение/граничное включение/граничное исключение/лёгкое исключение), уверенность (0-100%), обоснование.
2. Опционально few-shot для граничных: Если модель ошибается на граничных — добавь 2-4 примера правильных решений для похожих случаев. Модель подстроится под твои критерии.
3. Ручная проверка граничных: Проверяешь только элементы из категорий "граничное включение" и "граничное исключение" — обычно это 15-20% от всего объёма.

Примеры

[ПЛОХО] : Отбери резюме кандидатов с опытом Python 3+ года и знанием Django (Модель даст список, но ты не знаешь где она уверена, а где сомневается — придётся проверять всё)
[ХОРОШО] : Оцени каждое резюме по критериям: 1) Опыт Python 3+ года, 2) Опыт Django. Для каждого дай: Решение (ВКЛЮЧИТЬ/ИСКЛЮЧИТЬ), Категория (ЛЕГКОЕ ВКЛЮЧЕНИЕ / ГРАНИЧНОЕ ВКЛЮЧЕНИЕ / ГРАНИЧНОЕ ИСКЛЮЧЕНИЕ / ЛЕГКОЕ ИСКЛЮЧЕНИЕ), Уверенность (0-100%), Обоснование (Получаешь разделение на категории — проверяешь только граничные случаи типа "2.5 года Python, Django в pet-проекте" вместо всех 150 резюме)
Источник: AISysRev: LLM-based Tool for Title-abstract Screening
ArXiv ID: 2510.06708 | Сгенерировано: 2026-01-12 00:43

Проблемы LLM

ПроблемаСутьКак обойти
Модель ошибается там где критерий упомянут неявноЗадача: отфильтровать по критерию "есть опыт Django". Если в тексте прямо написано "работал с Django 2 года" — модель включает правильно. Если нет упоминания Django — исключает правильно. Но если Django упомянут косвенно ("в pet-проекте использовал", "в списке навыков без расшифровки") — модель путается. Ошибки концентрируются именно в зоне неявных сигналовПопроси модель разделить результаты на 4 категории по уверенности: легкие включения (явно подходит), легкие исключения (явно не подходит), граничные включения (вроде подходит, но неясно), граничные исключения (вроде не подходит, но неясно). Проверяй вручную только граничные случаи — там 80% ошибок

Методы

МетодСуть
Четыре категории уверенности для фильтрацииВместо простого "включить/исключить" попроси модель дать 4 категории: Легкие включения (явно подходит), Легкие исключения (явно не подходит), Граничные включения (вероятно подходит, но сомнения), Граничные исключения (вероятно не подходит, но сомнения). Для каждого элемента модель даёт: решение, категорию, уверенность 0-100%, обоснование. Почему работает: Модель хорошо распознаёт явные сигналы и их отсутствие. Плохо — неявные сигналы и контекст. Категоризация показывает где модель сомневается. Ты проверяешь вручную только граничные случаи (обычно 15-20% от объёма) вместо всех элементов. Шаблон: Оцени каждый элемент по критериям: {критерии}. Для каждого дай: Решение (ВКЛЮЧИТЬ/ИСКЛЮЧИТЬ), Категория (4 варианта), Уверенность (0-100%), Обоснование. {список элементов}. Когда применять: фильтрация больших объёмов по объективным критериям (резюме, статьи, отзывы, заявки). Ограничения: для субъективных критериев ("креативность", "культурный фит") точность ниже. Комфортно обрабатывать 20-50 элементов в чате, для сотен нужны API

Тезисы

ТезисКомментарий
Модель точна на явных сигналах, ошибается на неявныхЧто это: LLM хорошо распознаёт прямые упоминания критерия в тексте ("3 года опыта Python"). Также хорошо распознаёт явное отсутствие критерия ("junior, без Python"). Но путается когда критерий упомянут косвенно — в другом контексте, не там где ожидается, или без явной связи с задачей. Почему: Модель ищет паттерны в тексте. Явный сигнал = сильный паттерн. Неявный сигнал = слабый паттерн, может быть неправильно интерпретирован. Применяй: Формулируй критерии через явные признаки. Вместо "хорошее знание Django" пиши "опыт коммерческой работы с Django указан явно". Проверяй вручную случаи где критерий упомянут косвенно — там концентрируются ошибки
📖 Простыми словами

Boundary Cases: как LLM разделяют данные на лёгкие и сложные для точной фильтрации

arXiv: 2510.06708

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

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

В основе лежат четыре категории: легкие включения и исключения (тут всё очевидно), а также граничные включения и исключения. Работает это за счет того, что LLM отлично выцепляет явные сигналы — конкретные цифры, названия стека или ключевые фразы. Если в резюме написано «3 года Python», модель кидает его в первую стопку. Если там «продавец арбузов» — в последнюю. А вот если там «опыт разработки 5 лет» без уточнения языка — это улетает в «граничную» зону, чтобы человек принял финальное решение.

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

Главный вывод: не пытайся выжать из AI идеальную точность там, где даже человек сомневается. Используй модель как умный пре-фильтр, который отсеивает 80% очевидного шлака и подсвечивает спорные моменты. Это экономит кучу времени и гарантирует, что ты не выкинешь крутого спеца или важную статью просто потому, что нейронка застеснялась сказать «да». Автоматизируй очевидное, проверяй сомнительное — это единственный способ не утонуть в данных.

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

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

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