前言
在产品、运营这次做社区改版的过程中,我们大数据部门结合具体的业务细节,通过研究、讨论与试错,最终设计了一个基本符合需求的内容热度值算法,本文就简述其设计方法。
他山之石
有为数很少的几家外国公司开源或公开说明了自家的内容热度值算法,包括Hacker News、Reddit、Stack Overflow/Stack Exchange、StumbleUpon等。我们在设计自己的算法之前,参考了他们的一些理念。为了节省篇幅,就不再重复讲一遍了,直接将reference传送门放在下面:
https://moz.com/blog/reddit-stumbleupon-delicious-and-hacker-news-algorithms-exposed
https://github.com/reddit-archive/reddit/blob/753b17407e9a9dca09558526805922de24133d53/r2/r2/lib/db/_sorts.pyx
https://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot-questions
https://meta.stackexchange.com/questions/60756/how-do-the-arbitrary-hotness-points-work-on-the-new-stack-exchange-home-page-a
可以攻玉
列举内容数据维度
在我们的社区体系中,与一篇内容相关的指标如下:
时间维度:
发布时间post_time、最后回复时间last_reply_time、最后操作时间last_op_time
互动量维度:
阅读量view_num、回复量reply_num、收藏量favor_num、点赞量like_num、回复点赞量reply_like_num、分享量share_num
内容维度:
内容长度content_length、平均回复长度reply_avg_length、图片数picture_num
用户维度:用户对内容的兴趣度、活跃度、发/回帖用户的声望,etc.
明确各维度的业务含义