知乎如何对回答进行排序?你的一票很重要。

知乎如何对回答进行排序?你的一票很重要。

知乎今天上线了新的回答排序算法。

你也许不会注意到太大的变化,毕竟旧版排序在大部分情形下效果也不错。因此,这次改进的目标,是更好地做到两点:


  1. 专业、严谨、认真的高质量回答,排序应该更靠前
  2. 新创作的优质回答,能更快地获得更好的排序

为了帮助大家更好的理解新的机制,我们先来看看改进前的排序存在哪些问题。旧版的算法简化后可以表示为:

得分 = 加权赞同数 - 加权反对数
注:用户在不同话题下的权重计算方法,可以参考我之前的回答「知乎如何计算用户在某个领域下的权重?」。

公式本身很朴素。事实上之所以到今天这个简单的公式仍然能保证大部分优质内容能够排到前面,主要是用户投票权重在发挥作用。虽然针对权重计算的优化仍然在持续进行,我们也很快遇到了一些算法上的瓶颈。

  • 当问题下有多个发布较早的回答获得高票时,新的回答即使质量很高,也很难在问题页上获得足够的曝光,难以积累更多赞同票
  • 一些误导性、煽动性的高票内容,即使同时也有很多反对票,仍然排在认真、严谨但票数相对较少的优质回答前面
  • 一旦回答的反对数超过赞同数,得分为负,就会显示在所有低票回答下面(可能有几百个)。即使内容经过作者修改,也几乎没有机会重见天日。

上述问题在专业领域内对参与讨论的用户造成的伤害尤其明显。这绝不是我们希望看到的。

新的排序机制在很大程度上解决了这些问题。如果想了解算法原理和相关细节,可以移步「如何评价知乎的回答排序算法?」,下文的说明中并不会涉及专业知识。

新排序算法(可以简称为「威尔逊得分」算法)的思想是,如果把一个回答展示给很多人看并让他们投票,内容质量不同的回答会得到不同比例的赞同和反对票数,最终得到一个反映内容质量的得分。当投票的人比较少时,可以根据已经获得的票数估计这个回答的质量得分,投票的人越多则估计结果越接近真实得分。

如果新一个回答获得了 1 票赞同 0 票反对,也就是说参与投票的用户 100% 都选了赞同,但是因为数量太少,所以得分也不会太高。如果一小段时间后这个回答获得了 20 次赞同 1 次反对,那么基于新算法,我们就有较强的信心把它排在另一个有 50 次赞同 20 次反对的回答前面。原因是我们预测当这个回答同样获得 50 次赞同时,它获得的反对数应该会小于 20。威尔逊得分算法最好的特性就是,即使前一步我们错了,现在这个新回答排到了前面,获得了更多展示,在它得到更多投票后,算法便会自我修正,基于更多的投票数据更准确地计算得分,从而让排序最终能够真实地反映内容的质量。

因此未来我们会看到更多新创作的优质内容,快速获得靠前的排序,低质内容则会长期保持在底部。(细心的你可能也想到了,并不是所有的回答最终都会获得很多投票,大体上获得投票总数较多的回答仍然会排在投票较少的回答前面。)

这次算法改进,仍然遵循此前公布的「知乎回答排序原则」。由于权重的计算方法没有公布,反对票也没有显示在页面上,因此出现低票回答在前高票回答在后是很正常的现象

投票权重的计算方法,很多用户非常关心。我们正好再次明确一下最重要的几点原则:

  • 在知乎上创作了专业、严谨、认真的高质量回答的人,应该在他/她擅长的领域里,有更大的判断力。权重则是这个判断力的体现。
  • 用户在一系列相关话题下发布的全部回答所得到赞同、反对、没有帮助票数决定用户在该领域下的权重
  • 问题添加的话题和话题父子关系决定问题归属的领域

对内容质量的判断,归根结底,是通过知乎社区中用户的集体智慧的选择而完成的,更具体则体现为每一次「赞同」「反对」「没有帮助」按钮的点击。新版排序机制所鼓励的,仍然是知乎从成立第一天就追求的:创作过专业、严谨、认真的高质量内容,并且得到社区认可的用户,在塑造社区未来的内容质量标准和其他社区共识的过程中,他们能发挥的作用也更大。

回想一下,是否有那么一些时候,你面对某个排序并不理想的问题页皱紧眉头,感觉自己的一票对排序结果的影响微乎其微而深感无力。新版排序算法结合话题权重,相比过去能够做到对每一次投票做出更迅速的反应。不试试看又怎么知道呢?

知乎如何对回答进行排序?你的每一次投票都很重要。

编辑于 2014-12-05 14:39

文章被以下专栏收录