СофтХабрахабр

Nota: Алгоритм выбора и ротации треков

Похоже, что первый блин был скорее комом: большинству пользователей приложение не понравилось. Это продолжение предыдущей статьи об умном радио, не умирающем при потере Интернета. Критика в основном разделилась на два фронта:

  1. Одни и те же треки очень часто повторяются, а новые появляются очень редко.
  2. Нету возможности ни выбрать любимые жанры, ни минусовать негодные треки, чтобы не приходилось их мучительно пропускать.

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

Под катом будет описание выбранного алгоритма выбора и ротации треков, а также сути исправления, которое, как я ожидаю, должно кардинально улучшить пользовательский опыт. Рад сообщить, что мне удалось решить первую проблему (обновление уже в Play Store).

Последняя рассчитывается как отношение среднего времени прослушивания трека к его продолжительности. Базовая идея выбора треков появилась практически сразу: вероятность выбора композиции для воспроизведения пропорциональна её "оценке предпочтения". К сожалению, эта оценка не всегда будет соответствовать реальному предпочтению, но должна хорошо с ним коррелировать. Такой способ выбора приводит к частому воспроизведению тех композиций, которые более предпочтительны для слушателя.

В момент ротации удалялись треки, чья оценка предпочтений была ниже определённого уровня, а также загружалось новая порция треков. По первоначальной задумке ротация треков должна происходить в момент, когда все треки прослушаны не менее двух раз (одного раза казалось недостаточным для достоверной оценки трека).

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

Кроме того, чтобы исключить повторение только что воспроизведённых треков, было принято решение искусственно занижать оценку предпочтения для десяти последних проигранных треков.

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

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

  1. Для следующей итерации ротации теперь достаточно, чтобы все треки были прослушаны только раз (раньше было два раза).
  2. При наличии непрослушанных композиций их оценка предпочтения резко увеличивается, для всех остальных — резко уменьшается (и то и другое — на порядок).

Как только Интернет-соединение пропадает, включается старый механизм, воспроизводящий отобранные треки пропорционально их оценке предпочтения. Эти изменения привели к тому, что при наличии Интернет-соединения треки теперь проигрываются только по одному разу (как и в обычном радио), но понравившиеся треки оседают в кэше, вытесняя остальные.

S. P. Был также исправлен баг, связанный с отсутствием распознавания появившегося WiFi.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть