【问题标题】:Simple popularity algorithm (using date submitted and # of votes)简单的流行度算法(使用提交日期和投票数)
【发布时间】:2010-08-13 23:03:45
【问题描述】:

我经营一个类似于 digg 的网站,当它达到一定数量的投票时,它会将内容推广到首页。目前不考虑提交日期。

我想使用一个简单的算法,它只使用投票数和提交日期来确定是否应该推广某项内容。我不希望算法做任何比这更复杂的事情(例如遍历所有投票日期)。

编辑:

公式不应该是这样的吗:

30 / (days between post date and now) * (vote count) = weighted vote

这里有一些对我的网站来说似乎合理的场景,这表明算法需要对旧项目更加宽松(因为旧项目在网站上不太容易被发现)

30 / 30 * 30 = 30(30 天,以 30 票提升)
30 / 5 * 15 = 90(5 天,以 15 票提升)
30 / 1 * 10 = 300(1 天,10 票提升)

如何修改公式,使上述 3 个公式给出接近晋升所需的相同最小加权投票?

【问题讨论】:

  • 您希望它如何考虑日期?

标签: php


【解决方案1】:

您可以使用当前日期和提交日期之间的差异来衡量投票权重。

(阈值 - (发布日期与现在之间的天数))/阈值 *(投票数)= 加权投票

在代码中

$weightedVote = ($threshold - $daysOld) / $threshold * $voteCount;

这将产生从考虑中删除超过阈值的帖子的效果。例如,发布 10 天的帖子的投票数将乘以 20/30。

【讨论】:

  • 见我在主帖中编辑。看起来你的算法是在正确的轨道上,但看起来越旧的项目加权投票越高..所以我做了一些改变。如果我有什么误解,请告诉我。
  • 更正了我的帖子,换了分子。您在编辑问题时提供的方法也可以使用。但是,您添加的案例并没有任何明确的关联。
【解决方案2】:

当条件基于投票时,您是否有理由为内容分配任意数字?我的意思是 - 似乎你最好权衡用户和他们的投票,而不是根据日期或多或少地给一段内容投票。 我为一家有 10,000 美元以上竞赛的公司编写了一些非常卑鄙的投票软件,我们的算法考虑了用户及其行为历史,最终过滤掉了大量垃圾投票。

这听起来很复杂,但实际上并非如此。

至于您的平衡代码 - 您希望 1 天前的内容以 10 票进行推广,而 30 天的项目需要 30 票? 或者你的意思是推广 1 天 10 票的内容,而可以推广 30 天的内容,比如 6 票,因为它更老且不太可能被看到,所以投票容忍度降低了?

function daysDifference($endDate, $beginDate)
{
   $date_parts1=explode("-", $beginDate);
   $date_parts2=explode("-", $endDate);
   $start_date=gregoriantojd($date_parts1[1], $date_parts1[2], $date_parts1[0]);
   $end_date=gregoriantojd($date_parts2[1], $date_parts2[2], $date_parts2[0]);
   return $end_date - $start_date;
}
$diff = 30 - daysDifference(date("Y-m-d"), $postdate);
if($diff > 0)
    $weight = 30 / $diff + $votes;
else
    $weight = $votes;

因此,假设 daysDifference 函数返回 26 并且最初有 4 票。这将显示为 30 / (30 - 26 = 4) = 7.4 + 4 所以总共有 11.4 票。 对于具有 10 票的 1 天旧项目,它将显示为 30 / (30 - 1 = 29) = 1.03 + 10。所以总共 11.03。 此示例大致相同,但其他示例会有所不同。 if 表示不考虑超过 30 天的任何内容,其投票等于实际值。

不过,我可能只是误解了您的需求。

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2012-02-23
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多