【问题标题】:What is Youtube comment system sorting / ranking algorithm? [closed]什么是Youtube评论系统排序/排名算法? [关闭]
【发布时间】:2015-03-03 02:55:38
【问题描述】:

Youtube 提供两种排序选项:最新优先和热门 cmets。 “最新优先”非常简单,我们只需按发布日期对 cme​​ts 进行排序。但“Top cmets”似乎比仅按“点赞”排序要复杂得多。

经过短暂的研究,我发现 cmets 的顺序取决于那些东西:

  • “赞许”和“赞许”的次数
  • 发布日期
  • 对该评论的回复数

但我不知道 Youtube 是如何使用这些信息来决定顺序的,比如哪些信息更重要,哪些信息不那么重要。

有没有关于这个话题的文章可以参考?

谢谢!

【问题讨论】:

  • 这称为排名算法。我也很感兴趣。除非 Youtube 工程师发布他们的算法,否则这并不容易看到。这是 Reddit 的排名算法。我认为比我们想象的要复杂。 amix.dk/blog/post/19588 所以也许 Youtube 也喜欢这个

标签: algorithm sorting youtube weighted-average


【解决方案1】:

我有你的问题的答案。

在互联网上搜索了这个问题的答案后,我一直没有找到我想要的东西。因此,我和我的同事决定尝试将系统与 Youtube cmets 一起使用。

首先,我们将我们认为受欢迎的视频分类到一个部分,将普通视频分类到另一个部分,将不太受欢迎的视频分类到最后一个部分。每个部分有 200 个视频,经过几天的检查,我们开始注意到一种模式。我们发现您对所需的三件事是正确的,但我们也更深入地研究并发现了一个额外的变量。

Youtube 评论系统依赖于四件事:

1) 发布时间,

2) 评论的喜欢/不喜欢比率,

3) 回复数,

4) 而且,不管你信不信,WHO 发布了它。

您曾经发布过的每条公共评论的平均喜欢/不喜欢比率都包含在其中,因为(我们预测)他们认为喜欢/不喜欢比率低的人会发布那么多的 cmets人们不喜欢或根本不同意。

它有一个算法,它比你想象的要简单得多。基本上有这些东西,我们称之为“模块点”,你会根据这四个因素得到一个。首先,以下是您需要了解的关于模块点转换的两个因素:

  • 对于评论的喜欢/不喜欢比率,将该数字乘以十。

  • 对于评论的回复量(不是来自原始发布者),有两个模块点。

这是决定评论模块点数的两个基本因素。

例如,如果评论有 27 个喜欢和 8 个不喜欢,那么比率将为 3.375。乘以 10,您将获得 33.75 个模块点。使用下一个因素,回复数量,假设这条评论有 4 条直接回复。将 2 乘以 4,我们得到 8。这是在累积模块点数上加 8 的部分,总共有 41.75 个模块点。

但我们还没有在这里完成;这就是棘手的地方。

使用一个人公开发布的总 cmets 的平均喜欢/不喜欢比率,我们发现添加到累积模块点的公式是这样的:

C = MP(R/3) + (MP/10)

where C = Comment Position Variable; MP = Module Points; R = Person's total like/dislike ratio

相信我,我们只在这部分上花费了 DAYS 天,这可能是最令人沮丧的。尽管这个方程中的 3 和 10 看起来是随机的和不必要的,但到目前为止,我们测试这个方程的所有 cmets 都通过了测试,但是当这两个变量被移除时没有通过测试。等式完成后,它会为您提供一个我们命名为位置变量的数字。

然而,我们还没有说完,我们还没有谈到time

实际上我很惊讶这部分没有像我预期的那么长,但是对于我们测试的每条评论,每次都做这个等式确实很痛苦。起初,在测试它时,我们认为如果 2 个 cmets 具有相同的位置变量,那么就可以打破障碍。

事实上,当这种情况发生时,我几乎称它为实验的总结,但经过进一步检查,我们发现还有更多工作要做。我们发现,一些具有相同位置变量的 cmets 的排名比彼此高,但时间似乎是随机的!经过几天的检查,最终结果如下:

在应用第四个变量之前,我们还必须找到另一个方程。使用另一个单独的等式,我们的代数推论可以归结为:

X = 1/3(S/10 + A) x [absolute value of](A - 3S)

where X = Timing Variable; S = How long ago the video was posted in minutes; A = How long ago the comment was posted in minutes

我希望我是在编造这个,但不幸的是,这就是系统的复杂性。其他变量背后有数学原因,但它们太复杂而无法解释,可能至少需要三段时间来解释。我们在 150 多个 cmets 上测试了这个方程,所有这些都被证明是正确的。

一旦你找到X,也就是我们所说的时序变量,你所要做的就是将它应用到这个方程:

N = X(C/4 + 1)

where X = Timing Variable; C = Positioning Variable

N 是您所有问题的答案。

这是最终的方程式,最终的答案。简单的结论:N越高,评论越高。

注意:特别感谢我的同事:David Mattison、Josh Williams、Diego Mendieta、Steven Orsette 和 Kyle Shropshire。如果没有他们和他们为此付出的努力,我永远不会发现这一点。

【讨论】:

  • 感谢您花时间在这方面,非常感谢和尊重您在这里所做的工作。虽然我不确定这有多准确,但我会试一试。我很想读一篇关于你们是如何想出这个复杂公式的文章以及在 Youtube 评论系统上测试它的源代码(如果有的话),那将非常有趣。
  • @Cole Dixon,你提到的 WHO 因素会影响结果吗?我看不出有关 WHO 的任何因素。
  • WHO 因子是 R,这个人的总喜欢/不喜欢比率。
  • Cole,这是否考虑了基于时间的评论衰减?例如,几分钟前我在一个视频下发表了评论。它出现在顶部(但在固定的帖子下方 - 可以理解)。过了一会儿,它开始衰减——到第二个位置,第三个位置等等。注意它没有增加任何喜欢或答案。
  • 如果评论有 0 个不喜欢,如何计算喜欢/不喜欢比率?
猜你喜欢
  • 2013-03-10
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
相关资源
最近更新 更多