Как в Альфа-Банке создали чат-бот, который понимает и отвечает, словно человек

Это был абсолютный тупик. Осенью 2021 года команда чат-бота пыталась найти решение: уже третий месяц автоматизация запросов клиентов в приложении Альфа-Банка и в мобильном банке Альфа-Онлайн плавала между 38-40% и никак не хотела повышаться. Вдобавок другие банки заняли весь пьедестал рейтинга Markswebb Chatbot Rank, в то время как наш чат-бот независимые эксперты поставили только на 7-е место. Всего за год игру удалось перевернуть: получить 55% автоматизации и абсолютное лидерство в рейтинге. Команды чат-бота и продвинутой аналитики рассказывают по шагам, как решали эту задачу.

1. Заменили иностранный движок на российский

До 2021 года движком чат-бота Альфа-Помощник был Google Dialogflow. У нас не было задачи создавать собственную модель искусственного интеллекта для анализа и обработки естественного языка, поэтому мы использовали проверенное решение. Алгоритмы Google Dialogflow умели работать с русским языком и речью, а политика кибербезопасности позволяла использовать облачные сервисы, вокруг которых надстроили микросервисную архитектуру. Это решение позволило поднять автоматизацию обработки запросов в чате до 38-40% при точности распознавания 90%.

Но для дальнейшего роста автоматизации пришлось искать другое решение. В конце 2021 мы провели исследование и выбрали компанию Just AI из Санкт-Петербурга. Альфа-Помощника перенесли на их решение JAICP, внутри которого есть свой NLP-движок (natural language processing — обработка естественного языка). Можно сказать, мы предвидели будущее: уже тогда использовали российское решение, хотя в тот момент никто и не думал об импортозамещении.

Параллельно мы развивали внутренние компетенции в Data Science и разработали несколько моделей для обработки информации и вывода ответов в чат-боте. В итоге в 2022 году автоматизацию удалось довести до 55%.

2. Улучшили понимание запросов пользователей

Обычно люди формулируют вопросы и намерения в виде реплик естественной, разговорной речи. Вот пример типичного звонка в контакт-центр: «Здравствуйте, подскажите, пожалуйста, я могу вот по телефону узнать сумму задолженности. Я так примерно знаю, но вот… Хотела… Не знаю там. Просто с сентября мы не платим и… ааа… считать сумму, которая мне приходит на ну в вот почтовый ящик или там какие-то проценты ещё бывают, не знаю».

Понять, о чём тут речь, довольно сложно. Можно выделить ряд ключевых слов: «сумма», «задолженность», «не платим», «проценты». И уже на их основе предположить, что нужна информация о просроченной задолженности по кредиту и начисленным процентам. Задача, которую пользователь формулирует в конкретной реплике, называется интент: «Я хочу узнать текущую сумму задолженности по кредиту с учётом просроченной выплаты и начисленных процентов». Чтобы обучить бот распознавать запросы, необходимо чётко сформулировать различия между интентами. Дата-сайентисты используют для этого кластеризацию запросов.

Что такое кластеризация

Это статистический метод, название которого происходит от англ. cluster (виноградная гроздь). Множество объектов разбивается на несколько подмножеств на основании общего свойства. Например, на бильярдном столе перемешаны белые, чёрные и красные шары, и мы можем собрать их в три группы по цвету. Каждая из них и будет отдельным кластером.

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

3. Собрали команду асессоров и улучшили методологию разметки данных

Одни и те же данные всегда должны размечать несколько человек. Если это будет делать только один асессор, группы интентов окажутся очень «зашумленными» (это естественное следствие индивидуальных когнитивных искажений каждого человека), и алгоритмы будут их путать. Когда образец данных размечают несколько асессоров, точность разметки превышает 80%. Поэтому для разметки данных мы создали целое подразделение разметчиков, или асессоров.

Что такое разметка данных?

Обучение искусственного интеллекта требует огромного тренировочного набора данных (датасета) из входящих запросов и правильных ответов. Чтобы модель-классификатор смогла научиться выявлять в запросе верный интент, сначала его должен отметить асессор.

В примере выше разметчик выберет продукт — «кредит», а также его атрибут — «задолженность». Получив тысячи вопросов с подобной разметкой, модель в итоге сможет сама автоматически выявлять необходимый интент из запроса пользователя.

Чтобы уменьшить число ошибок асессоров при разметке данных, команда дата-сайентистов решила проводить разметку иначе. При стандартном подходе разметчик должен ответить «Да» или «Нет» на вопрос: «Подходит ли интент к определённому классу?». Известно, что асессоры статистически чаще выбирают вариант «Да». В результате при обучении на таких данных алгоритм не сможет установить: «А не существует ли ещё более подходящий класс для такого интента?» Если вместо простого «да/нет» предложить асессорам выбрать «один вариант из нескольких альтернатив», то точность разметки повышается на 20-30%.

Кроме того, для упрощения процесса разметки дата-сайентисты внедрили нативную иерархию классов, которую уже используют в банке. Теперь любой вопрос пользователя можно связать либо с каким-то банковским продуктом (кредит, вклад, счёт и так далее), либо с каналом взаимодействия с банком (офис, мобильное приложение, прочее).

Также дата-сайентисты отказались от традиционных вариантов разметки в Excel и перевели весь процесс на open source решение Label Studio. Аналитики отбирают примеры, которые нужно разметить, и загружают туда задания для асессоров.Обучающая выборка бота состоит из 200 000 размеченных образцов данных — конкретных вопросов пользователей с установленным интентом. А количество интентов, которые алгоритмы чат-бота способны определить в реальном диалоге, выросло с 15 до 270, в ближайшее время их будет уже 350. Тогда как, например, в исследовании Markswebb задействовано только 50 наиболее популярных.

Раньше в тренировочных наборах данных для алгоритма было много простых примеров и мало сложных. Это приводило к тому, что на практике Альфа-Помощник мог ответить только на лёгкие вопросы. Теперь он понимает большинство запросов пользователей — даже многосоставных, включающих по две темы сразу. При этом точность распознавания запросов превышает 93%. То есть в 93 случаях из 100 алгоритм точно определяет суть запроса без дополнительных уточнений.

На два запроса сразу Альфа-Помощник отвечает разными сообщениями.

4. Стали использовать несколько моделей одновременно

Первая модель, которую мы задействуем в обработке запроса пользователей — стандартный классификатор. Он определяет по реплике ведущий интент. Вторая модель отвечает за подсказки (suggest): вы начинаете вводить запрос, а алгоритм предлагает одно или несколько возможных завершений фразы. Третья отвечает за «чипсы» — виджеты с типовыми запросами, которые появляются под репликой в чате, например: «Когда придёт кэшбэк» или «Пролонгация вклада».

Когда в 2021 году мы зашли в тупик при увеличении автоматизации, мы разобрали сценарий диалога и пришли к выводу, что нужно уходить от классификации интента к фразе целиком. Так мы внедрили контекст диалога — теперь умеем распознавать запросы более детально.

Наталья Балыбердина, руководитель портфеля цифровых продуктов Альфа-Банка
Вот как выглядят чипсы и подсказки чат-бота

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

Внутри этой машинерии 40% нашей внутренней разработки, ещё 60% крутится на Just AI. Мы используем рекуррентные нейронные сети (RNN). Они работают с таким же качеством, как более сложные модели-трансформеры, но требуют меньше ресурсов.

Евгений Смирнов, руководитель лаборатории машинного обучения Альфа-Банка

5. Предоставили полный сервис прямо внутри чат-бота

Альфа-Помощник больше не отправляет людей «гулять» по мобильному приложению, а решает все вопросы внутри диалога прямо в чате.

Если человек обратился в чат с вопросом: «Какая сумма платежа?», значит, по какой-то причине он не нашёл эту информацию в мобильном приложении. Но если мы отправляем его куда-то ещё — идите, посмотрите в том-то месте в приложении, там всё написано — это не сервис. Клиенты вновь и вновь возвращаются с тем же запросом. Поэтому ответ они должны получить там же, где задали вопрос.

Когда запрос подразумевает не только получение информации, но и какое-либо действие (например, «Я хочу подключить смс-оповещения»), мы стремимся обеспечить весь сервис в точке касания: По какой карте — Выбор — Подключить смс.

Наталья Балыбердина, руководитель портфеля цифровых продуктов Альфа-Банка
Сумму кэшбэка Альфа-Помощник покажет сразу в чате, ничего искать не надо.

6. Стали внимательнее слушать людей

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

Чек-лист: как создать лучший в России чат-бот

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

  • Предоставлять всю информацию в точке касания с пользователем.
  • Минимизировать действия по формированию запроса с помощью подсказок, виджетов или выбора вариантов.
  • Поддерживать непрерывность сессии.
  • Создавать позитивный клиентский опыт.
0
76 комментариев
Написать комментарий...
Марат Мансуров

не начисляют деньги по программе "Деньги Вам и Друзьям", вы мне должны 500р за то, что я карту забрал, и 1000р за привод друга

Ответить
Развернуть ветку
Альфа-Банк
Автор

Здравствуйте, Марат!
Если условия выполнили, то деньги всегда начисляем во время.
Напишите нам в личные сообщения ваши ФИО и дату рождения, всё проверим.

Ответить
Развернуть ветку
73 комментария
Раскрывать всегда