TL;DR
UMR-CoT — техника промптинга, которая вставляет промежуточный шаг между задачей и ответом. Вместо прямого "прочитай отзыв → найди тональность по категориям", модель сначала строит структурированное семантическое представление текста (UMR), потом из него извлекает финальный ответ. Работает в одном промпте через четыре явных шага.
Модели плохо справляются с многоаспектным анализом "в лоб" — в отзыве "пицца хорошая, обслуживание плохое" есть несколько категорий с разными тональностями, и при прямом вопросе модель теряет связь между аспектом и его оценкой. Пытаясь решить всё сразу (найти аспекты, сопоставить с категориями, определить тональность), модель путается: то приписывает негатив не той категории, то пропускает аспект.
UMR-CoT разбивает процесс на 4 явных шага в одном промпте: (1) построй формальную схему смысла текста (UMR), (2) извлеки из неё аспекты и мнения, (3) сопоставь аспекты с категориями, (4) определи тональность. Промежуточная структура фиксирует связи между элементами — что про что сказано — и модель не путается при финальном извлечении.
Схема метода
Все шаги в одном промпте:
ШАГ 1: Построй UMR-парсинг текста
→ структурированное представление в формальном синтаксисе
ШАГ 2: Извлеки аспекты и мнения из UMR
→ список пар "Aspect: [аспект], Opinion: [мнение]"
ШАГ 3: Сопоставь аспекты с предзаданными категориями
→ пары "Aspect: [аспект], Category: [категория]"
ШАГ 4: Определи тональность по мнению
→ финальный список [('категория', 'тональность')]
Пример применения
Задача: Анализируешь отзывы на ресторан с Яндекс.Карт — нужно вытащить по каким категориям отзыв позитивный, а по каким негативный. Один отзыв может хвалить кухню, но ругать сервис.
Промпт:
Выполни структурированный анализ в четыре чётких шага.
Шаг 1: Построение UMR-представления
Вот примеры предложений и их UMR-парсинга. Каждое предложение
помечено "::snt", за ним следует его UMR-представление.
Примеры UMR:
::snt Пицца была вкусной.
(s1 / have-attribute-91
:ARG1 (p / пицца)
:ARG2 (v / вкусный)
:aspect state
:temporal (b / быть
:tense past))
::snt Официанты работали медленно.
(s2 / работать-01
:ARG0 (o / официант
:quant multiple)
:manner (m / медленный)
:aspect activity)
Теперь разбери следующий отзыв:
"Харчо просто огонь, но официанты еле ползают — ждали счёт полчаса.
Цены кусаются, зато атмосфера уютная."
Шаг 2: Извлечение аспектов и мнений
Из UMR-представления извлеки все аспекты, относящиеся к ресторану,
и мнения о них. Формат:
Aspect: [аспект], Opinion: [мнение]
Шаг 3: Категоризация
Сопоставь каждый аспект с категорией из списка:
Категории: еда, сервис, цена, атмосфера, расположение
Формат:
Aspect: [аспект], Category: [категория]
Шаг 4: Определение тональности
Для каждой пары аспект-категория определи тональность (positive/neutral/negative)
на основе мнения из Шага 2.
Выдай результат как Python-список:
[('категория', 'тональность'), ...]
Результат:
Модель покажет четыре блока: (1) UMR-разбор отзыва в формальном синтаксисе с сущностями и атрибутами, (2) извлечённые пары "харчо-огонь", "официанты-еле ползают", "цены-кусаются", "атмосфера-уютная", (3) сопоставление с категориями: харчо→еда, официанты→сервис, цены→цена, атмосфера→атмосфера, (4) финальный список [('еда', 'positive'), ('сервис', 'negative'), ('цена', 'negative'), ('атмосфера', 'positive')].
Почему это работает
Слабость: LLM при прямом вопросе "найди категории и тональность" решает несколько подзадач параллельно — синтаксис, семантика, сопоставление, классификация. В многоаспектных текстах модель теряет привязку между упоминанием и оценкой: "хорошо" про что-то первое может "прилипнуть" к чему-то второму в выводе.
Сильная сторона: LLM хорошо следует явным пошаговым инструкциям и работает со структурированными форматами. Если дать промежуточный формат, модель фиксирует в нём связи, а не держит "в голове".
Как метод использует это: UMR — формальная схема смысла с явными связями (кто-что-как). Построив её, модель материализует понимание текста. На втором шаге извлечение идёт уже не из размытого текста, а из чёткой структуры — меньше потерь и путаницы. Это как сначала нарисовать граф связей на бумаге, потом по нему отвечать, вместо попытки держать всё в голове сразу.
Рычаги управления:
- Формат промежуточного представления — UMR сложный и требует примеров. Можно заменить на более простую структуру (таблицу, маркированный список с явными связями) под свои задачи — главное, чтобы связи были явными.
- Количество шагов — авторы используют 4 шага. Можно сократить до 2-3 для простых случаев или добавить шаг проверки для критичных задач.
- Примеры UMR — авторы дают 3 предложения из корпуса. Чем больше примеров, тем точнее формат, но длиннее промпт. Для своих задач можно создать 1-2 своих примера в упрощённом формате.
Шаблон промпта
Выполни структурированный анализ в {количество_шагов} чётких шага.
Шаг 1: Построение структурированного представления
Вот примеры текстов и их структурированных представлений.
Изучи формат.
Примеры:
{примеры_UMR_или_упрощённого_формата}
Теперь разбери следующий текст:
"{текст_для_анализа}"
Шаг 2: Извлечение {целевых_элементов}
Из структурированного представления извлеки все {что_извлекать}.
Формат:
{формат_вывода_шага_2}
Шаг 3: Сопоставление с {целевыми_категориями}
Сопоставь каждый элемент с категорией из списка:
Категории: {список_категорий}
Формат:
{формат_вывода_шага_3}
Шаг 4: {финальная_классификация}
Для каждой пары определи {что_определить} ({возможные_значения}).
Выдай результат как список:
{формат_финального_вывода}
Плейсхолдеры:
- {количество_шагов} — обычно 4, можно 2-3 для простых задач
- {примеры_UMR_или_упрощённого_формата} — 1-3 примера разбора в нужном формате
- {текст_для_анализа} — отзыв, комментарий, любой текст для анализа
- {целевых_элементов} / {что_извлекать} — аспекты и мнения, темы и упоминания, сущности и атрибуты
- {целевыми_категориями} / {список_категорий} — предзаданный список категорий для классификации
- {что_определить} / {возможные_значения} — тональность (positive/neutral/negative), приоритет, статус и т.д.
- {формат_вывода_шага_X} — как оформлять результат каждого шага
- {формат_финального_вывода} — Python-список, JSON, таблица
🚀 Быстрый старт — вставь в чат:
Вот шаблон структурированного анализа с промежуточным представлением.
Адаптируй под мою задачу: [опиши свою задачу: что анализируешь,
какие категории нужны, что хочешь извлечь].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит какой формат промежуточного представления использовать (упрощённый или UMR-подобный), какие категории и значения нужны, нужны ли примеры — потому что для структурированного анализа важен точный формат каждого шага. Она возьмёт четырёхшаговый паттерн и адаптирует под твою задачу.
Ограничения
⚠️ Эффективность зависит от модели: На больших моделях (Gemini-2.5-Pro) метод может ухудшить результат на 2-3% по сравнению с прямым CoT. Работает сопоставимо или лучше на моделях среднего размера (Qwen3-8B). Для каждой модели нужно тестировать.
⚠️ Требует примеры формата: UMR — сложный формальный синтаксис, модель не знает его без примеров. Нужно включать 1-3 примера UMR-разбора в промпт, это увеличивает длину. Или создавать свой упрощённый формат.
⚠️ Увеличение токенов: Четыре шага с промежуточными выводами генерируют больше токенов, чем прямой ответ. На простых задачах это избыточно — метод полезен для сложных многоаспектных текстов, не для "определи тональность простого отзыва".
⚠️ Статистически не подтверждено: В исследовании метод не показал статистически значимого улучшения (p=0.543). Эффект есть на отдельных комбинациях модель-задача, но не универсален.
Как исследовали
Исследователи проверили идею на задаче ACSA (Aspect-Category Sentiment Analysis) — извлечение пар (категория, тональность) из отзывов. Взяли три модели разного калибра: Qwen3-4B, Qwen3-8B (открытые модели среднего размера) и Gemini-2.5-Pro (топовая проприетарная модель). Протестировали на четырёх датасетах: Laptop16 (отзывы на ноутбуки, 67 категорий — самый сложный), Restaurant16 (рестораны, 12 категорий), MAMS (рестораны, 8 категорий), Shoes (обувь, 21 категория, полные отзывы, а не предложения — свежий датасет 2024 года, точно не было в обучающих данных).
Сравнивали два промпта: baseline CoT (прямой: "прочитай → выдай пары") против CoT with UMR (с промежуточным шагом). Для UMR давали примеры из корпуса UMR v1.0 — брали случайный файл из пяти заготовленных, из каждого файла первые три размеченных предложения. Это few-shot примеры формата, хотя сама задача решается zero-shot (без примеров ACSA-разметки). Оценивали по micro-F1 — стандартная метрика для ACSA, учитывает точность и полноту извлечения пар.
Результаты оказались неоднозначными: UMR помог Qwen3-8B на сложном Laptop16 (+14% F1: 36.38% vs 22.18%), но на том же датасете ухудшил результат Qwen3-4B (-12%). На других датасетах разница была в пределах 2-5% в обе стороны. Среднее по всем датасетам: Qwen3-8B показал паритет (43.83% UMR vs 43.77% baseline), а для Qwen3-4B и Gemini-2.5-Pro baseline был лучше на 2-3%.
Статистический анализ (трёхфакторный ANOVA) не выявил значимого эффекта метода (p=0.543) — главные факторы это модель (p<0.001) и датасет (p=0.003). Вывод: структурированное промежуточное представление может помочь, но эффект сильно зависит от архитектуры модели и характера данных. Похоже, что средние модели (Qwen3-8B) лучше используют явную структуру, чем очень маленькие (путаются в сложности) или очень большие (решают и так хорошо, структура мешает).
Адаптации и экстраполяции
🔧 Техника: упрощённая структура вместо UMR → доступнее, меньше токенов
UMR — формальный лингвистический синтаксис, требует примеров и сложен. Для практических задач можно заменить на свою простую структуру, сохранив принцип: явное промежуточное представление связей.
Вместо UMR-формата используй таблицу или маркированный список с ролями:
Шаг 1: Структурированное описание
Разбери текст на элементы в таблице:
| Что упомянуто | Что сказано | Про что это |
|---------------|-------------|-------------|
| [сущность] | [оценка] | [аспект] |
Шаг 2: Извлечение пар
Из таблицы возьми столбцы "Про что это" и "Что сказано".
Формат: [аспект]: [оценка]
Шаг 3: Сопоставление с категориями
...
Этот формат интуитивнее, не требует примеров UMR-синтаксиса, даёт тот же эффект — фиксирует связи явно. Подходит для любых задач, где нужно связать элементы: отзывы, резюме документов, анализ аргументов.
🔧 Техника: экстраполяция на анализ аргументов в дискуссии
Принцип "промежуточная структура связей" работает не только для тональности. Применим к анализу дискуссий — где кто какую позицию занимает, какие аргументы даёт:
Анализируй транскрипт дебатов в три шага:
Шаг 1: Построй карту позиций
Для каждого спикера определи позицию и аргументы:
Спикер: [имя]
Позиция: [за/против/нейтральная по теме X]
Аргументы: [список тезисов]
Шаг 2: Связи между аргументами
Определи какие аргументы кого опровергают:
Аргумент [A] от [спикер 1] опровергает Аргумент [B] от [спикер 2]
Потому что: [причина]
Шаг 3: Сводная таблица
Создай матрицу: строки = темы, столбцы = спикеры, ячейки = позиция + главный аргумент
Тот же паттерн: сначала структура → потом извлечение → потом сводка. Работает для совещаний, подкастов, комментариев под постом.
Ресурсы
Exploring Zero-Shot ACSA with Unified Meaning Representation in Chain-of-Thought Prompting
Filippos Ventirozos, Peter Appleby, Matthew Shardlow
Manchester Metropolitan University, Autotrader Research Group (Autotrader UK)
UMR v1.0 corpus (Unified Meaning Representation)
Датасеты: SemEval-2016 Task 5 (Laptop16, Restaurant16), MAMS, Shoes-ACOSI
