我想根据“争议”商来对我的故事进行排名。例如,reddit.com目前有“有争议的”部分:http://www.reddit.com/controversial/
当一个故事有很多上升和很多下来的投票时,即使总得分为0(例如),也存在争议。我应该如何计算这个商数分数,以便当有很多人投票时,我可以以某种方式捕捉到这一点。
感谢!!!
尼克
答案 0 :(得分:7)
我建议使用standard deviation票。
100%两极化的有争议的投票将有相同的-1和+1票数,所以平均值为0,stddev约为1.0
相反,一组完全一致的投票(在相反方向没有投票)的平均值为1或-1,stddev为0.0。
不完全一致或完全极化的投票将产生0到约1.0之间的标准偏差数字,其中该值将表明投票中的争议程度。
答案 1 :(得分:0)
最简单的方法是在时间范围内(例如1周,48小时等)计算给定评论的upvote / downvote配对的数量,并且首先显示具有最多parings的评论。任何更复杂的事情都需要在最佳算法上进行反复试验或试验 - 一如既往,它会因网站内容以及您希望加权的方式而异。
总的来说,它与热点算法没什么不同,热点算法通过检测时间范围内的最多投票或视图来工作。
答案 2 :(得分:0)
如何简单地获取某个时间点的两个值中的较小值(向上或向下)?如果它上升很多而且下降一点,或者相反,它没有争议。
例如,如果项目有10个上升和5个下降,则“争议级别”为5,因为有5个人不喜欢喜欢它。另一方面,如果它有10个或10个下降,“争议级别”为0,因为没有人不同意。
所以最后,在这种情况下,两个项目中较小的一个定义了“热度”或“争议性”。这有意义吗?
答案 3 :(得分:0)
// figure out if up or down is winning - doesn't matter which
if (up_votes > down_votes)
{
win_votes = up_votes;
lose_votes = down_votes;
}
else
{
win_votes = down_votes;
lose_votes = up_votes;
}
// losewin_ratio is always <= 1, near 0 if win_votes >> lose_votes
losewin_ratio = lose_votes / win_votes;
total_votes = up_votes + down_votes;
controversy_score = total_votes * losewin_ratio; // large means controversial
对于有大量投票和近50/50投票分割的故事,此公式将获得高分,而对于一个选项投票少或票数较多的故事,得分较低。