新闻源的推荐引擎优化

Recommendation engine optimization for newsfeed

我正在寻找一个推荐引擎来优化我想在我的应用程序中实现的新闻源。这将基于用户在注册阶段选择的偏好。

逻辑如下:用户注册,然后从其中的 15 个主题中选择一个或几个感兴趣的主题。在应用程序中,用户可以 post 照片、文字等内容。

我想将使用该应用程序的人与来自在注册阶段具有相同偏好的用户(或具有称为 C 的高相关指数)的内容相匹配。

为了做到这一点,我考虑实施一个“相关性”分数,该分数将附加到每个 post。

该分数将计算如下:分数= C(两个用户偏好之间的相关性指数)x P(post编辑内容的用户的受欢迎程度)x F(内容的新鲜度) post 以便显示最近 posted 的内容)。然后,新闻提要会显示每个用户提要中得分最高到最低的 post。

这里的困难是为每个 post 生成一个分数,每个新闻提要都会有所不同,并在我们的数据库中翻译它,以便发出正确数量的请求。我正在使用 Expo (React Native) 和 Firestore 作为数据库。

这是一个真实的案例:在注册阶段,假设我有 5 个感兴趣的主题可供选择:体育、摄影、音乐、时尚和旅游。我选择了运动和旅行。完成该阶段并结束应用程序的新闻提要后,我希望与主要与运动和旅行相关的内容相匹配(我们甚至不考虑在这里对主题进行加权)。因此,我想显示来自其他用户的内容,这些用户选择了完全相同的类别(相关指数为 1)或最接近的(此处下一个最佳相关指数为 0,5)。

然后我会从选择体育和旅游的人那里获得内容,然后从选择体育或旅游的人那里获得内容,然后从选择体育和旅游的人那里获得内容(每次都降低我们的 C 指数)。

当我浏览了很多关于分配问题算法、加权二分图和组合优化问题的文档时,我究竟该如何将其转化为算法 class,但我仍然卡住了...

谢谢你的时间,我真的很感激。

假设我们有 2 组 A 和 B 的兴趣:

定义相关性的一种方法可以是:

Correlation =  size(intersection(A, B)) / max( size(A), size(B) )

场景一:

Exact match : A: { Sport, Travel } B : {Sports, Travel }

Correlation :=  size(Sport, travel) / 2 = 2/2 = 1

场景二:

Exact match : A: { Sport, Travel } B : {Sports, Travel, Car, Dress, Movie }

Correlation :=  size(Sport, travel) / 5 = 2/5 = 0.4

场景三:

Exact match : A: { Sport, Travel } B : {Sports}

Correlation :=  size(Sport, travel) / 2 = 1/2 = 0.5

如果有 15 个类别,则用户的偏好可以表示为每个类别的 1 位 "wanted/unwanted" 标志。换句话说,用户的偏好可以是一个简单的 15 位整数。

同样适用于每条新闻——它可以被归入一个或多个类别,它属于哪些类别可以用另一个15位整数来表示。

如果您对用户的偏好和新闻条目所属的类别进行按位与操作;您可以计算结果中设置的位数。这个设置位的计数将为您提供从 "news item matches all categories the user wants" 到 "news item matches none of categories the user wants" 的分数。您可以使用它来过滤 and/or 排序新闻项目列表。