TL;DR
Automated Skill Decomposition — метод разбиения широкого навыка (например, "анализ данных") на список конкретных под-навыков ("очистка данных", "визуализация", "SQL-запросы"). Исследователи проверили, как LLM справляется с такой задачей и как оценивать качество декомпозиции относительно экспертных онтологий (ESCO, ROME).
Главная проблема: LLM без структурных подсказок генерирует декомпозицию с непредсказуемой гранулярностью — то слишком общие формулировки, то чрезмерно детальные. Причина: модель не знает на каком уровне детализации остановиться и может уйти в смежные области. Например, для "анализа данных" может выдать и "машинное обучение" (слишком широко), и "настройка параметров sklearn" (слишком узко).
Решение: Явная структура промпта + few-shot с примерами из онтологии. Промпт задаёт формат вывода (существительные, ровно k элементов, через запятую, без инструментов/профессий). Few-shot использует label-disjoint примеры — декомпозиции других навыков той же глубины, которые не пересекаются с целевым выводом. Это стабилизирует формулировки и уровень детализации.
Схема метода
ШАГ 1: Промпт с форматом
Задача: Разложи навык {S_broad} на {k} под-навыков
Формат: существительные, через запятую, ровно k штук
Ограничения: не повторяй родительский навык, не выводи инструменты/профессии
→ текст промпта
ШАГ 2 (опционально): Few-shot примеры
Если few-shot: добавь 2-3 примера декомпозиции других навыков
Примеры берутся из онтологии, но label-disjoint (не пересекаются с целевым)
→ промпт + примеры
ШАГ 3: Генерация
LLM генерирует список k под-навыков
→ сырой список
ШАГ 4: Нормализация
Lowercase, убрать дубликаты (через Sentence-BERT paraphrase check)
→ очищенный список
ШАГ 5: Выравнивание с онтологией
Каждый под-навык матчится с узлами онтологии через cosine similarity
Считается semantic F1 (насколько близко семантически)
Считается hierarchy-aware F1 (на правильном ли уровне в дереве)
→ метрики качества
Пример применения
Задача: Ты работаешь в EdTech-стартапе и разрабатываешь курс по профессии "Продуктовый менеджер". Нужно понять, какие конкретные навыки входят в общую компетенцию "управление продуктом". Сырая декомпозиция от LLM может быть хаотичной: где-то "проводить A/B-тесты" (конкретно), где-то "знать бизнес" (слишком широко).
Промпт:
Разложи навык "управление продуктом" на 8 конкретных под-навыков.
Формат:
- Существительные или короткие фразы
- Ровно 8 элементов
- Через запятую
- Не повторяй "управление продуктом"
- Не выводи инструменты (например, "Jira") или профессии (например, "аналитик")
Примеры декомпозиции других навыков:
1. Навык: "маркетинговая аналитика"
Под-навыки: анализ конверсий, когортный анализ, attribution modeling, веб-аналитика, расчёт LTV, A/B тестирование, анализ воронки продаж, работа с метриками удержания
2. Навык: "управление проектами"
Под-навыки: планирование спринтов, декомпозиция задач, оценка сроков, управление рисками, координация команды, отчётность по прогрессу, контроль бюджета, управление изменениями
Теперь разложи навык "управление продуктом":
Результат: Модель выдаст 8 под-навыков примерно такого уровня детализации, как в примерах. Few-shot заякорит стиль формулировок (существительные, не глаголы), уровень конкретности (не "знать бизнес", а "анализ рынка") и гранулярность (ни слишком общо, ни слишком узко). Вывод будет в формате списка через запятую, который можно сразу использовать для структуры курса.
Почему это работает
Слабость LLM: Без якорей модель не знает на каком уровне абстракции остановиться. Для "управления продуктом" она может выдать и "стратегию" (слишком широко), и "настройку Mixpanel" (слишком узко). Гранулярность плавает, потому что в тренировочных данных навыки описаны на разных уровнях.
Сильная сторона LLM: Модель хорошо подражает паттернам. Если дать примеры декомпозиции (few-shot), она уловит стиль формулировок, уровень детализации и структуру. Sentence-BERT embeddings показывают, что модели улавливают не только слова, но и семантический уровень — "анализ конверсий" и "когортный анализ" находятся на одной глубине абстракции.
Механика метода: Few-shot с label-disjoint примерами работает как структурный prior. Примеры задают рамку ("вот такой уровень детализации нужен"), но не раскрывают правильный ответ (примеры из других доменов). Явный формат ("8 элементов, через запятую, без инструментов") убирает вариативность вывода и делает результат парсируемым.
Рычаги управления:
- Число примеров (k_fs): 2-3 оптимально. Больше — риск переобучения на стиль примеров, меньше — паттерн не закрепится
- Depth-proximity: Примеры должны быть с той же глубиной, что и целевой навык (если целевой навык имеет 5-12 детей, примеры тоже)
- Label-disjoint: Примеры не должны пересекаться с целевым доменом (для "управления продуктом" не брать примеры из product management)
- Число элементов (k): 5-12 — баланс между полнотой и усваиваемостью
Шаблон промпта
Разложи навык "{навык}" на {число} конкретных под-навыков.
Формат:
- Существительные или короткие фразы
- Ровно {число} элементов
- Через запятую
- Не повторяй "{навык}"
- Не выводи инструменты или профессии
{если_few_shot_добавь_2-3_примера_декомпозиции_других_навыков}
Теперь разложи навык "{навык}":
Как заполнить:
{навык}— широкая компетенция для разбиения{число}— обычно 5-12 (баланс между полнотой и обозримостью){примеры}(опционально) — декомпозиции других навыков похожей глубины, но из других доменов
Ограничения
⚠️ Контекст исследования: Метод тестировали на экспертных онтологиях (ESCO, ROME — европейские каталоги навыков). Для бытовых задач или креативных доменов "правильная" декомпозиция субъективна.
⚠️ Few-shot для сильных моделей: На GPT-5/Claude Opus few-shot может снизить recall, если примеры плохо подобраны — модель "зациклится" на стиле примеров и упустит важные аспекты целевого навыка.
⚠️ Нужна постобработка: Сырой вывод LLM требует дедупликации (модель может сгенерировать парафразы), нормализации (lowercase, пунктуация) и валидации (убрать инструменты/профессии).
⚠️ Не для всех задач: Метод для навыков/компетенций. Для декомпозиции физических объектов, процессов или абстрактных концепций нужна другая структура промпта.
Как исследовали
Команда взяла ROME-ESCO-DecompSkill — бенчмарк из 288 навыков с 5-12 детьми в онтологии. Протестировали 7 LLM (GPT-5, DeepSeek V3, LLaMA4 Scout, и др.) на двух режимах: zero-shot (только инструкция) и few-shot (инструкция + 2-3 примера из онтологии).
Что измеряли:
- Semantic F1 — насколько предсказания семантически близки к gold standard (через cosine similarity embeddings + Hungarian matching)
- Hierarchy-aware F1 — на правильном ли уровне в дереве (точное совпадение = 1.0 кредита, потомок = 0.5, вне дерева = 0)
Главная находка: Zero-shot уже даёт крепкий baseline (F1 ≈ 0.39-0.49), но few-shot стабилизирует гранулярность и улучшает Hier-F1 для большинства моделей. Особенно сильный эффект на средних моделях (K2 Instruct: 0.4353 → 0.4604). Для топовых моделей (GPT-5, LLaMA4) few-shot даёт скромный прирост, но может снизить recall, если примеры плохо подобраны.
Удивительно: Few-shot не всегда медленнее zero-shot. Иногда latency падает (8.51s → 5.89s), потому что структурированные примеры ведут к более компактному выводу. Zero-shot без рамок может генерировать длинные продолжения, которые съедают время.
Инсайт для практики: Онтология работает как структурный prior, даже если не используется напрямую в генерации. Label-disjoint примеры регуляризируют модель — снижают hallucinations, улучшают специфичность, стабилизируют таксономическое размещение.
Ресурсы
Automated Skill Decomposition Meets Expert Ontologies: Bridging the Granularity Gap with LLMs
LE Ngoc Luyen, Marie-Hélène ABEL
Université de technologie de Compiègne, CNRS, Gamaizer
Датасет: github.com/lengocluyen/ROME-ESCO-DecompSkill
