Применение машинного обучения для анализа большого количества отзывов респондентов

Любая современная компания заботится о своей репутации. Фразы: «Ваше мнение очень важно для нас» или «Оцените вашу покупку», «С какой долей вероятности вы бы порекомендовали нашу компанию?» буквально преследуют нас на каждом шагу на сайтах магазинов, поликлиник и даже Госуслуг. Правительственные учреждения на ряду с другими компаниями стали заинтересованными в оценке своей работы и тоже обращают на это внимание. Медицинские учреждения не будут продлевать контракты со специалистами у которых на протяжении долгого времени преобладает отрицательный фон. Поставщики услуг стараются постоянно отслеживать реакцию потребителей на товары и услуги для того чтобы сделать свой сервис более доступным и качественным, а значит конкурентноспособным. Народное мнение помогает другим потребителям составить представление об учреждении, заведение, продукте или сервисе до того как он будет приобретен и тем самым позволяет избежать ошибок при покупках. Крупные компании в обязательном порядке содержат в своем штате структуры по борьбе с оттоком клиентов, пиар-отделы, в работе которых ключевым фактором является своевременная реакция на запросы потребителей. Как же построить работу подобных структур без повышения затрат и повысить их скорость реагирования? В качестве одного из примеров рассмотри применение машинного обучения для оперативного анализа большого количества отзывов респондентов.

Мультиязычность

Для начала рассмотрим пример демонстрирующего особенности современного подхода к UX/UI разработки пользовательского интерфейса. Предположим вы владелец транснациональной компании предоставляющей услуги по всему миру.

syv50ihxw4wppjwkk9zc1efywu4.png

После каждой покупки вы обращаетесь к вашим клиентам с просьбой оставить отзыв о вашем продукте. Технически ваше текущее программное обеспечение организовано так, что вне зависимости от того на каком языке пользователи оставляют отзывы они без разбора валятся в «подвал» товара. Возникает задача как определить на каком языке оставлен отзыв, какова его тональность, а в самом лучшем случае перевести его на несколько языков и демонстрировать подходящий перевод всех отзывов для текущего пользователя на его родном языке вне зависимости от языка оригинала.

Если вы обратитесь к вашему разработчику сейчас, то скорее всего вам предложат вариант в котором задача по выбору языка будет возложена на плечи пользователя. Вероятно это будет выглядеть так


iogphtm08fmomrcau7pukec4-g4.png

Пользователя попросят выбрать язык из длинного списка, причем иногда языки перечисляются без перевода, что в свою очередь ставит пользователя в тупик. Выглядит это примерно так


wrzzhjm9aj_uhcz7agc1mum0l2q.png
Если исходить из того что большинство пользователей владеет двумя языками, то понятными для них будут только две строки, те по сути выбор превращается в «пытку».

Другой, не менее распространенный подход, который вам могут предложить, это определение региона по IP адресу и как следствие наиболее вероятного общеупотребительного языка. У условия современной глобализации не самый лучший подход, для указания на его недостатки, достаточно лишь отметить назойливость современного программного обеспечения в отношении региона вашего нахождения, повезло в этом отношении только жителям Москвы, вероятнее всего у них регион всегда определяется правильно.

Машинное обучение

Одним из элегантных способов устранения подобных задач может стать машинное обучение. В настоящее время для этого даже нет необходимости глубоко разбираться в математике. К примеру достаточно воспользоваться сервисом Microsoft

-cvcyqky_uxrqb--vifps62d1mw.png

который по введенной фразе позволит определить ряд показателей введенного текста, в том числе язык, ключевые фразы и её тональность. Для рассматриваемого случая это дает следующее упрощение интерфейса

iz2jqsfik9zdkzvpvvwh1sqj7vu.png

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

eoh1n3uupj-lqhalhehhtlp8spw.png

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

5kyhlgacf9vouhxs6d3pxhtsxls.png

Cognitive service

Прежде всего необходимо подключится к услуге MS Cognitive Service и получить доступ к API которое по запросу будет анализировать заданный текст и возвращать его характеристики. Этот процесс не сложен, занимает несколько минут и будет рассмотрен более подробно в отдельной статье

a9sjejnevajj3jrbytbmq0520tc.png

Обратится к API можно двумя способами с помощью http запроса и клиента. В частности для .net поставляемого в пакете

nzuz4m95hfgwtvlchv2fk7tpa2m.png

далее вызвать API

var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://northeurope.api.cognitive.microsoft.com/text/analytics/v2.0/languages");
            httpWebRequest.Method = "POST";

            httpWebRequest.Headers.Add("Content-Type:application/json");
            httpWebRequest.Headers.Add("Ocp-Apim-Subscription-Key:61d917d5bf03f087923d7");

            var documents = new Documents();
            documents.Add(new Document(Description));

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                string json = JsonConvert.SerializeObject(documents);

                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            }

и разобрать полученный ответ

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            String response;

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream(), Encoding.UTF8))
            {
                response = streamReader.ReadToEnd();
            }

            var result = JsonConvert.DeserializeObject(response);
            var doc = result.documents[0].detectedLanguages[0];

Если записать полученные данные в БД MS SQL или другую то получим следующее

xtucv6czo-0mdjyjxymylvwx4i4.png

Анализ результатов

Проанализируем полученные результаты, для этого построим несколько отчетов, воспользовавшись программным комплексом FastReport который имеет в своей поставке open-source версию

youtu.be/Tyu7v24zer0

Включаем сортировку по тональности (1- позитивная, 0-негативная) получаем сгруппированные вверху позитивные отзывы и сгруппированные внизу негативные.

youtu.be/HbuXMuDZFmo

При необходимости можно сгруппировать отзывы по языкам и отправить соотвествующие отчеты в региональные подразделения

youtu.be/YF8RG3g5FRs

Заключение


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

Ссылки

© Habrahabr.ru