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

Я не буду вдаваться здесь во все мельчайшие детали, но это должно дать вам гораздо лучшее представление о том, как работает система.

Прежде всего, речь идет о данных, которые мы собираем. Feedpresso отмечает несколько основных взаимодействий с приложением:

  • новость открыта для чтения
  • новость добавлена ​​в закладки
  • запись новости введена и покинула экран
  • новость отмечена как неинтересная (проведите пальцем влево)
  • новость отмечена как интересная (проведите пальцем вправо)

Первые три — это неявная обратная связь об актуальности историй, а последние две — явная обратная связь, поскольку пользователь намеренно дает нам знать, уместно это или нет.

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

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

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

  1. Содержание историй (подход, выходящий за рамки одних только ключевых слов) сопоставляется с историческим профилем пользователя, чтобы увидеть, интересует ли его тема.
  2. Склонен ли пользователь читать из этого источника (надежен ли источник для читателя)?
  3. Является ли источник спамом? Источники спама (много историй в день) получают отрицательную оценку.
  4. История горячая (интересная) для всех? Если да, то это, вероятно, то, что вы должны увидеть.
  5. Очевидно, есть своевременность — насколько свежее обновление.

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

Технический человек сразу увидит, что мы не используем приемы коллаборативной фильтрации — это правильно. Этот подход плохо подходит для контента, который быстро меняется и быстро становится неактуальным. Кроме того, он страдает от проблемы с холодным запуском — трудно сразу предоставить релевантный контент пользователям.

Тем не менее, у нас есть планы на открытие новых источников (блоги и новостные сайты).

Если так случится, что вы не пробовали Feedpresso, попробуйте — это может вас удивить :).