Поддержка для команды поддержки
С начала сентября сотрудники первой линии поддержки Цифрового блока ВШЭ начали использовать в работе рекомендации искусственного интеллекта. Сейчас искусственный интеллект дает рекомендации по нескольким направлениям, но в перспективе может превратиться в полноценную “нулевую” линию технической поддержки.
На данный момент искусственный интеллект помогает сотрудникам техподдержки определять тип, а в ближайшем времени - еще и компонент пользовательского запроса. Типов задач несколько - сообщение об ошибке, просьба о консультации и т.д. Компонентов на порядок больше. Под компонентами могут пониматься как корпоративные информационные системы, такие как СЭД или портал, так и отдельные крупные процессы, например, связанные с электронной почтой, выдачей оборудования и т.п. Если тип задачи или компонент определены неправильно, это может существенно затруднить оперативную помощь пользователю, так как обращение может быть маршрутизировано в отдел, который не занимается подобными вопросами, да еще и с некорректным SLA.
Для решения задачи определения правильного типа задачи и правильного компонента привлекли модели машинного обучения. Разработкой сервиса занимался Отдел веб-аналитики и моделирования Дирекции по порталу и мобильным приложениям. Результат работы искусственного интеллекта выводится на рабочее место менеджера только в качестве рекомендации.
Сервис принимает на вход данные о типе задачи пользователя. Прежде чем передать их на вход модели, текст запроса проходит этапы очистки и подготовки. Для этих операций используются библиотеки nltk и spacy, которые специализируются на обработке естественного языка. Из текста запроса удаляются URL, текст приводится к нижнему регистру, удаляются «лишние» слова (например, «подскажите», «пожалуйста») и знаки пунктуации, оставшиеся слова приводятся к их базовой форме (например, «подсказки» превращается в «подсказка»). Модель предсказывает тип задачи, к которому этот запрос относится. Затем сервис автоматически отправляет предсказания в систему Jira.
Первоначальная модель, обученная на нескольких десятках тикетов каждого типа, использовала метод «случайного леса» для предсказания предсказания типа запроса. Точность предсказания на контрольной группе составила 71%. Тогда обучающую выборку увеличили в 10 раз, уточнили стекинг моделей, к случайному лесу добавив градиентный бустинг, сделали ряд других улучшений. В результате точность предсказания выросла до более 85%.
Важно, что модель продолжает дообучаться на своих ошибках, исправленных куратором проекта из команды «Горячей линии» Цифрового блока НИУ ВШЭ.
Для определения правильного компонента такой метод работает менее эффективно. Дело в том, что стекингу классических моделей не хватает понимания контекста запроса. Модели, такие как бустинг и случайный лес, не учитывают последовательности слов и их значение в предложении. Они работают с признаками на фиксированном уровне, без учёта взаимосвязей между словами в тексте.
Так команда разработки пришла к нейроным сетям, решив взять уже обученную модель и добавить в нее дополнительный слой для классификации, где каждый нейрон отвечает за свой компонент. В итоге была дообучена нейронка ruBERTдля задачи мультиклассификации на 140 тыс. примерах из Jira. В результате текущая средняя точность составляет 81%, а на некоторых классах достигает и 90%.
Донастройка сервиса определения правильного компонента еще продолжается, тем временем разработчики уже думают над подходом к решению самой амбициозной задачи. Она заключается в том, чтобы давать автоматические ответы на типовые запросы пользователей, оставляя за человеком решение сложных и нетривиальных проблем. Для этого пригодится опыт, который уже был накоплен при создании рекомендательного чат-бота, который умеет подбирать для посетителей портала подходящие образовательные программы.