大家谁能想出个算法来公正的排名出一个文章提交网站的作者排名。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zzlettle
V2EX    设计

大家谁能想出个算法来公正的排名出一个文章提交网站的作者排名。

  •  
  •   zzlettle 2012-08-19 16:23:56 +08:00 4015 次点击
    这是一个创建于 4811 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想制作一个内容共享,提交的网站。
    类似reddit这样的,我在上面设置了让每个人选择like 和dislike的按钮。
    这样在一个规定的周期内,比如一个星期内,提交文章质量最高的作者排名。
    我找到些文章介绍文章排名的算法,比如reddit文章排名的公式我也看过介绍。http://www.ruanyifeng.com/blog/2012/03/ranking_algorithm_reddit.html
    但对于提交内容的作者我也要找个好的算法来排名他们的贡献。大家有什么好的想法。因为我打算根绝作者的排名来奖励他们,这样才能鼓励更多的人来提交他们找到的内容发表在网站上面。但要找个比较公平的算法。然后一个周期过后,我把奖品发给排名前3的作者后,然后大家重新再来。

    不知道大家有没有这方面的研究。
    37 条回复    1970-01-01 08:00:00 +08:00
    qiayue
        1
    qiayue  
    PRO
       2012-08-19 16:48:04 +08:00
    发给前三的文章的作者不就行了
    binux
        2
    binux  
       2012-08-19 16:58:44 +08:00   1
    你把上面那个算法的对象换成作者不就完了
    zzlettle
        3
    zzlettle  
    OP
       2012-08-19 18:57:14 +08:00
    @qiayue
    @binux 感觉那个只是让文章排在最前面,所以加入了时间的因素。
    但作者的话,应该纯粹根据他的文章质量,大家喜好的程度来评判,所以不能把时间因素加入就进去。
    大家有没有一个公平,公开的算法,来体现作者的排名。
    zzlettle
        4
    zzlettle  
    OP
       2012-08-19 19:00:54 +08:00
    如果大家没有什么好的想法,有谁知道国外有什么论坛,就是这样大家讨论数学算法的地方,看看别人有是好的算法。
    我可以根据需要,把like dislike变成5星的评分机制也可以。
    binux
        5
    binux  
       2012-08-19 19:52:04 +08:00
    @zzlettle 那样就热门的作者就总是热门了,既然有周期,那么时间肯定需要考虑
    zzlettle
        6
    zzlettle  
    OP
       2012-08-19 21:56:56 +08:00
    好吧,我再说的详细点。
    打个比方,我需要每星期根据作者的贡献对排名第一的人发1000块钱。
    贡献当然是他的文章,大家喜欢。根据大家对他的投票,计算出来。但不能简单的只是票数的总和,因为我总觉得要考虑各方面的因素。
    比如有的人只写了一篇文章,但这篇文章质量非常高。他因为这篇文章得票100.
    但有的人其实就是到处share的东西,一个星期内到处找那种流行的东西,搞笑的图片什么的,一共找了100篇文章,就算每个只的一票,他也一共有100票,但显然不公平。
    所以我希望能找出个比较公平的算法,考虑到单个文章的质量,也兼顾那种到处找人们喜欢的东西分享到我的网站,贡献了大量内容的人。

    每个星期一次结算,得分最高的人才能给1000块钱。
    zzlettle
        7
    zzlettle  
    OP
       2012-08-19 22:02:08 +08:00
    算法其实很重要的,对于搜索引擎们来说那个命根,其实对于一个文章发布的网站,找准个文章还有发布者的排名的算法也很重要。如果有人能够设计个合理的算法,我愿意出钱来酬谢。
    cheshirecat
        8
    cheshirecat  
       2012-08-19 22:06:19 +08:00
    真正要做得好,需要类似 PageRank,或者根据投票的人自身从前的得票情况决定他的投票力。

    但是除非真的做到很复杂,否则都会有漏洞可以钻。最好还是加入人工管理员的因素。
    zzlettle
        9
    zzlettle  
    OP
       2012-08-19 22:09:31 +08:00
    人工当然也要管理,但最好有个公式,这样我人工干预的也会少。
    zzlettle
        10
    zzlettle  
    OP
       2012-08-19 22:14:40 +08:00
    投票的人我无法控制,因为投票的人是大量的网站注册用户,我只能保证每个人只能一篇文章投一次票
    cheshirecat
        11
    cheshirecat  
       2012-08-19 22:22:25 +08:00
    最简单这样呗:投票的威力再按照投票者本身从前的得票数加权。

    用户A:从前得过1000票。
    用户B:从前得过10票。
    用户C:从前得过50票。

    文章1:用户A赞。实际得票:log(1000) = 3。
    文章2:用户B和C赞。实际得票:log(10) + log(50) = 2.69897。
    zzlettle
        12
    zzlettle  
    OP
       2012-08-19 22:44:46 +08:00
    @cheshirecat 投票者本身从前的得票数加权 这个怎么来的
    zzlettle
        13
    zzlettle  
    OP
       2012-08-19 22:50:23 +08:00
    @cheshirecat 对投票者本身的权重这个要考虑,然后其实我还考虑了,网站发展的规模的因数。
    比如开始可能网站只有100个人,和后期有1万人的规模时候,这个排名也会有不同。

    比如同样一篇高质量的文章,规模小的时候,全部人都投票也只会有100票,但这么高比率的赞成票,说明了质量很高,但如果有人大量转载流行搞笑的东西,没篇文章得几票,他大量的发这样的文章,总数加起来也能有很多票。
    cheshirecat
        14
    cheshirecat  
       2012-08-19 22:52:35 +08:00
    @zzlettle 没错。所以最终只能变成类似 PageRank 的问题。然后变成算法和各种邪恶用户的长期斗争。
    013231
        15
    013231  
       2012-08-19 22:52:50 +08:00
    @zzlettle 作者得分 = 作者的文章1票**2 + 文章2票**2 + 文章3票**2 ...
    **2是指平方.
    zzlettle
        16
    zzlettle  
    OP
       2012-08-19 22:57:12 +08:00
    @013231 这么设计是什么意思了
    zzlettle
        17
    zzlettle  
    OP
       2012-08-19 22:59:47 +08:00
    @013231 个人感觉,要考虑投票人本身的权重,达人的投票权重跟一个的过路的投票权重要有区分,然后要考虑到单个文章的质量,不能光靠量来取胜。
    zzlettle
        18
    zzlettle  
    OP
       2012-08-19 23:02:10 +08:00
    大家帮忙想想,还要考虑些什么因素,来判别作者的排名。
    ryon
        19
    ryon  
       2012-08-19 23:17:14 +08:00
    除了公平和公正,你还得考虑服务器计算能力。这类的计算会涉及太多的查询导致页面加载的体验糟糕。anwsion目前按照stackoverflow的计算方式计算热门问题,发现还是需要实时计算,没有独立的服务器,在数据量大的时候往往会让访问用户崩溃。
    zzlettle
        20
    zzlettle  
    OP
       2012-08-19 23:50:45 +08:00
    @ryon 如果真的是这样的话,要么改进服务器,要么显示排名的时候,单独一个页面,出结果的页面慢点应该能介绍,内容文章页面的现实速度要快。
    binux
        21
    binux  
       2012-08-20 00:02:57 +08:00
    既然你不想给发了100篇文章的人1000块钱,这表明你自身就存在取舍
    是发了100篇文章的人贡献大,还是发了一篇100人赞的人贡献大

    这不是一个算法问题,你不能要求算法给出答案
    而是,你是怎么想的,你觉得谁贡献大。然后去设计这个算法,然后照着你的目标调整它
    zzlettle
        22
    zzlettle  
    OP
       2012-08-20 00:07:40 +08:00
    @binux 是的,是个取舍问题。因为我希望有高质量的原创文章,不希望转载大量没什么意思,搞笑的东西。原则是希望人们到这里来后,有新东西,也要有放松的东西。不偏重某一方。
    zzlettle
        23
    zzlettle  
    OP
       2012-08-20 00:09:14 +08:00
    @binux 所以我不排斥转载的东西。关键是让真正的读者能喜欢我的网站,最终目的是人们来了还想来。
    013231
        24
    013231  
       2012-08-20 00:42:58 +08:00
    @zzlettle 是了文章更高的得分, 以解你所的大量低文章分.
    至於投票人的重, 可以用似PageRank的算法, 文章得分高的人票更高.
    zzlettle
        25
    zzlettle  
    OP
       2012-08-20 04:42:39 +08:00
    @013231 能给个设计好的公示算法吗
    cheshirecat
        26
    cheshirecat  
       2012-08-20 08:59:41 +08:00
    @013231 这个想法不错。

    举个例子解释一下:
    用户A发了10个帖子,每个得5分。最终得分 = 5^2 + 5^2 + .... = 250。
    用户B发了1个帖子,得了20分。最终得分 = 20^2 = 400。

    可以自行调整幂次。感觉 1.7 比较适合。事实上有最优解,不过计算量比较大。
    cloudream
        27
    cloudream  
       2012-08-20 18:51:47 +08:00
    给每个作者一个adsense频道。按adsense广告收入排,如何?
    zzlettle
        28
    zzlettle  
    OP
       2012-08-20 20:16:51 +08:00
    @cloudream 你怎么知道他们有adsense账户了。收入这个东西,难度谷歌会公布出来让外人知道吗。
    zzlettle
        29
    zzlettle  
    OP
       2012-08-20 20:27:46 +08:00
    我觉得要考虑投票者的权重,等于要找出那些在某个主题上的达人。如果这个人在这个方面的文章大家都喜欢,他的听众人数可以用来当个参考。达人在他熟悉的方面的投票要高于一般人。但也不能太高,也许有的人本事高,但他们不喜欢发表文章。毕竟人民的眼光是雪亮的。
    binux
        30
    binux  
       2012-08-20 21:05:54 +08:00
    不管你用什么算法,肯定有破解办法

    要么就简单来
    计算一个周期内一个作者所有文章 获得的唯一用户的赞的总数,这表明了一个作者的作品对于读者的覆盖面
    同时一定程度去除了一个作者发大量文章的影响: 这样的作者有更大可能获得重复用户的赞

    如果你要PR,那么不应该以作者的水平当作读者的水平
    可以通过读者赞过的文章最终排名,提供给读者一个"品味"的反馈,以此作为权重
    zzlettle
        31
    zzlettle  
    OP
       2012-08-21 01:41:50 +08:00
    @binux 是一个新的思路。你这个等于是在考量喜欢这个作者文章的读者人数。但很可能你会发现相差很近。如果网站初期读者规模不大,这个差距会更小,更难衡量。其实我也不反对转摘这种形式,只要有人喜欢,小众的也要满足。
    013231
        32
    013231  
       2012-08-21 03:54:47 +08:00   1
    @zzlettle
    文章得分 = 所有like的用户票之和 - 所有dislike的用户的票之和
    用户得分 = 该用户所有正分文章文章得分的平方和 - 该用户所有分文章文章得分的平方和
    用户票 = 1 + log(该用户所有文章的like + 1)
    zzlettle
        33
    zzlettle  
    OP
       2012-08-21 08:04:33 +08:00
    @013231 能介绍下 用户票权的算法意义吗
    binux
        34
    binux  
       2012-08-21 09:54:12 +08:00
    @zzlettle 不会的,第一不是所有人每天都来,第二初次访客数量还是比较大的
    013231
        35
    013231  
       2012-08-21 14:06:34 +08:00
    @zzlettle 普通用户票1. 表文章且得好的用户具有更高票.
    票公式可以修改一下:
    用户票 = 1 + log(该用户所有文章like的平方和 + 1)
    zzlettle
        36
    zzlettle  
    OP
       2012-08-21 14:10:25 +08:00
    @binux 确实,我现在也觉得你这个思路很对。
    首先就应该定个基调,什么样的作者才叫好的作者。
    评价作者发布文章的质量好坏的原则我认为是越多的人认为好,这个才叫好。翻译过来就是大众认可的,才叫正真的好。

    就是说,如果一定时期,某个人发布的所有文章受到越多的不同的人的肯定,那他的文章是得到大部分人的肯定。就算他只发布了少量文章,但每篇文章都能得到广泛的大比率用户的肯定,这样的文章才算是高质量的。他的贡献就大,如果哪个作者每篇文章只得到很少数量的用户肯定的作者,就算他发布的数量很大,按道理来说他的贡献很小,搞不好还是发垃圾的人。

    等于我要兼顾单篇文章的投票数,如果都是写受大众喜爱的文章的作者,这样就要比他们发表的文章数量了。等于单篇文章的质量和总共的数量都要兼顾。

    这个数学公式应该怎么设计比较好了。
    zzlettle
        37
    zzlettle  
    OP
       2012-08-21 14:13:09 +08:00
    @013231 因为我还考虑到每个人的专长不同。如果这个人在汽车方面的文章得到大家的认可,他在汽车主题上的文章投票应该权重高,但他显然不应该对美食这种类型的文章投票也权重高。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5908 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 06:14 PVG 14:14 LAX 23:14 JFK 02:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86