14

我正在一个与 Yahoo! 非常相似的网站上工作。答案:用户可以发布问题,等待其他人的答案并选择更好的答案。为了识别最佳用户,有一个信誉系统,它具有以下功能:

  • 一个人可以对一个用户投赞成票或反对票;
  • 可以对答案投赞成票或反对票;
  • 每个主题都有一个“经验”分数,每回答一个问题就会增加。

现在,如果可能的话,我想找到一种算法来结合所有这些因素,并为每个答案给出一个“可信度”分数。

到目前为止,我尝试使用诸如产品之类的东西自己做Coefficient * (UpVotes / TotalVotes),但它太线性了。我也尝试了其他方法,但它们不起作用(贝叶斯算法)。目前,在 Alpha 版本中,我使用的是Trustability = sqrt(GoodAnswers).

注意:算法必须是单独的(无需扫描整个数据库来获取平均值、总和等数据)并且尽可能快。我将在 PHP-MySQL 中实现它。

4

3 回答 3

6

排名系统有很多方法。使用时间维度、赞成/反对票数、赞成票和反对票的评分、点击率以及几乎任何你能想象到的东西。

Reddit中有一篇关于排名系统的好文章。

The most straightforward solution that came up in my mind is to calculate some weight of upvote for individual user. That means that more trusted user is more influential than another one. E.g. user with rating 100 upvote is definitely better than downvote from two users with rating -100. But we can't say that this is better than 100 downvotes from -100 users. try to experiment wit that.

于 2012-09-07T15:11:12.463 回答
1

您可以使用与 google 页面排名相同的想法:当用户为您投票或将您的问题\答案添加为收藏时,您的可信度的增加取决于此用户的可信度。

http://en.wikipedia.org/wiki/PageRank

于 2012-09-07T15:06:08.083 回答
0

使用类似 ELO/Glicko 的系统。每个用户都从标准值开始,然后考虑像一对一匹配的结果一样投反对票或反对票。

于 2012-09-07T15:09:03.727 回答