我正在寻找编写推荐引擎来优化我要在我的应用中实现的新闻源。它将基于用户在注册阶段选择的偏好。
逻辑如下:用户注册,然后从15个主题中选择一个或几个感兴趣的主题。在该应用中,用户可以发布照片,文字等内容。
我想使使用该应用程序的人员与在注册阶段(或具有较高相关指数C的用户)具有相同偏好的内容相匹配。
为此,我考虑过要在每个帖子上附加一个“相关性”评分。
该分数的计算方式如下:分数= C(两个用户的偏好之间的相关性指数)x P(发布内容的用户的受欢迎程度)x F(发布内容的新鲜度,以显示该内容已于最近发布)。然后,新闻提要将显示每个用户提要中得分最高或最低的帖子。
这里的困难是要为每个帖子生成一个分数,该分数对于每个新闻提要都会有所不同,并在我们的数据库中进行翻译,以提出正确数量的请求。我正在使用Expo(React Native)和Firestore作为数据库。
这是一个真实的例子:在注册阶段,我可以选择5个感兴趣的主题:体育,摄影,音乐,时尚和旅行。我选择了“运动与旅行”。完成该阶段并结束应用程序的新闻提要后,我希望与主要与“体育和旅行”相关的内容相匹配(在这里甚至不用考虑对主题进行加权)。因此,我想显示其他用户的内容,这些用户选择了完全相同的类别(相关性索引为1)或最接近的类别(此处的下一个最佳相关性索引为0.5)。
然后,我将从选择“运动和旅行的人”的内容中获取内容,然后从选择“运动和旅行的人”的内容中获取内容,然后再从选择“运动和旅行的人”中获取内容(每次降低C指数)。
当我遍历大量有关分配问题算法,加权二部图和组合优化问题的文档时,我如何将其准确地转换为算法类,但是我仍然陷于困境...
谢谢您的时间,我真的很感激。
答案 0 :(得分:1)
比方说,我们有2套具有兴趣的A和B:
定义相关性的一种方法可以是:
Correlation = size(intersection(A, B)) / max( size(A), size(B) )
场景1:
Exact match : A: { Sport, Travel } B : {Sports, Travel }
Correlation := size(Sport, travel) / 2 = 2/2 = 1
方案2:
Exact match : A: { Sport, Travel } B : {Sports, Travel, Car, Dress, Movie }
Correlation := size(Sport, travel) / 5 = 2/5 = 0.4
方案3:
Exact match : A: { Sport, Travel } B : {Sports}
Correlation := size(Sport, travel) / 2 = 1/2 = 0.5
答案 1 :(得分:1)
如果有15个类别,则可以将用户的首选项表示为每个类别的1位“需要/不需要”标志。换句话说,用户的首选项可以是一个简单的15位整数。
每个新闻条目也是如此-可以将其放在一个或多个类别中,并且它属于的类别可以表示为另一个15位整数。
如果您对用户的首选项和新闻项所属的类别进行按位“与”运算;您可以计算结果中设置的位数。设置位的数量将为您提供一个分数,范围从“新闻与用户想要的所有类别匹配”到“新闻与用户想要的所有类别都不匹配”。您可以使用它来过滤和/或对新闻列表进行排序。