Примеры студенческих проектов /

Веб-сервис для аналитики текстовых комментариев

Участники проекта

Даниил Водолазский

Даниил Водолазский

Выпуск 2019

Руководитель

Алексей Озеров

Алексей Озеров

Яндекс

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

Суть проекта и команда

Вместе со мной в команде были Саша Илларионов, Артур Лисс, Василий Алексеев и Ярослав Кубанцев. Мы разрабатывали веб-сервис для анализа и генерации текстов. Задача генерации текстов в заданной тональности была нам интересна потому, что это в теории позволяет генерировать «обобщённое» мнение об организации. Для большей определенности мы рассматривали отзывы на рестораны из датасета Yelp. Каждый из нас параллельно занимался своей подзадачей, а потом мы должны были связать некоторые модули друг с другом и интегрировать все в один проект.

Наш проект заочно курировал Валерий Бабушкин, Алексей Озёрин — на первой неделе и Александр Сахнов — на второй неделе. Мы выполнили проект в рамках двухнедельного практикума для студентов-разработчиков от «Сириуса», Яндекса и Высшей школы экономики.

Ход работы и технологии

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

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

На весь проект отводилось всего две недели, поэтому у нас не было времени придумывать принципиально новые архитектуры нейронных сетей для своих задач. Для задач классификации мы лишь адаптировали архитектуры, которые использовались ранее в конкурсах на Kaggle, а для задач генерации — те, что предлагались в исследовательских статьях. Мне удалось подобрать неплохую архитектуру на основе LSTM-сети с механизмом внимания (attention) и обучить модель, которая давала более высокие результаты, чем при случайном предсказывании.

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

Результат

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

Текст написал

Даниил Водолазский

Даниил Водолазский

Проект на внешних ресурсах