О проекте:
Сервис поиска музыки, формирующий рекомендации на основе переходов пользователя в рамках текущей сессии
Проблема:
Все способы поиска музыки в интернете можно условно разделить на онлайн библиотеки/форумы и рекомендательные сервисы.
Минусы онлайн библиотек/форумов:
1.Сложная навигация. Вне зависимости от удобства того или иного сервиса, библиотеки требуют слишком много внимания от пользователя.
2.Доминирование популярных исполнителей.
Минусы рекомендательных сервисов:
1.Отсутствие или слабо развитые возможности модифицировать выдачу на основе настроения. Один из основных китов рекомендательных сервисов – обучение системы на основе статистики прослушивания. Но настроение у пользователя может быть каждый день разное, и простым набором смайликов его не описать.
2.Фокус на общей статистике прослушивания. Именно из-за этого при прослушивании AC/DC, Metallica в плейлист может попасть Linkin Park. У каждого человека свой вкус и не стоит выравнивать его с общим мнением.
3.Бедные возможности по конкретизации выборки. Как правило, все рекомендательные сервисы предоставляют очень бедные возможности по навигации, фокусируясь вместо этого на рекомендованной выдаче.
Решение:
1.Основной принцип: предоставить пользователю принимать решение по навигации по графу связей между исполнителями/альбомами/песнями и отслеживать его в рамках ограниченного промежутка времени (сессии).
2.Система анализирует выборку конкретной сессии, которые можно сохранить/загрузить. Например, вчера был дождь, и пользователь слушал меланхоличную тяжелую музыку, но сегодня солнечно, а значит он создает новую сессию и слушает музыку в ее рамках. Никакие данные, собранные в другой сессии (вчера), не могут повлиять на текущую выборку.
3.При создании сессии пользователю предоставляется входная точка в виде выбора стиля/ исполнителя/тега. Помимо этого, на UI вынесены возможные способы перехода (конкретизации): похожие исполнители, теги, именно эта группа, именно этот альбом и проч.
4.Каждый переход создает новый плейлист. Предыдущий плейлист переходит по стеку вниз.
5.Воспроизведение нескольких плейлистов основывается на весе каждого из плейлистов. При пропуске трека в плейлисте или конкретизации его вес уменьшается. При непрерывном прослушивании увеличивается. Например, пользователь выбирает тег ‘dramatic’, переходя по этому тегу. Добавляется новый плейлист с бОльшим весом, чем текущий. Теперь воспроизведение происходит с приоритетом для нового плейлиста.
6.Каждый новый плейлист фильтруется на основе всех переходов в рамках сессии. Например, пользователь начал прослушивания с Nightwish и перешел, через некоторое время, на исполнителя Evanescence. Данное решение будет влиять на все выдачи в рамках данной сесси, но с каждым переходом слабее.
7.Возможность вернуться на предыдущее состояние (кнопка «Вверх»). В таком случае, прошлый переход не будет влиять на последующие выборки и состояние плейлистов будет восстановлено. Например, после выбора Evanescence пользователь понимает, что эта группа ему не нравится. Нажав на кнопку «Вверх», он убирает плейлист Evanescence, и теперь данный переход не будет влиять на выдачу рекомендаций.
8.Рекомендации по группам расслаиваются по известности. Например, для группы Chemical Brothers раздел «похожие исполнители» не должны содержать только Fatboy Slim, Prodigy, но и список куда менее известных исполнителей, сгруппированных по популярности.
9.Теги включаются по принципу исключения, которые еще не присутствовали среди прослушиваемых исполнителей/композиций.