Решение для автоматизации обработки настроений твитов для эскалации запросов в службу поддержки авиакомпаний

Я объясню комплексное техническое решение, которое поможет упростить процесс поддержки вашей компании. Я остановлюсь на запросах поддержки авиакомпаний, полученных от Twitter. Это могло бы сэкономить много времени и денег для отдела поддержки, если бы они знали заранее, какой запрос является более важным и должен обрабатываться с более высоким приоритетом.

О чем будет рассказано в этой статье:

  • Объяснение варианта использования
  • Решение для машинного обучения для прогнозирования тональности текста твита - проверьте, требуется ли эскалация запроса в службу поддержки
  • Доступ к модели машинного обучения в AWS SageMaker
  • Бэкэнд-реализация с Node.js и Express
  • Реализация клиентского пользовательского интерфейса с помощью JavaScript и инструментария Oracle JET

Диаграмма объясняет, как все технические элементы связаны друг с другом.

Начнем с объяснения варианта использования. Я подумал, что было бы интересно и полезно реализовать вариант использования, который позволил бы сообщать о твитах, отправленных людьми авиакомпаниям, где люди просят о помощи. Авиакомпании, должно быть, ежедневно получают множество таких твитов, некоторые из них вообще не актуальны. Моя цель состояла в том, чтобы выбрать только те твиты, которые потребовали бы эскалации и проверки человеком. Это должно улучшить результаты службы поддержки и, возможно, помочь сохранить больше лояльных клиентов.

Я реализовал модель машинного обучения для анализа тональности твитов, вдохновленную инструкциями, приведенными в этой книге (глава 4) - Машинное обучение для бизнеса. Я настоятельно рекомендую прочитать эту книгу всем, кто ищет практические рецепты внедрения машинного обучения в своей компании.

Основываясь на учетной записи авиакомпании (это может быть не только авиакомпания, это может быть любая учетная запись Twitter), мы получаем 100 последних твитов, написанных на эту учетную запись. В списке отображаются только те твиты, которые требуют эскалации и должны обрабатываться людьми. Даже твит классифицируется как подлежащий эскалации, мы можем определить по шкале вероятности, насколько вероятно, что он будет повышен (см. Красные, желтые и зеленые точки). Это помогает дополнительно отфильтровать твиты, даже в списке твитов, выбранных для эскалации.

Результат AmericanAir - 24% твитов передаются и обрабатываются людьми:

Дельта результат - 21% твитов передаются и обрабатываются людьми:

Результат Эмирейтс - 19% твитов передаются и обрабатываются людьми:

Результат British Airways - 32% твитов передаются и обрабатываются людьми:

Результат Lufthansa - 28% твитов передаются и обрабатываются людьми:

Похоже, что 20% - 30% твитов требуют эскалации для всех авиакомпаний.

Сотрудник службы поддержки может щелкнуть имя учетной записи Twitter или ссылку Дополнительно, чтобы получить более подробную информацию о твите и ответить соответствующим образом.

Я использовал алгоритм машинного обучения AWS SageMaker и BlazingText, чтобы построить модель для анализа настроений. Вы можете прочитать о BlazingText и о том, как запустить его в AWS SageMaker, в этой книге (Глава 4) - Машинное обучение для бизнеса, все описано шаг за шагом и очень просто для понимания. Вам не нужно покупать книгу, чтобы загрузить исходный код (получите его по ссылке на исходный код). Дополнительные технические подробности читайте в моем предыдущем посте - API для анализа настроений Amazon SageMaker ML.

Модель анализа тональности BlazingText обучается и строится с использованием набора данных, загруженного в Kaggle Стюартом Аксельбруком из Thought Vector (www.gotitvector.io/). Исходный набор данных можно посмотреть здесь: www.kaggle.com/gotitvector/customer-support-on-twitter/home. Вместе с исходным кодом вы можете скачать обработанный набор данных. Авторы книги обработали исходный набор данных - они удалили все твиты, кроме исходного твита, и использовали ответы, чтобы пометить исходный твит как расширенный или не расширенный. Для построения модели настроения поддержки эскалации используется около 500 000 твитов.

Когда модель машинного обучения (ML) построена в AWS SageMaker, вам необходимо создать конечную точку, которая позволит получить доступ к модели извне и вызвать функцию прогнозирования. Создание конечной точки включено в записную книжку Jupyter.

Имея активную конечную точку, мы можем создать функцию AWS Lambda, которая будет действовать как прокси между моделью машинного обучения и REST API. Lambda позволяет построить логику преобразования данных перед вызовом модели машинного обучения и обработать результат, возвращаемый функцией прогнозирования, до того, как результат будет отправлен обратно в REST API. Подробнее об этом читайте здесь - Доступ к конечной точке модели Amazon SageMaker из Oracle JET.

Пример кода для лямбда-функции:

Переменная ENDPOINT_NAME указывает на имя конечной точки customer-support, созданное при запуске записной книжки Jupyter. Следующим шагом является определение REST API в AWS (подробнее об этом читайте в упомянутых выше сообщениях):

Убедитесь, что для этого API включена поддержка CORS. CORS позволяет вызывать API с внешнего хоста - например, из приложения JavaScript:

Подводя итог части машинного обучения:

  • Вам необходимо запустить блокнот Jupyter, модель обучения / проверки. Создайте конечную точку AWS после построения модели
  • Определите функцию AWS Lambda для доступа к модели машинного обучения
  • Определите API REST AWS для передачи входящих запросов в AWS Lambda

Затем мы переходим к бэкэнд-реализации с помощью Node.js и Express. Я создал приложение Node.js с помощью экспресс-генератора приложений. Подробнее о доступных командах читайте здесь. Вы получаете файл app.js, который действует как центральный маршрутизатор - это место, где вы можете определить все конечные точки REST, обрабатываемые серверной частью. Каждую конечную точку можно сопоставить с отдельным модулем - invoicerisk.js или twitter.js в приведенном ниже примере. Это дает больше гибкости и позволяет структурировать код в отдельные модули:

Код маршрутизации Экспресс создается экспресс-генератором. В app.js мы можем определить путь к модулю Node.js. Мы будем использовать этот путь для выполнения вызова REST API из пользовательского интерфейса.

Вы можете запустить приложение Node.js, созданное с помощью Express, с помощью следующей команды:

DEBUG = ‹appname›: * начало npm

Почему мы вообще используем бэкэнд Node.js? Причина довольно очевидна - для доступа к Twitter API нам нужно предоставить ключи, сопоставленные с учетной записью Twitter, мы не можем хранить эти ключи на клиенте. Как только запрос поступит от клиента, он перейдет к методу обработки POST серверной части Node.js. В этом методе мы получим последние твиты через Twitter API, подготовим набор данных для классификации и передадим его в AWS SageMaker через вызов REST API. Ответ будет проанализирован для построения результата, который будет отправлен обратно клиенту. Проверьте комментарии во фрагменте кода:

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

UI-клиент создается с помощью инструментария Oracle JET и JavaScript. Я использую Oracle JET, потому что он поставляется с прекрасным набором готовых компонентов пользовательского интерфейса, позволяющих создавать красивые и функциональные корпоративные приложения.

Вы можете запустить приложение Oracle JET из командной строки:

ojet serve

Код JavaScript, который выполняет внутренний вызов и создает массив твитов с запросом на эскалацию поддержки.

В этом коде используется ряд библиотек Oracle JET. Я бы рекомендовал пройтись по Поваренной книге Oracle JET, в ней есть интерактивный список примеров для каждого компонента пользовательского интерфейса.

Компоненты диаграммы и списка отображаются с помощью тегов Oracle JET:

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