Любая современная компания заботится о своей репутации. Фразы: «Ваше мнение очень важно для нас» или «Оцените вашу покупку», «Вы бы порекомендовали нашу компанию?» буквально преследуют нас на каждом шагу на сайтах магазинов, поликлиник и даже Госуслуг. Правительственные учреждения на ряду с другими компаниями стали заинтересованными в оценке своей работы и тоже обращают на это внимание. Медицинские учреждения не будут продлевать контракты со специалистами, у которых на протяжении долгого времени преобладает отрицательный фон. Поставщики услуг стараются постоянно отслеживать реакцию потребителей на товары и услуги для того, чтобы сделать свой сервис более доступным и качественным, а значит конкурентоспособным. Народное мнение помогает другим потребителям составить представление об учреждении, заведении, продукте или сервисе до того, как он будет приобретен и тем самым позволяет избежать ошибок при покупках. Крупные компании в обязательном порядке содержат в своем штате структуры по борьбе с оттоком клиентов, пиар-отделы, в работе которых ключевым фактором является своевременная реакция на запросы потребителей. Как же построить работу подобных структур без повышения затрат и повысить их скорость реагирования? В качестве одного из примеров рассмотрим применение машинного обучения для оперативного анализа большого количества отзывов респондентов.
Для начала рассмотрим пример демонстрирующий особенности современного подхода к UX/UI разработки пользовательского интерфейса. Предположим, вы владелец транснациональной компании предоставляющей услуги по всему миру.
После каждой покупки вы обращаетесь к вашим клиентам с просьбой оставить отзыв о вашем продукте. Технически ваше текущее программное обеспечение организовано так, что вне зависимости от того на каком языке пользователи оставляют отзывы они без разбора валятся в «подвал» товара. Возникает задача как определить на каком языке оставлен отзыв, какова его тональность, а в самом лучшем случае перевести его на несколько языков и демонстрировать подходящий перевод всех отзывов для текущего пользователя на его родном языке вне зависимости от языка оригинала.
Если вы обратитесь к вашему разработчику сейчас, то скорее всего вам предложат вариант, в котором задача по выбору языка будет возложена на плечи пользователя. Вероятно это будет выглядеть так
Пользователя попросят выбрать язык из длинного списка, причем иногда языки перечисляются без перевода, что в свою очередь ставит пользователя в тупик. Выглядит это примерно так
Если исходить из того, что большинство пользователей владеет двумя языками, то понятными для них будут только две строки, те, по сути, выбор превращается в «пытку».
Другой, не менее распространенный подход, который вам могут предложить, это определение региона по IP адресу и как следствие наиболее вероятного общеупотребительного языка. У условия современной глобализации не самый лучший подход, для указания на его недостатки, достаточно лишь отметить назойливость современного программного обеспечения в отношении региона вашего нахождения, повезло в этом отношении только жителям Москвы, вероятнее всего у них регион всегда определяется правильно.
Одним из элегантных способов устранения подобных задач может стать машинное обучение. В настоящее время для этого даже нет необходимости глубоко разбираться в математике. К примеру, достаточно воспользоваться MS Azure Cognitive Service
который по введенной фразе позволит определить ряд показателей введенного текста, в том числе язык, ключевые фразы и её тональность. Для рассматриваемого случая это дает следующее упрощение интерфейса
Больше не нужно запрашивать язык ввода и оценку пользователя — эти факты вытекают автоматически. После чего задача о распределении обращений по региональным филиалам, а также мониторинг по оттоку клиентов значительно упрощается
Значительная часть усилий перекладывается с пользователя и сотрудников на машину, которая не устает, быстро работает и значительно меньше ошибается в механических аспектах.
Прежде всего необходимо подключится к услуге MS Azure Cognitive Service и получить доступ к API который анализирует заданный текст и возвращать его характеристики. Этот процесс не сложен и будет рассмотрен более подробно в отдельной статье
Обратится к API можно двумя способами с помощью HTTP запроса и с помощью клиента. В частности, для .net необходимо подключить пакет
далее вызвать API
и разобрать полученный ответ
Если записать полученные данные в БД то получим следующее
(Пример добавлен после комментария пользователя к статье)
Проанализируем полученные результаты, для этого построим несколько отчетов, воспользовавшись программным комплексом FastReport который имеет в своей поставке open-source версию
youtu.be/Tyu7v24zer0
Включаем сортировку по тональности (1- позитивная, 0-негативная) получаем сгруппированные вверху позитивные отзывы и сгруппированные внизу негативные.
youtu.be/HbuXMuDZFmo
При необходимости можно сгруппировать отзывы по языкам и отправить соответствующие отчеты в региональные подразделения
youtu.be/YF8RG3g5FRs
Новые технологии не только позволяют значительно улучшить пользовательский интерфейс, но и оптимизировать работу сотрудников, сократить затраты на разработку. Отказаться от дорогостоящей модификации существующего ПО. Перспективы машинного обучения в ближайшем будущем позволят значительно повысить качество программного обеспечения и удовлетворенность пользователей. Применение легко внедряемый решений построения отчетов, позволит большему числу пользователей получить доступ к данным без тяжелого программирования.
github.com/ufocombat/Languages-open
azure.microsoft.com/ru-ru/services/cognitive-services/text-analytics
www.fast-report.com/en
youtu.be/Tyu7v24zer0
youtu.be/HbuXMuDZFmo
youtu.be/YF8RG3g5FRs
Мультиязычность
Для начала рассмотрим пример демонстрирующий особенности современного подхода к UX/UI разработки пользовательского интерфейса. Предположим, вы владелец транснациональной компании предоставляющей услуги по всему миру.
После каждой покупки вы обращаетесь к вашим клиентам с просьбой оставить отзыв о вашем продукте. Технически ваше текущее программное обеспечение организовано так, что вне зависимости от того на каком языке пользователи оставляют отзывы они без разбора валятся в «подвал» товара. Возникает задача как определить на каком языке оставлен отзыв, какова его тональность, а в самом лучшем случае перевести его на несколько языков и демонстрировать подходящий перевод всех отзывов для текущего пользователя на его родном языке вне зависимости от языка оригинала.
Если вы обратитесь к вашему разработчику сейчас, то скорее всего вам предложат вариант, в котором задача по выбору языка будет возложена на плечи пользователя. Вероятно это будет выглядеть так
Пользователя попросят выбрать язык из длинного списка, причем иногда языки перечисляются без перевода, что в свою очередь ставит пользователя в тупик. Выглядит это примерно так
Если исходить из того, что большинство пользователей владеет двумя языками, то понятными для них будут только две строки, те, по сути, выбор превращается в «пытку».
Другой, не менее распространенный подход, который вам могут предложить, это определение региона по IP адресу и как следствие наиболее вероятного общеупотребительного языка. У условия современной глобализации не самый лучший подход, для указания на его недостатки, достаточно лишь отметить назойливость современного программного обеспечения в отношении региона вашего нахождения, повезло в этом отношении только жителям Москвы, вероятнее всего у них регион всегда определяется правильно.
Машинное обучение
Одним из элегантных способов устранения подобных задач может стать машинное обучение. В настоящее время для этого даже нет необходимости глубоко разбираться в математике. К примеру, достаточно воспользоваться MS Azure Cognitive Service
который по введенной фразе позволит определить ряд показателей введенного текста, в том числе язык, ключевые фразы и её тональность. Для рассматриваемого случая это дает следующее упрощение интерфейса
Больше не нужно запрашивать язык ввода и оценку пользователя — эти факты вытекают автоматически. После чего задача о распределении обращений по региональным филиалам, а также мониторинг по оттоку клиентов значительно упрощается
Значительная часть усилий перекладывается с пользователя и сотрудников на машину, которая не устает, быстро работает и значительно меньше ошибается в механических аспектах.
Cognitive service
Прежде всего необходимо подключится к услуге MS Azure 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:61...");
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<DocumentsResult>(response);
var doc = result.documents[0].detectedLanguages[0];
Если записать полученные данные в БД то получим следующее
(Пример добавлен после комментария пользователя к статье)
Анализ результатов
Проанализируем полученные результаты, для этого построим несколько отчетов, воспользовавшись программным комплексом FastReport который имеет в своей поставке open-source версию
youtu.be/Tyu7v24zer0
Включаем сортировку по тональности (1- позитивная, 0-негативная) получаем сгруппированные вверху позитивные отзывы и сгруппированные внизу негативные.
youtu.be/HbuXMuDZFmo
При необходимости можно сгруппировать отзывы по языкам и отправить соответствующие отчеты в региональные подразделения
youtu.be/YF8RG3g5FRs
Заключение
Новые технологии не только позволяют значительно улучшить пользовательский интерфейс, но и оптимизировать работу сотрудников, сократить затраты на разработку. Отказаться от дорогостоящей модификации существующего ПО. Перспективы машинного обучения в ближайшем будущем позволят значительно повысить качество программного обеспечения и удовлетворенность пользователей. Применение легко внедряемый решений построения отчетов, позволит большему числу пользователей получить доступ к данным без тяжелого программирования.
Ссылки
github.com/ufocombat/Languages-open
azure.microsoft.com/ru-ru/services/cognitive-services/text-analytics
www.fast-report.com/en
youtu.be/Tyu7v24zer0
youtu.be/HbuXMuDZFmo
youtu.be/YF8RG3g5FRs
Комментарии (3)
mtivkov
29.03.2019 19:14Хорошо бы еще дописать (или это в следующей статье?) сколько будет стоить обращение к MS Azure Cognitive Service
windrider
Идея (API) вроде и неплохая. Но результат (на скриншоте) какой-то не очень:
«Я не говорю по-португальски»: sentiment = 0,279.
«Нифига непонятно как это работает»: sentiment = 0,555.
И особенный привет с Obrigado: 100% English, sentiment = 0,753.
Там точно не ГСЧ?
ufocombat Автор
Eu nao falo portugues
Language: Portuguese (100%)
Sentiment: 34%
Я не говорю по-португальски
Language: Russian (100%)
Sentiment: 44%
Obrigado — определяет не верно подтверждаю
Language: English (100%)
Sentiment: 75%
А вот если написать слово правильно Obrigada то дает такой результат
Language: Portuguese (100%)
Sentiment: 77%