Рекомендации по формуле оценки для сортировки пост-фида в социальной сети на основе местоположения. - PullRequest
0 голосов
/ 24 января 2019

Я создаю приложение для социальных сетей на основе местоположения.Идея состоит в том, чтобы позволить пользователям размещать посты и взаимодействовать с людьми поблизости.В основной ленте приложения будут отображаться сообщения в зависимости от их близости (d = расстояние публикации) и их актуальности (a = как давно оно было опубликовано).

Я пытаюсь придумать формулу, которая оценила бы каждый пост за сортировку и достигла следующих целей:

  • Сначала показываются сообщения с высокой периодичностью и с высокой степенью близости (например, d = 1 км., a = 1 час)
  • Если сообщение находится в непосредственной близости, но довольно старое (например, d = 1 км, a = 5 дней), несколько более высокие результаты (например, d = 5 км, a = 1 час) имеют более высокий ранг
  • Очень удаленные посты (например, d = 10000, a = 1 час) будут иметь более высокий рейтинг, чем ближайшие посты, которые являются чрезвычайно старыми (например, d = 10 км, a = 1 год)

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

1 Ответ

0 голосов
/ 25 января 2019

Хорошая формула почти наверняка будет иметь некоторые произвольные параметры, которые требуют настройки. (Чтобы понять почему, обратите внимание, что вам нужен тот же результат, независимо от того, обозначено ли расстояние в метрах, где 500 - довольно небольшое значение, или в километрах, где 500 - довольно большое значение.)

Для средних и больших значений, я догадываюсь, что вам понадобится логарифмическая шкала; разница между 1 км и 2 км кажется довольно сходной с разницей между 100 км и 200 км (а не с разницей между 100 км и 101 км), а разница между 3 днями и 6 днями кажется довольно сходной с разницей между 30 и 60 днями (а не с разницей между 30 и 31 днями). Это означает что-то вроде

оценка = a log d + b log t

(где более низкий балл означает, что сообщение более актуально).

Однако, поскольку логарифмы расходятся к отрицательной бесконечности для чрезвычайно малых значений, вам необходимо настроить это для действительно малых значений; Вы не хотите, чтобы слова «прямо здесь, год назад» и «другая сторона Земли, ноль секунд назад» считались более актуальными, чем «тридцать метров назад, десять минут назад». Один из способов - добавить немного смещения, чтобы вы не брали логарифмы очень маленьких значений:

счет = a журнал ( d + 1) + b журнал ( t + 1)

Уверен, вы обнаружите, что со временем вам придется больше настраивать. Мне будет интересно услышать, что вы придумали!

...