Решение для автоматизации обработки настроений твитов для эскалации запросов в службу поддержки авиакомпаний
Я объясню комплексное техническое решение, которое поможет упростить процесс поддержки вашей компании. Я остановлюсь на запросах поддержки авиакомпаний, полученных от 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:
Моя цель состояла в том, чтобы показать, как модель машинного обучения для анализа настроений вписывается в архитектуру корпоративных приложений, включая внутреннюю и клиентскую реализацию пользовательского интерфейса. Я надеюсь, что этот практический пример эскалации запросов в службу поддержки авиакомпаний поможет применить машинное обучение в вашей организации и подскажет, как решать ваши собственные бизнес-задачи.