Я хочу написать механизм рекомендаций для оптимизации новостной ленты, которую я хочу внедрить в свое приложение.Это будет основано на предпочтениях, которые пользователи выбирают на этапе регистрации.
Логика следующая: пользователь регистрируется и выбирает одну или несколько тем, представляющих интерес, среди 15 из них.В приложении пользователи могут публиковать контент, такой как фотографии, текст и т. Д.
Я хотел сопоставить людей, использующих приложение, с контентом, исходящим от пользователей, которые заполнили те же настройки на этапе регистрации (или свысокий индекс корреляции, называемый C).
Чтобы сделать это, я подумал о внедрении показателя «релевантности», который будет прикреплен к каждому сообщению.
Этот показатель будет рассчитываться какfollow: Score = C (индекс корреляции между предпочтениями двух пользователей) x P (популярность пользователя, разместившего контент) x F (свежесть поста для отображения контента, который был недавно опубликован).После этого в ленте новостей будут отображаться записи с наивысшим или самым низким баллом в ленте каждого пользователя.
Сложность заключается в том, чтобы получить оценку для каждого поста, которая будет отличаться для каждой ленты новостей, и перевести ее в нашбазы данных, чтобы сделать правильное количество запросов.Я использую Expo (React Native) и Firestore в качестве базы данных.
Вот реальный пример: на этапе регистрации, скажем, у меня есть выбор между 5 интересующими темами: Спорт, Фотография, Музыка,Мода и Путешествия.Я выбрал Спорт и Путешествия.Завершив этот этап и попав в ленту новостей приложения, я хочу, чтобы меня сравнивали с контентом, который в первую очередь связан со спортом и путешествиями (давайте даже не будем взвешивать темы здесь).Поэтому я хочу отображать контент от других пользователей, которые выбрали точно такие же категории (индекс корреляции будет 1) или ближайший (следующий лучший индекс корреляции здесь будет 0,5).
Я бы тогдаполучать контент от людей, которые выбрали Спорт и Путешествия, затем контент от людей, которые выбрали Спорт или Путешествия, а затем контент от людей, которые выбрали Спорт и Путешествия среди многих других (каждый раз уменьшая наш индекс С).
Как именно можноЯ перевожу это в алгоритмический класс, поскольку прошел много документации об алгоритмах задачи назначения, взвешенных двудольных графах и комбинаторной оптимизации в целом, но я все еще застрял ...
Спасибо за ваше время, ядействительно ценю это.