Нравятся мне всякие конференции и хакатоны, хотя не часто удается в них поучаствовать. На этот раз случился хакатон в компании, на которой я работаю сейчас по контракту, и моя команда в нем победила. Тема хакатона — микросервисы на базе Azure Kubernetes Service и все, что с ними можно сделать интересного и полезного. В нем я решил довести до ума свой давний и интересный проект — систему интеллектуального анализа почтовой корреспонденции, которая по тексту письма определяет ее «тональность». То есть, указывает текст в письме содержит положительные, нейтральные или отрицательные эмоции и высказывания. Градация от 0 («F**k you, dirty as****e») до 1 («I love you so much»).

Какая от этого практическая польза? Самая непосредственная и измеримая! Представим случай, когда некая компания запускает новый продукт и хочет узнать отзывы о нем. Поскольку отзывов может быть очень много и написаны они на естественном языке, сделать это «вручную» — очень накладно. Попробуй прочти тысячи сообщений в десятках каналов всякие фейсбуки, вконтакты и прочие твиттеры. Да, еще при этом укажи они в целом положительные или отрицательные, какие ключевые пожелания высказывались людьми, какое распределение позитивных или негативных отзывов по различным видам аудитории и пр. Анализ одной только почтовой корреспонденции может быть крайне затратен по времени и невероятно скучен.

А что если проводится A / B тестирование и нужно четко знать отзывы, чтобы принять обоснованное бизнес решение? Да, это может сделать человек, а скорее группа людей, но работа эта крайне неоптимальная в плане использования людских ресурсов. И мое решение — использование сервисов искусственного интеллекта от Aure — Azure Cognitive Services, а конкретнее Azure Text Aalytics API.

Поскольку это была полностью моя идея, честно подсмотренная в документации Microsoft и продиктовано самой логикой использования сервисов ИИ согласно Microsoft AI adoption framework, я решил ее приспособить для случая заказчика (а там были очень большие сложности в связи с тем, что решение не полностью облачное, а гибридное), на что мне глава Azure департамента дал карт-бланш. В итоге самые критически важные компоненты сделал сам, потратив на это пару ночей, а остальные распределил по членам команды. Само решение было готово за 3 часа хакатона.
Ради целей хакатона в качестве канала приема сообщений выбран один почтовый ящик Gmail, в AKS поместили сервис, который извлекал текст из HTML разметки тела письма (да, я знаю, это можно было сделать с помощью Azure Function, но по условию хакатона — обязательно нужно использовать AKS), делал запрос в TextAnalytics API и сохранял результаты в Azure SQL. Ну а дальше — дело за BI. Вся цепочка сервисов управлялся и оркестрируется при помощи Azure LogicApp.

Опять таки, для целей хакатона, было решено ограничиться только английским языком, но в моем персональном Azure аккаунте есть более сложный пример — с определением языка, переводом и конфигурированием Text Analytics API в зависимости от языка письма и парочка других опций. Чуть позже выложу в своем GitHub полное решение, включая подсистему перевода и подсистему выделения текста из разметки на основе Azure Function вместо сервиса на AKS.
Ну а пока буду делать еще одну презентацию - уж очень заинтересовало этот пример наших старших архитекторов. Особенно впечатлило демо, когда почти сотня человек одновременно отослали письма и в режиме онлайн смотрели в дашборды (их создавал не я, потому в моем GitHub их не будет) за тем, что происходит и кто больше всех сквернословил и негодовал в письме!
Какие уроки можно из всего этого извлечь? Лично мне стоит подтянуть Hybrid Networking, ибо тема это сложная, комплексная и хорошо усвоена в основном серьезными дядьками, возрастом около 50. Ну и да, будущее уже здесь! Уже есть множество сервисов, систем и фреймворков искусственного интеллекта, которые могут заменять собой или по крайне мере серьезно автоматизировать ряд работ, связанных с интеллектуальной деятельностью человека.
Спасибо за внимание!