对于网络搜索排名,排名合并通常是如何进行的?

Joe*_*evo 5 search ranking google-ranking

对于提出网页排名,我的理解是有一个特定于查询的分数(例如文档与输入到搜索引擎中的查询的相关程度)和一个独立于查询的分数(例如网页,例如)。

我的问题是,这两种分数怎么能合并成没有一个分数占主导地位的方式?我自己的想法是某种线性组合可能有效,但我并不完全确定。

如果有人能回答它在实践中是如何完成的,那就太好了。如果没有,也欢迎理论答案。

Gez*_*nyi 1

搜索引擎通常会对此保密,因为这是魔术实现的很大一部分(即专有位),所以我只能做出有根据的猜测。

实际的逻辑/理论内容

然而,我认为我们需要首先认识到我们组合的可能不是两个完全独立的乐谱。我们可能会在所有地方使用所有数据,而不是手动选择数据内容和位置。让我们看一个可能的例子:

query: "dog"

returned objects to rank:

1. "dogs are awesome! find out more about owning a dog today!"
   Query relevance: 9/10
   From: some obscure blog that no-one cares about (2/10 according to PageRank)

2. "doge memes for you. Get the finest memes - doge and more!"
   Query relevance: 7/10 (only 1 letter difference! Could be a typo, maybe?)
   From: 9gag, first search result for anything trendy-related, so it must be good (9/10 according to PageRank)
Run Code Online (Sandbox Code Playgroud)

无论你如何尝试弯曲、倾斜和加权数据,9gag 最终都会名列前茅,尽管它显然是错误的(对这个荒谬的例子感到抱歉)。显然,这并不像将这两个数字推到一起那么简单。

投机时间

(请注意这一部分比前一部分长。对此持保留态度。)

将整个网络想象成一个图(如图论图),或者某种“地图”,其中包含相互关联的东西。点之间的距离是 PageRank 距离(衡量两个网站的 PageRank 紧密程度的某种衡量标准,其中较高表示距离较大,反过来 PageRank 分数较低 - 因此,pr_n=1/sum(length of all edges connecting to n)),而圆圈内的“权重”是与您的查询。我们的工作是找到与同行相对接近的数字(即高 PageRank 分数),但也具有较高的权重。然后,我们可以使用您选择的算法来提取最好的算法。但这样,我们仍然只能得到之前得到的结果,其中dogsdoge只相差 1 个字母。原因是,我们忽略了其他页面的查询分数。因此,我们要做的事情如下:

  • 假设我们从这张图开始:

(是的,我意识到它并不完整并且缺少一些联系。但我有理由相信@Joebevo 是一个人,他会欣赏一个视觉上可解释的图表和数学,而这些图表和数学不会持续半个小时。)

蓝色代表 PageRank距离(即页面彼此之间的距离,因此到所有连接节点的平均 PageRank 距离越低代表 PageRank 得分越高)。 图表

  1. 我们首先选择连接最紧密的节点:蓝色节点。我们将查看其所有周围环境,并根据其周围的 PageRank 分数对其进行细分,并根据其得分“8”进行细分。这些新数字由紫色文本表示。

图表,仍然

  1. 接下来,我们将这些数字除以它们所连接的节点(除法是因为 PageRank 距离越低越好,但考虑到相关性,越高越好),为这些节点赋予一个新值(用白色表示)。这终于是排名分数了!(尽管这不是最终得分,因为我们还没有考虑到大量距离):

图表

我们怎样才能看出我们所做的事情是有意义的?好吧,回顾一下第一张图表。绿色节点又小又远,因此它最终在该图中获得了较低的分数。同时,紫色节点很大并且(相对)接近蓝色,因此它得分最高。红色节点更接近,但由于其体积很小,它只排在第二位。

从数学上来说,我们没有做任何复杂的事情 - 我们只是计算出两个分数的“平均值”,并按中间节点的重要性进行加权。这种算法会混淆“doge”和“dog”。红色节点对橙色一无所知,它们只关心蓝色。为了解决这个问题,我们需要重复这个过程。

为了决定下一步去哪个节点,我们将使用这个算法(它基于 Dijkstra 中使用的理论,这是有效的路径查找算法):

流程图

  • 因此,我们将进入具有下一个连接的节点。在本例中,它们都是平局 (3),因此我们将进入得分最高的节点(请注意,如果分数也平局,则您选择的节点对输出没有影响),因此为紫色。我们只需重复该过程即可获得:(橙色为新距离,青色为新尺寸)

图表

请注意,对于白色文本节点,我们可以乘以距离而不是除以,因为我们已经将其标准化为正比例(术语“使两个轴随着结果变得更准确而增加,而不是一个增加另一个减少” ')。

自上次更新以来我们唯一未更新或在更新中使用的节点(仍然算作已触及,因为它与姐妹节点之间的某些连接已更改)是橙色的,所以我们现在就去那里。(使用紫色表示新节点,使用绿色表示新线)

图形

然后我们将转到红色(绿色节点,黑色线):

图形

最后(在我们停止之前)变为绿色(红色节点,红线):

图形

因此,查看结果:

  • 根据常识,紫色、蓝色和橙色看起来秩序井然!当然,这些数字与简单的平均值有很大不同,这很好,因为它:
    • 计算中考虑所有其他节点,而不仅仅是一个节点及其一个 PageRank 分数
    • 更适合与更多数据点进行比较,因为我们正在考虑很多其他因素
  • 然而,红色和绿色所发生的情况似乎非常令人困惑。尽管红色甚至一开始就是第二选择,但它们相对于其他颜色突然缩小了!这是一个错误吗?

让我们分析一下第二部分。一开始确实很令人困惑,但我们需要在抽象层面上看看我们实际上刚刚做了什么。将其想象成一个电路:电流从每个电池/电流表/电源组流向其他电池,但通过具有一定电阻的电线。我们获取每个节点的值,并根据距离将其传播到其邻居。另一个比喻就像是冰人,在炎热的夏天把冰搬到各家各户。您很乐意为每个人带等量的冰,但很多冰在运往每个人家的途中都会融化。因此,每个人都会得到与他们的距离成正比的数量(不过,我不喜欢这个类比,因为它给出了数字可以从节点“泄漏”的想法)

那么,现在让我们一步一步地进行。由于我们通过红绿轴直接到达紫橙轴,因此我们基本上将它们用作控制点。因此,我们不会将它们用于前两个步骤。这是因为,正如我在本节开头提到的,我们实际上并没有得到完整的图表。这可以修复它:

更好的图表,但没有数字

现在,并不是所有的事情都需要考虑:只50*sqrt(2)需要连接子集的平方根(即节点的百分比):那些被 1 或 2 个节点分开的节点,但不再需要连接。否则,事情会变得太笨重,因为决定下一个节点的算法将得到双重递归 - 这已经够糟糕了!(公平地说,数学上的理由也存在,但它超出了这个答案的范围(但本质上,数字将不太接近“最佳”答案))。

总之,您的独立于查询的概念在技术上是正确的,但重要的是要注意它并没有完全独立于查询进行组合。它取决于其他结果来形成某种加权平均值,以确保完全位于频谱两端的两个结果不会获得相同的分数(例如,相关性 2 + PR 8 与相关性 8 + PR 2)。不相关的查询显然不再相关,因为它具有很高的 PageRank 分数,而如果它只是作为链接到查询不相关页面的结果而获得,那么高 PageRank 分数是没有用的(例如,尽管 9gag 是从很多地方,如果你发现这些地方都与狗没有任何关系,为什么那么高的 PageRank 分数有什么意义呢?)。

我知道这个答案很长,但我希望它能清楚地回答你的问题。请注意,这只是使用的一种算法,但足以让 99% 的开发人员放弃尝试搜索引擎。