Category:

Люблю я хакатоны

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

1. Источник http://vasya-lozhkin.ru/pictures/otkrytoe-pismo/
1. Источник http://vasya-lozhkin.ru/pictures/otkrytoe-pismo/

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

2. И. Репин. Запорожцы. "... Ты, султан, чёрт турецкий, и проклятого чёрта брат и товарищ, самого Люцифера секретарь. Какой ты к чёрту рыцарь, когда голой ж***й ежа не убьёшь. Чёрт ты, выс***а твоя морда. Не будешь ты, сукин ты сын, сынов христианских под собой иметь, твоего войска мы не боимся, землёй и водой будем биться с тобой, *** твою мать.*** Вавилонский ты повар, Македонский колесник, Иерусалимский пивовар, Александрийский козолуп, Большого и Малого Египта свинопас, Армянский ворюга, Татарский сагайдак, Каменецкий палач, всего света и подсвета дурак, самого аспида внук и нашего *** крюк. Свиная ты морда, кобылиная c***a, мясницкая собака, некрещённый лоб, ну и мать твою ***."-
2. И. Репин. Запорожцы. "... Ты, султан, чёрт турецкий, и проклятого чёрта брат и товарищ, самого Люцифера секретарь. Какой ты к чёрту рыцарь, когда голой ж***й ежа не убьёшь. Чёрт ты, выс***а твоя морда. Не будешь ты, сукин ты сын, сынов христианских под собой иметь, твоего войска мы не боимся, землёй и водой будем биться с тобой, *** твою мать.*** Вавилонский ты повар, Македонский колесник, Иерусалимский пивовар, Александрийский козолуп, Большого и Малого Египта свинопас, Армянский ворюга, Татарский сагайдак, Каменецкий палач, всего света и подсвета дурак, самого аспида внук и нашего *** крюк. Свиная ты морда, кобылиная c***a, мясницкая собака, некрещённый лоб, ну и мать твою ***."-

 А что если проводится 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.

4.
4.

Опять таки, для целей хакатона, было решено ограничиться только английским языком, но в моем персональном Azure аккаунте есть более сложный пример — с определением языка, переводом и конфигурированием Text Analytics API в зависимости от языка письма и парочка других опций. Чуть позже выложу в своем  GitHub полное решение, включая подсистему перевода и подсистему выделения текста из разметки на основе Azure Function вместо сервиса на AKS.

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

Какие уроки можно из всего этого извлечь? Лично мне стоит подтянуть Hybrid Networking, ибо тема это сложная, комплексная и хорошо усвоена в основном серьезными дядьками, возрастом около 50. Ну и да, будущее уже здесь! Уже есть множество сервисов, систем и фреймворков искусственного интеллекта, которые могут заменять собой или по крайне мере серьезно автоматизировать ряд работ, связанных с интеллектуальной деятельностью человека.

Спасибо за внимание!  

promo alexander_vasil июль 22, 2018 01:13 2
Buy for 10 tokens
В начале XXI века на поверхности Земли практически не осталось неизученных мест, или мест, где бы не побывал хотя бы один путешественник. Вулканы в Конго с озерами лавы в кратерах, мексиканская пещера гигантских кристаллов, северный и южный полюса относительной недоступности, труднодоступные…

Error

Anonymous comments are disabled in this journal

default userpic