2008-12-19 50 views
2

我试图想出一种方法来确定如何“热”某些线程在论坛中。你会使用什么标准,为什么?这些将如何聚集在一起给出热点评分?确定线程“热度”的算法

我想的标准包括:

  • 多少应答
  • 这个算法必须持续多长时间,因为最后回复回复之间
  • 平均时间

的问题解决:

  • A thread其中有500个回复显然很热,除非最后一个回复是在一年前。
  • 回复到第二个回复500条回复的帖子显然很热,除非需要4年才能回复500条回复。
  • 在过去4分钟内有15条回复的帖子真的很热!

任何想法,想法或完整的解决方案吗?

回答

0

我想你也许可以将其与这里递减波,利用振幅(或均方根)来衡量的辣味建模。随着时间的推移,波浪减弱了,所以迟到的回复只会引起一阵骚动。

实际上,我认为这需要大量的计算。您可以充分利用缓存来加速计算。

只是我的两分钱。

1

最简单的算法: 如果自Y以来已有超过X个回复,它很热。

如果您更喜欢缩放的东西,只需计算自y时间以来的回复数。更多的回复意味着更多的热度。

0

总之我发现对数衰变的“热度”是最自然的。

2

杰夫阿特伍德有a nice question关于此与大量其他“热”算法的信息。我建议使用其中的一种并根据自己的喜好进行调整。

0

感谢那些发布其他问题/答案的链接。不幸的是,这些方程式比我的设置(例如:投票,作者的声誉等)可能会考虑更多的事情

在玩了它之后,我想出了这个方程,我会暂时使用:

log10($numOfReplies * 20000/pow($timeSinceLastPost, 1.3)) 

它仍然可以使用一些工作。例如,如果真的有一个非常受欢迎但很老的线程,那么它的热度会很低,但是如果有人回复它会让它几天/每周回到顶端。

0

为什么不只是使用一种指数衰减模型。线程的热度=所有帖子的总和(k ^(发布后的时间))。这具有容易更新和计算的优点。你必须玩K和你的时间单位测量(K应该是< 1,但相当接近它)

当前的热度=上次发布时的热度* k ^(自上一篇文章以来的时间) 。
新帖子后的热度=当前辣度+ 1

0

你应该注意的一件事是人们是否可能想要“游戏”算法以使其线程“热”。其实,你可以假设他们会。

您应该采取的最低限度措施是只考虑来自不同人的答复。