写在前面
新闻模块的热度算法如果深入研究十分复杂,经过我这段时间的研究将算法的核心简述一下,供团队人员理解,我们首先要知道互联网公司的热度智能化推送算法是非常复杂的,也是一个核心技术,所以我本人将其简化。
整体思路
一、大致分为三个阶段,入库阶段:
当我们将一个新闻加入数据库之后我们要给其赋予一个初始热度值,这里记作h0,我们对于不同新闻类型的初始值也不应该相同,一些国家大事,校园热搜,我们一旦入库就应该有一个比较高的初始值,所以这里还需要关键词的匹配算法
二、其次就是用户行为对于新闻的影响
我们基于点赞,收藏,评论等行为对于新闻有一个用于影响
H(Users) = 1×click + 5×favor + 10×comment + 20×share,当用户量比较大时,用户对于新闻的影响应该适当减少,这个作为后期的参考标准,这样保证了不同规模下用户影响的准确性
三、自然衰减对于新闻的影响
由于新闻的强时效性,已经发布的新闻的热度值必须随着时间流逝而衰减,并且趋势应该是衰减越来越快,直至趋近于零热度。换句话说,如果一条新闻要一直处于很靠前的位置,随着时间的推移它必须要有越来越多的用户来维持。否则会出现霸榜的现象,无法获取到及时的资讯,关于冷却算法我在网上查找之后大多数公司采取的是参考牛顿冷却定律,时间衰减因子应该是一个类似于指数函数:
H(Time) = e ^ (k(T1 – T0))
其中T0是新闻发布时间,T1是当前时间。
*四、score的计算公式**
Score = ( H0(Type) + H(Users) ) / H(Time)
**这是一个后期我们不断完善后才能做出来的热度分析,现阶段我们没有用户,用户权限也比较小,没有收藏,分享等功能,所以我们暂时可以使用第二套方案,著名的Hacker News开源的算法公式,简单也易于理解
Heat=(P – 1) / (t + 2)^1.8
P是得票数,t是时间,天为单位。因此时间越短得票数越多的文章排名靠前,得票数一定,随着时间的增加,文章的排名也会慢慢降低。


































