3,583 papers
arXiv:2511.18727 68 24 нояб. 2025 г. FREE

LogSyn: Few-Shot промптинг для структурированной экстракции данных из текста

КЛЮЧЕВАЯ СУТЬ
LogSyn — это фреймворк, который использует few-shot промптинг (2-3 примера в контексте) для превращения неструктурированного текста в структурированный JSON. Суть: показываешь модели формат на примерах → она повторяет паттерн на новых данных. Исследование проведено на авиационных журналах техобслуживания, но принцип универсален для любой задачи «текст → структура».
Адаптировать под запрос

TL;DR

LogSyn — это фреймворк, который использует few-shot промптинг (2-3 примера в контексте) для превращения неструктурированного текста в структурированный JSON. Суть: показываешь модели формат на примерах → она повторяет паттерн на новых данных. Исследование проведено на авиационных журналах техобслуживания, но принцип универсален для любой задачи «текст → структура».

Главная находка: качество зависит от промпта критически — разница в точности между хорошим и плохим промптом составляет 24%. Это значит, что пара неудачных примеров может обрушить результат на четверть. При этом few-shot даёт +10% к точности классификации по сравнению с zero-shot (без примеров) — примеры работают, но их нужно подбирать тщательно.

Метод работает в один запрос: промпт содержит инструкцию + примеры + новый текст → модель выдаёт JSON с нужными полями. Низкая температура (0.1) обеспечивает стабильность формата.


🔬

Схема метода

ОДИН ЗАПРОС:
[Инструкция] + [2-3 примера вход→выход] + [Новый текст] 
→ JSON с заданной структурой

Ключевые параметры:

  • Температура 0.1 — минимум вариативности, максимум консистентности
  • 2-3 примера — достаточно для паттерна, не перегружает контекст
  • JSON-схема в примерах — модель копирует структуру

🚀

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

Задача: Менеджер интернет-магазина получает сотни отзывов в день. Нужно автоматически разбирать их на: проблема, что хочет клиент, категория (доставка/качество/сервис/другое).

Промпт:

Ты — аналитик клиентского опыта. Преобразуй отзыв в структурированный JSON.

Формат вывода:
{
  "проблема": "краткое описание проблемы",
  "ожидание_клиента": "чего хочет клиент",
  "категория": "Доставка | Качество товара | Сервис | Другое"
}

ПРИМЕРЫ:

Отзыв: "Заказала платье на день рождения, пришло через 2 недели вместо обещанных 3 дней. Праздник прошёл, платье не пригодилось. Верните деньги!"
{
  "проблема": "Критическая задержка доставки — 2 недели вместо 3 дней",
  "ожидание_клиента": "Возврат денег",
  "категория": "Доставка"
}

Отзыв: "Кроссовки развалились через неделю, подошва отклеилась. За такие деньги ожидал лучшего качества."
{
  "проблема": "Дефект товара — подошва отклеилась через неделю",
  "ожидание_клиента": "Качественный товар за уплаченную цену",
  "категория": "Качество товара"
}

Отзыв: "Консультант в чате нагрубил, когда спросила про возврат. Никогда больше не куплю у вас."
{
  "проблема": "Грубость консультанта при обращении по возврату",
  "ожидание_клиента": "Вежливое обслуживание",
  "категория": "Сервис"
}

НОВЫЙ ОТЗЫВ:
"Получила посылку — внутри чужой заказ. Позвонила на горячую линию, ждала 40 минут, так и не дозвонилась. В итоге писала в Телеграм, там ответили только через сутки."

Выдай только JSON, без пояснений.

Результат: Модель выдаст JSON со структурой как в примерах. Поле «проблема» опишет путаницу с заказом и проблемы с поддержкой, «ожидание_клиента» — быстрое решение вопроса, «категория» — скорее всего «Сервис» или комбинация. Формат будет идентичен примерам.


🧠

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

Слабость LLM: Без примеров модель интерпретирует задачу по-своему. Попросишь «структурировать отзыв» — получишь что угодно: маркированный список, свободный текст, JSON с произвольными полями. Каждый запрос — лотерея.

Сильная сторона LLM: Модели отлично копируют паттерны. Покажи 2-3 примера с чётким форматом — она воспроизведёт его с высокой точностью. Это называется in-context learning: модель «учится» на примерах прямо в промпте, без дообучения.

Как метод это использует: Few-shot промпт создаёт «шаблон ожидания». Модель видит: вот вход, вот выход в JSON, вот категории. Когда приходит новый текст — она подставляет его в тот же паттерн. Температура 0.1 убирает креативность — модель выбирает наиболее вероятный следующий токен, что даёт консистентный формат.

Рычаги управления:

  • Количество примеров — 2-3 для простых задач, 4-5 для сложных классификаций
  • Разнообразие примеров — если есть редкие категории, обязательно включи пример для них
  • Температура — 0.1 для стабильности формата, выше если нужна вариативность в формулировках
  • «Только JSON» — убирает разговорную обёртку, чистый вывод

📋

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

Ты — {роль}. Преобразуй {тип_входных_данных} в структурированный JSON.

Формат вывода:
{
  "{поле_1}": "{описание_поля_1}",
  "{поле_2}": "{описание_поля_2}",
  "{поле_категории}": "{категория_1} | {категория_2} | {категория_3}"
}

ПРИМЕРЫ:

{тип_входных_данных}: "{пример_входа_1}"
{
  "{поле_1}": "{значение_1}",
  "{поле_2}": "{значение_2}",
  "{поле_категории}": "{категория}"
}

{тип_входных_данных}: "{пример_входа_2}"
{
  "{поле_1}": "{значение_1}",
  "{поле_2}": "{значение_2}",
  "{поле_категории}": "{категория}"
}

{тип_входных_данных}: "{пример_входа_3}"
{
  "{поле_1}": "{значение_1}",
  "{поле_2}": "{значение_2}",
  "{поле_категории}": "{категория}"
}

НОВЫЙ {тип_входных_данных}:
"{новый_вход}"

Выдай только JSON, без пояснений.

Что подставлять:

  • {роль} — кто обрабатывает данные (аналитик, редактор, HR)
  • {тип_входных_данных} — что на входе (отзыв, резюме, тикет)
  • {поле_N} — какие данные извлекаем
  • {поле_категории} — классификация с перечислением опций через |
  • Примеры — реальные данные из твоей задачи, минимум 2-3 штуки

⚠️

Ограничения

⚠️ Чувствительность к примерам: Точность может упасть на 24% от неудачных примеров. Если результаты нестабильны — экспериментируй с другими примерами.

⚠️ Редкие категории: Если категория редкая и не представлена в примерах — модель будет ошибаться именно на ней. Включай примеры для всех важных категорий.

⚠️ Жаргон и аббревиатуры: Если в данных специфическая терминология — добавь расшифровку в промпт или используй примеры с этими терминами.


🔍

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

Команда взяла 6,169 записей из реальных журналов техобслуживания авиации — каждая запись содержала описание проблемы и принятые меры. Задача: превратить свободный текст в структурированный JSON с категорией из 8-уровневой онтологии.

Сравнили четыре подхода: few-shot (LogSyn), zero-shot (без примеров), rule-based NER (регулярки + spaCy), и fine-tuned BERT. Few-shot победил по всем метрикам: accuracy 90.2% против 89% у zero-shot, но главное — macro-F1 вырос с 0.69 до 0.76 (+10%). Macro-метрики важны, потому что считают все категории равноправно — даже редкие.

Интересная находка: разброс точности между разными промптами — 24%. Это значит, что сам по себе подход «добавь примеры» не гарантирует успех — важно какие примеры. Исследователи также использовали LLM-as-a-Judge для масштабной оценки: вторая модель ставила оценки 1-5 за точность. Средний балл — 4.7 из 5. Это подтверждает, что few-shot даёт семантически корректные результаты, а не просто формально правильный JSON.


📄

Оригинал из исследования

Problem: #2 & 4 CYL ROCKER COVER GASKETS ARE LEAKING.
Action Taken: REMOVED & REPLACED GASKETS.

Output:
{
  "summary_problem": "Rocker cover gasket leaks in cylinders 2 and 4 were reported.",
  "summary_action": "The leaking rocker cover gaskets were replaced on cylinders 2 and 4.",
  "failed_component": "Rocker Cover Gaskets (Cyl 2 & 4)",
  "category": "Powerplant - Sealing & Gaskets"
}

Контекст: Исследователи использовали этот формат для классификации авиационных логов в двухуровневую онтологию (система → подсистема). Температура 0.1 обеспечивала стабильность JSON-структуры.


📌

Адаптации

💡 Адаптация для HR-скрининга резюме:

Ты — HR-аналитик. Преобразуй описание опыта из резюме в структурированный JSON.

Формат вывода:
{
  "ключевые_навыки": "список через запятую",
  "уровень": "Junior | Middle | Senior",
  "сфера": "Разработка | Маркетинг | Продажи | Аналитика | Другое",
  "красные_флаги": "если есть — что настораживает"
}

ПРИМЕРЫ:

Опыт: "3 года работал тимлидом в Яндексе, управлял командой из 8 человек, запустили 2 продукта с нуля. До этого 2 года разработчиком в стартапе."
{
  "ключевые_навыки": "управление командой, запуск продуктов, разработка",
  "уровень": "Senior",
  "сфера": "Разработка",
  "красные_флаги": "нет"
}

Опыт: "Полгода стажировался в маркетинге, вёл соцсети компании. Сейчас ищу первую работу."
{
  "ключевые_навыки": "SMM, базовый маркетинг",
  "уровень": "Junior",
  "сфера": "Маркетинг",
  "красные_флаги": "нет коммерческого опыта"
}

НОВЫЙ ОПЫТ:
"{вставить текст из резюме}"

Выдай только JSON, без пояснений.

🔧 Техника: иерархическая категоризация

Если категорий много — используй двухуровневую структуру как в оригинале. Вместо плоского списка «Доставка | Качество | Сервис» делай «Система - Подсистема»: «Логистика - Сроки доставки», «Логистика - Состояние упаковки», «Продукт - Дефект», «Продукт - Несоответствие описанию». Это помогает модели точнее классифицировать и даёт тебе более гранулярную аналитику.


🔗

Ресурсы

Работа: LogSyn: A Few-Shot LLM Framework for Structured Insight Extraction from Unstructured General Aviation Maintenance Logs (INCOM 2026)

Авторы: Devansh Agarwal, Maitreyi Chatterjee (Cornell University), Biplab Chatterjee (AI Airport Services Ltd)

Датасет: Aircraft Historical Maintenance Dataset (2012–2017) — Kaggle

Ключевые референсы: Brown et al., 2020 — Language Models are Few-Shot Learners (GPT-3 paper)


📖 Простыми словами

Суть LogSyn в том, чтобы превратить горы невнятных записей механиков в чистую базу данных, не нанимая армию аналитиков. Проблема в том, что LLM по своей природе — это болтливые сказочники, а не строгие бухгалтеры. Если просто попросить нейронку «разбери этот лог», она начнет импровизировать, менять формат и нести отсебятину. Метод LogSyn заставляет модель работать как жесткий классификатор через механизм few-shot промптинга: ты даешь ей 2–3 эталонных примера «вход-выход», и она моментально схватывает структуру, превращая технический жаргон в аккуратный JSON.

Это как если бы ты привел стажера в гараж, где старый мастер 20 лет записывал ремонты на обрывках газет каракулями вроде «№4 потекло, подтянул хреновину». Вместо того чтобы заставлять стажера переписывать всё вручную, ты показываешь ему три примера: «Смотри, если написано потекло, пишем утечка, если подтянул, пишем обслуживание». Стажер (в нашем случае — GPT-4 или Gemini) мгновенно понимает правила игры и начинает щелкать тысячи записей с точностью 90%. Формально он просто подражает, но по факту — создает структуру из хаоса.

Внутри системы работают конкретные рычаги. Первый — Controlled Abstraction Generation (CAG): модель не просто копирует текст, а сжимает его до сути, выкидывая мусор. Второй — иерархическая онтология: ты заранее даешь список из 8 категорий (например, «Топливная система» или «Зажигание»), и модель обязана впихнуть проблему в одну из них. Третий — детерминированный вывод: ставим temperature = 0.1, чтобы у нейронки не было желания «покреативить». В итоге на выходе всегда получается предсказуемый код, который легко засунуть в Excel или базу данных.

Исследование проводили на логах самолетов Cessna, но принцип универсален. Эта фигня одинаково круто сработает для автосервисов, железных дорог или заводских станков — везде, где мужики в мазуте пишут отчеты «от руки». Тебе не нужно обучать свою нейронку или покупать дорогущее железо. Достаточно грамотного промпта и API. SEO для поиска умирает, структурирование данных для аналитики рождается.

Короче: хватит хранить отчеты в виде «братских могил» из текстовых файлов, которые никто никогда не прочитает. 3 примера в промпте, JSON на выходе, и у тебя готова предиктивная аналитика. Кто внедрит это сейчас, поймет, почему у него ломаются станки, еще до того, как они реально встанут. Остальные так и будут гадать, почему бюджет на запчасти улетает в трубу.

Сгенерировано: 21.12.2025 16:55 | ArXiv Data Collector

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

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

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