我正试图想出一种方法来确定论坛中某些线程的“热门”程度。你会用什么标准?为什么?这些怎么会聚在一起给出热情分数?
我正在考虑的标准包括:
此算法必须解决的问题:
那里有任何想法,想法或完整的解决方案吗?
答案 0 :(得分:4)
这可能就是你要找的东西:
答案 1 :(得分:2)
杰夫阿特伍德a nice question对此有大量关于其他“热门”算法的信息。我建议使用其中一种,并根据自己的喜好进行调整。
答案 2 :(得分:1)
最简单的算法: 如果自Y以来有大于X的回复,那就太热了。
如果您喜欢可扩展的内容,只需计算自y时间以来的回复数量。更多的回复意味着更多的热情。
答案 3 :(得分:0)
我原本以为你可以用缩小波来模拟它,用振幅(或均方根)来测量热度。随着时间的推移,波浪会减少,所以迟到的回复只会引起一些轰动。
在实践中,我认为这需要大量的计算。您可以充分利用缓存来加速计算。
只是我的两分钱。
答案 4 :(得分:0)
总之,我发现“热度”的对数衰减是最自然的。
答案 5 :(得分:0)
感谢那些发布其他问题/答案链接的人。不幸的是,这些方程式需要考虑的事情比我的设置更多(例如:投票,作者的声誉等)
在玩完之后,我想出了我将暂时使用的这个等式:
log10($numOfReplies * 20000 / pow($timeSinceLastPost, 1.3))
它仍然可以使用一些工作。例如,如果有一个非常受欢迎但很老的帖子,那么它的热度就会很低,但是如果有人回复它会让它在几天/几周内重新回到顶部。
答案 6 :(得分:0)
为什么不使用一种指数衰减模型。所有帖子的热线程度=总和(k ^(自发布以来的时间))。这具有易于更新和计算的优点。你必须玩k和你的时间单位测量(k应该<1,但是非常接近它)
当前热度=上次发布时的热度* k ^(自上次发布以来的时间) 新帖后的热度=当前热度+ 1
答案 7 :(得分:0)
你应该注意的一件事是,人们是否可能想要“游戏”算法以使其线程变得“热”。实际上,你几乎可以认为他们会这样做。
您应该采取的最低限度措施是仅考虑来自不同人的回复。