我们如何对信息流进行排序?
在引入排序算法之前,信息流的组成非常简单:收集所有由你的关注对象在你最后一次登录Twitter之后发送的推文,再将它们按照时间倒序显示出来。这个看起来很简单,但要为数以亿计的Twitter用户提供这种稳定的体验对我们来说是一个巨大的挑战,它对我们的基础设施和运维能力提出了很高的要求。
在引入排序算法之后,信息流的组成变得更加丰富。在收集推文之后,我们使用相关度模型对它们打分。这个分数是针对每个用户对推文感兴趣程度的预测。具有较高分数的推文被展示在信息流的最上面,其他推文紧随其后显示。根据你的信息流中已有的推文数量以及从你最后一次登录Twitter至今的时间长短,我们还可能专门为你提供一个“你可能错过的推文”模块。这个模块只包含少量具有最高相关度的推文。这样做的目的是希望你能够先看到重要的推文,然后再进一步查看按照时间排序的部分。
为了预测推文的相关度,我们的模型考虑到了以下几个特征。
- 推文本身:鲜活度(recency)、是否包含媒体卡(图像或视频)、互动情况(如转发或点赞次数)。
- 推文的作者:你过去与作者的互动情况、你与作者之间关系的紧密程度、你与作者之间的关系是如何建立的。
- 你自己:你参与过互动的推文、你使用Twitter的频率和使用程度。
我们使用的特征和各种特征之间的关系在不断增长,我们的模型因此能够识别出更为精确的行为模式。
每次在你打开手机或刷新信息流的时候,我们都会对推文进行打分,以便确定哪些推文可以被展示在信息流的最上面。打分这一举动对我们的信息流服务基础设施提出了很高的计算要求,因为我们现在每秒钟要对数千条推文进行打分。虽然更丰富的模型可以提高推文排序的质量,但对于像Twitter这样的实时社交公司来说,速度与质量同样重要。Twitter独特的挑战在于如何为查看信息流的用户进行快速实时的打分,并且拥有足够强大的模型来保证排序质量以及后续的改进。
标签:信息流,Twitter,推文,相关度,深度,排序,打分 From: https://blog.51cto.com/u_11908275/6624561