Применение машинного обучения для анализа большого количества отзывов респондентов
Любая современная компания заботится о своей репутации. Фразы: «Ваше мнение очень важно для нас» или «Оцените вашу покупку», «С какой долей вероятности вы бы порекомендовали нашу компанию?» буквально преследуют нас на каждом шагу на сайтах магазинов, поликлиник и даже Госуслуг. Правительственные учреждения на ряду с другими компаниями стали заинтересованными в оценке своей работы и тоже обращают на это внимание. Медицинские учреждения не будут продлевать контракты со специалистами у которых на протяжении долгого времени преобладает отрицательный фон. Поставщики услуг стараются постоянно отслеживать реакцию потребителей на товары и услуги для того чтобы сделать свой сервис более доступным и качественным, а значит конкурентноспособным. Народное мнение помогает другим потребителям составить представление об учреждении, заведение, продукте или сервисе до того как он будет приобретен и тем самым позволяет избежать ошибок при покупках. Крупные компании в обязательном порядке содержат в своем штате структуры по борьбе с оттоком клиентов, пиар-отделы, в работе которых ключевым фактором является своевременная реакция на запросы потребителей. Как же построить работу подобных структур без повышения затрат и повысить их скорость реагирования? В качестве одного из примеров рассмотри применение машинного обучения для оперативного анализа большого количества отзывов респондентов.
Мультиязычность
Для начала рассмотрим пример демонстрирующего особенности современного подхода к UX/UI разработки пользовательского интерфейса. Предположим вы владелец транснациональной компании предоставляющей услуги по всему миру.
После каждой покупки вы обращаетесь к вашим клиентам с просьбой оставить отзыв о вашем продукте. Технически ваше текущее программное обеспечение организовано так, что вне зависимости от того на каком языке пользователи оставляют отзывы они без разбора валятся в «подвал» товара. Возникает задача как определить на каком языке оставлен отзыв, какова его тональность, а в самом лучшем случае перевести его на несколько языков и демонстрировать подходящий перевод всех отзывов для текущего пользователя на его родном языке вне зависимости от языка оригинала.
Если вы обратитесь к вашему разработчику сейчас, то скорее всего вам предложат вариант в котором задача по выбору языка будет возложена на плечи пользователя. Вероятно это будет выглядеть так
Пользователя попросят выбрать язык из длинного списка, причем иногда языки перечисляются без перевода, что в свою очередь ставит пользователя в тупик. Выглядит это примерно так
Если исходить из того что большинство пользователей владеет двумя языками, то понятными для них будут только две строки, те по сути выбор превращается в «пытку».
Другой, не менее распространенный подход, который вам могут предложить, это определение региона по IP адресу и как следствие наиболее вероятного общеупотребительного языка. У условия современной глобализации не самый лучший подход, для указания на его недостатки, достаточно лишь отметить назойливость современного программного обеспечения в отношении региона вашего нахождения, повезло в этом отношении только жителям Москвы, вероятнее всего у них регион всегда определяется правильно.
Машинное обучение
Одним из элегантных способов устранения подобных задач может стать машинное обучение. В настоящее время для этого даже нет необходимости глубоко разбираться в математике. К примеру достаточно воспользоваться сервисом Microsoft
который по введенной фразе позволит определить ряд показателей введенного текста, в том числе язык, ключевые фразы и её тональность. Для рассматриваемого случая это дает следующее упрощение интерфейса
Больше не нужно запрашивать язык ввода и оценку пользователя — эти факты вытекают автоматически. После чего задача о распределении обращений по региональным филиалам, а также мониторинг по оттоку клиентов значительно упрощается
Значительная часть усилий перекладывается с пользователя и сотрудников на машину, которая не устает, быстро работает и значительно меньше ошибается в механических аспектах.
Cognitive service
Прежде всего необходимо подключится к услуге MS Cognitive Service и получить доступ к API которое по запросу будет анализировать заданный текст и возвращать его характеристики. Этот процесс не сложен, занимает несколько минут и будет рассмотрен более подробно в отдельной статье
Обратится к API можно двумя способами с помощью http запроса и клиента. В частности для .net поставляемого в пакете
далее вызвать 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 или другую то получим следующее
Анализ результатов
Проанализируем полученные результаты, для этого построим несколько отчетов, воспользовавшись программным комплексом FastReport который имеет в своей поставке open-source версию
youtu.be/Tyu7v24zer0
Включаем сортировку по тональности (1- позитивная, 0-негативная) получаем сгруппированные вверху позитивные отзывы и сгруппированные внизу негативные.
youtu.be/HbuXMuDZFmo
При необходимости можно сгруппировать отзывы по языкам и отправить соотвествующие отчеты в региональные подразделения
youtu.be/YF8RG3g5FRs
Заключение
Новые технологии не только позволяют значительно улучшить пользовательский интерфейс, но и оптимизировать работу сотрудников, сократить затраты на разработку. Отказаться от дорогостоящей модификации существующего ПО. Перспективы машинного обучения в ближайшем будущем позволят значительно повысить качество программного обеспечения и удовлетворенность пользователей. Применение легко внедряемый решений построения отчетов, большему числу пользователей получить доступ к данным без тяжелого программирования.