Первоначально опубликовано в Zendesk Engineering

Мир обслуживания клиентов полон вопросов. В Zendesk мы предлагаем продукт под названием Поддержка, который компании могут использовать для решения этих вопросов. Например, когда клиент отправляет электронное письмо, агент компании может использовать службу поддержки, чтобы быстро ответить, что приведет (надеюсь) к положительному решению и установлению счастливых отношений. Однако люди обычно сталкиваются с аналогичными проблемами, поэтому мы также предлагаем продукт под названием Руководство для публикации ответов на часто задаваемые вопросы.

Answer Bot - это система искусственного интеллекта, которая автоматически отвечает на заявки в службу поддержки, ища ответы, найденные в Zendesk Guide. Он работает путем приема огромных объемов текстовых данных для изучения языковой модели, которую затем использует для чтения входящих билетов. Понимая входящий тикет, он затем делает разумные предложения о том, какие статьи Руководства, вероятно, будут отвечать на вопрос конечного пользователя.

Превращение слов в числа

Интересным следствием лежащей в основе математики, лежащей в основе этой системы, является преобразование статей Руководства и билетов в службу поддержки в числовые векторы, называемые распределенными представлениями или вложениями.

Например,

'How do I change my password' → Answer Bot → [0.4, 3.35, 0.2, 5.04]

Answer Bot действительно хорош в назначении билетов и статей, близких по содержанию, векторам, близким в векторном пространстве. Это имеет большое практическое значение при оценке диапазона контента в Руководстве и поддержке, поскольку мы можем использовать методы машинного обучения, такие как кластеризация, для определения тем. Затем мы можем использовать это для создания простых визуализаций, которые позволят клиентам Zendesk увидеть:

  1. Контент, представленный в их экземплярах Руководства.
  2. Типы входящих вопросов, которые они видят в своих билетах.

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

Сложность визуализации распределенных представлений, которые создает Answer Bot, заключается в том, что они представляют собой 100-мерные векторы, что намного больше, чем обычные 2- или 3-мерные векторы, которые мы привыкли строить. Таким образом, хотя мы можем математически определять кластеры информации по тикетам и статьям, нет естественного способа спроецировать эти точки данных на график, который людям было бы легко увидеть и интерпретировать.

К счастью, существуют мощные методы, позволяющие отображать данные большой размерности в пространстве низкой размерности. Метод, который мы выбрали здесь, называется t-распределенным стохастическим вложением соседей, или t-SNE.

t-SNE: полезный метод для визуализации данных большой размерности

Алгоритм t-SNE интересен тем, что он использует совместные распределения вероятностей для описания близости точек данных. Алгоритм выглядит так:

  1. T-распределение используется для создания совместного распределения вероятностей, которое описывает близость точек большой размерности.
  2. Второй набор точек данных низкой размерности (чтобы соответствовать каждой точке данных высокой размерности) инициализируется случайным образом, и t-распределение используется для создания другого совместного распределения вероятностей.
  3. Градиентный спуск используется для минимизации расхождения между двумя распределениями путем обновления значений точек данных с низкой размерностью.

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

Например:

'How do I change my password' → Answer Bot → T-SNE → [0.65, 0.209]
'How do I reset my password'   Answer Bot → T-SNE → [0.65, 0.319]
'How do I return an item'     → Answer Bot → T-SNE → [0.32, 0.85]
'I need to return a purchase' → Answer Bot → T-SNE → [0.36, 0.75]

Визуализация данных

На первом этапе мы решили сосредоточиться на содержании входящих заявок в службу поддержки. Мы отобрали несколько тысяч билетов, преобразовали их в 100D-векторы с помощью Answer Bot, а затем спроецировали в 2D-пространство с помощью t-SNE.

Как видите, если мы встраиваем все образцы заявок в службу поддержки из данной учетной записи в одно и то же двухмерное пространство, все выглядит запутанным и трудно интерпретируемым. Мы можем видеть некоторое разделение групп заявок, но не видим четких четко разделенных плотных кластеров. Затем мы удалили точки выбросов, чтобы получить четкое представление о кластеризованных данных.

Хотя интерпретируемость графика значительно улучшилась после удаления точек данных с выбросами, график все еще выглядел несколько неаккуратно. Поэтому, чтобы сделать этот график еще более презентабельным, мы удалили выбросы до с помощью t-SNE. Это дало гораздо более эстетичные и интерпретируемые результаты.

Настройка сюжетов

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

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

Помогать компаниям быть такими, какими их хотят видеть их клиенты

Если вы вспомните, что каждая точка на графиках выше представляет содержимое одного билета, выявляется огромная полезность. Используя t-SNE для визуализации заявок в службу поддержки, мы можем визуально фиксировать структуру входящего потока данных заявок в службу поддержки, что дает нам общее представление о распределении вопросов, задаваемых любому из наших клиентов. Для платформы Zendesk Guide это чрезвычайно ценно, поскольку дает нам возможность помочь нашим клиентам понять, о чем их спрашивают.

Если наши клиенты лучше понимают, что им нужно, они могут предложить лучшую поддержку клиентов. И в этом все мы в Zendesk.

Благодарим следующих друзей и коллег за полезные отзывы об этом сообщении в блоге: Арвен Гриффиоен, Ань Динь, Крис Хауслер, Сун-И Чеа, Эрик Пак, Майк Мортимер

Дальнейшее чтение: