2011-12-01 46 views
4

我正在写一个具有声誉组件的电子商务引擎。我希望用户能够查看和评价项目,并能评价评价。排名/声誉算法

根据“最佳”评论对物品进行分类的最佳算法是什么?它必须根据获得最佳评论的人的质量评论数量进行排名。我不知道如何将其转换为算法。

例如,我需要能够将具有低声誉的多个人的5星级的物品与具有高信誉的几个人中的3星级的物品进行比较。

为了增加复杂性,一些用户可能写了很多评论,其他人评价高/低,其他用户可能撰写了很少评论,但被其他用户评为非常高。哪种用户在这种情况下更有信誉?

+1

大多数网站都认为单一乐谱本质上太不健全,不透明,这让我感到困惑。相反,你会看到所有的地方,这些项目有'平均评分'和'票数'。然后由用户决定是否想要在5票“完美”的项目上赌博,或者是'1000'票选'相当好'的项目。 –

+0

谢谢,托马斯。显示两个值是肯定有用的。但是,我仍然需要对搜索结果的单个列表中的项目进行排序。我是否应该从这两个值中得出分数并将其用于排序(但不用于显示)? –

回答

11

如果您知道用户的声誉,那么你可能会使用为每个用户UserScorethe one that Stackexchange uses

UserScore = Reputation >= 200 ? 0.233 * ln(Reputation-101) - 0.75 : 0 + 1.5 

然后你找到用户的分数与明星作为权总结一个项目的价值:

ItemScore = \sum_i UserScore_i * Weight[Star_i] 

其中i是票指数和Weight被涉及的权重数组的星星。例如,对于5星的投票系统,它可以是[-2 -1 0 1 2]。还有一点需要注意的是,如果您希望只有3颗星的物品来到未评估的物品之前,您可以将3颗星的重量更改为+eps

您可以根据需要更改200和所有其他常数/权重。

+1

一个变体是对一些明星排名进行加权,因为一星评价应该排在未被查看的项目之下。 – PengOne

+0

ItemScore是不是平均值?否则,具有50个二星评级的项目的评级将高于具有10个五星评级的项目。 –

+0

@JasonBanico如果我们对它们进行平均,那么与占主导地位的选民的5星级选手相比,拥有5星级选手的选项更重要。 – petrichor

0

我会尽量回答你的问题:

我认为,关键是要加权出不同信誉的人,比如:

一个人以名誉2的投票是3倍的因为另一个声誉较低的人的投票权很重。不同声望的人之间的关系真的取决于您,您希望总体评级取决于信誉低的人的评分。与声誉较低的人投票相比,声誉较高的人的投票权重越高,则由于低声誉投票而导致整体声誉变化越小。

因此,每个人都会有一个权重,让我们说w_i,w_j等....然后在所有的评价将全部的加权平均值:从两个不同的人总评投票的

例如我并且j =(w_i * r_i)+(w_j * r_j)/(w_i + w_j)

其中r_i,r_j分别是人i和人j的评级。

要获得每个人的权重的价值,你可以举例说明那个人的星星数量。

一个很好的资源将是以下页面: http://en.wikipedia.org/wiki/Weighted_mean