1. Главная
  2. Docs
  3. Глоссарий
  4. Классификация обращений

Классификация обращений

7

Классификация обращений — задача отнести входящее сообщение к одной из категорий: тема, подразделение, приоритет, тональность, тип запроса. Одна из самых окупаемых задач автоматизации, потому что работа однородная и объёмная.

Почему это выгоднее генерации ответов

Классификация не требует, чтобы модель что-то придумывала: она выбирает из конечного набора. Отсюда три следствия.

Ошибка дешевле: неверно направленное обращение переправляется, тогда как неверный ответ клиенту приходится исправлять.

Качество измеряется просто: есть правильный ответ, считается доля совпадений.

Подходит компактная модель, а значит стоимость обращения на порядок ниже.

Из чего состоит решение

Связка разрезов. Рабочая схема — не одна классификация «на все случаи», а два-три независимых разреза: интент (что сделать), срочность (как быстро), тема (для отчётности). Каждый разрез — отдельная небольшая модель или отдельный запрос, и ошибка в одном не тянет за собой остальные. Как проектировать набор намерений — отдельная тема, она разобрана в статье «Интент».

Зачем разделять. Единый классификатор на пересекающиеся оси («срочная жалоба на доставку») плодит комбинаторное число классов, большинство из которых встречается в единичных экземплярах и не обучается. Раздельные оси дают каждому разрезу достаточно примеров на класс.

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

Что классифицируют на практике

Маршрутизация. В какое подразделение направить. Самый частый и самый окупаемый случай.

Приоритет. Срочное отделяется от обычного.

Тема. Для отчётности и понимания, о чём вообще спрашивают.

Тональность. Выявление недовольства для приоритетной обработки.

Тип запроса. Вопрос, жалоба, заявка, отказ.

Как устроить проверку

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

Смотреть надо не общую долю правильных, а матрицу ошибок: куда именно уходят неверно отнесённые. Обычно ошибки концентрируются на двух-трёх парах похожих категорий, и это поправимо — уточнением описаний или объединением категорий.

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

Метрики и дисбаланс классов

Считать по классам. Для каждой категории отдельно считаются точность (доля попавших сюда действительно сюда относящихся) и полнота (доля относящихся сюда, которые модель нашла). Общий процент по выборке маскирует провал на редких, но важных классах: срочных обращений обычно единицы процентов, и именно они теряются.

Дисбаланс. В реальных потоках один-два класса забирают 60–80% обращений, «хвост» — по доле процента на класс. Модель оптимизирует общий процент и игнорирует хвост; лечится весами классов при обучении, просмотром порогов для редких классов и честным ответом «прочее» вместо угадывания.

Цена ошибки асимметрична. Для приоритета важнее полнота по классу «срочное» (пропустить дорого), для маршрутизации — точность (лишнее перекидывание между очередями размывает ответственность). Пороги уверенности настраивают под это, а не под среднюю метрику.

Ручная разметка как узкое место

Это главный расход. На старте нужно порядка 300–500 размеченных обращений, далее — десятки на новый класс; прирост точности от разметки логарифмический, поэтому «разметим ещё тысячу» редко спасает — чаще проблему решает переделка набора категорий.

Инструкция важнее объёма. Спорные обращения, которых 10–20%, должны иметь в инструкции явные правила с примерами. Разногласия двух разметчиков на одной выборке — прямой показатель, что категория определена плохо; её надо объединять или переописывать.

Размечать умнее. При работе в режиме подсказки накапливается бесплатная разметка: категория, которую подтвердил человек. Доразмечать в первую очередь стоит обращения с низкой уверенностью модели — они дают наибольший прирост на метку времени.

Типичные ошибки

Слишком много категорий. Двадцать классов, различающихся нюансами, плохо разделяются и людьми, не только моделью.

Пересекающиеся категории — обращение честно относится к двум сразу. Либо разрешать несколько меток, либо задавать приоритет.

Отсутствие категории «прочее». Без неё нетиповое обращение попадает куда попало.

Отсутствие порога уверенности: при низкой уверенности разумнее отдать человеку, чем угадать.

Тональность по пятибалльной шкале. Разметчики не различают «скорее негативно» и «негативно» устойчиво, и модель тем более. Для практики хватает двух-трёх классов: негатив, нейтрально, позитив; тонкие градуляции не выдерживают даже проверки на согласованность людей.

Обучение на архиве, размеченном по старым правилам маршрутизации: модель воспроизводит прошлогоднюю структуру категорий, а не текущую.

Как внедрять постепенно

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

Это даёт две вещи одновременно. Накапливается размеченная выборка на реальных данных. И видно фактическую точность до того, как от неё что-то зависит.

Переключать на автоматический режим стоит по категориям: сначала те, где точность стабильно высокая, остальные оставить на человеке.

Что мерить после запуска

Долю переназначений — сколько обращений переправили после автоматической маршрутизации. Это прямой показатель качества и он собирается сам.

Время до первого ответа: ради его сокращения обычно всё и затевается.

Распределение по категориям во времени: резкое изменение означает либо новую проблему у клиентов, либо дрейф и деградацию классификатора. Дрейф проверяется контрольной размеченной выдержкой раз в квартал — подробнее в «Дрейфе данных».

Частые вопросы

Насколько точно классифицируются обращения?

Зависит от того, насколько чётко разделены категории. Если их немного и они не пересекаются, точность обычно высокая. Проверять надо на своей размеченной выборке и смотреть матрицу ошибок, а не общий процент.

Кто должен размечать обучающую выборку?

Тот, кто разбирает обращения в жизни. Разметка, сделанная разработчиком по инструкции, систематически расходится с реальными правилами маршрутизации, которые часто нигде не записаны.

Что делать с обращениями, попадающими в две категории?

Либо разрешить несколько меток, либо задать приоритет между категориями. Хуже всего оставить неоднозначность как есть: модель будет выбирать непредсказуемо, и точность на этих парах просядет.

Сколько обращений нужно разметить для старта?

Обычно 300–500 обращений с прицелом на 50–100 примеров на каждый значимый класс. Если класс не набирает пары десятков примеров из реального потока, он либо слишком мелкий, либо его стоит объединить с соседним — увеличивать выборку ради него бессмысленно.

Как понять, что классификатор деградировал?

По доле переназначений и сдвигу распределения категорий: деградация выглядит как постепенное перетекание обращений в один-два «притягивающих» класса. Подтверждается контрольной выдержкой в 100–200 свежих обращений с ручной разметкой.

Что почитать по теме