5

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

我的问题是,这两种分数如何以一种没有一个分数占主导地位的方式合并?我自己的想法是某种线性组合可能会起作用,但我并不完全确定。

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

4

2 回答 2

2

当然,这是大谷歌秘密的一部分,正如 Geza Kerecsenyi 所说的那样。

但是试着从两个角度来思考这个问题(我会以非常广泛的方式解释这一点,但希望你能明白这个想法):

  1. 解析式。将两个等级混合在一起并进行线性组合并不难。假设P是一个页面排名,并且Q是一个查询文档排名。然后,你可以这样说:

TotalRank = a*P + b*Q

第二个问题是如何正确拟合这些ab系数,对吗?

好吧,在这里我们可以通过“质量衡量”来帮助自己:

  • 一个“测量数据集”:一组具有“etalone rank”的查询和页面对(您期望为这query-page对获得的总排名)。我们可以手动收集这个数据集。我们收集的越多,我们得到的测量就越精确。
  • 还有一个“衡量标准”本身:另一个公式,它将告诉我们,我们的TotalRank公式有多“好”或“坏”。例如,它可能是 MSE(均方误差)——简单地说,它是计算两个值之间的差异:您的排名和整个数据集的 etalone 排名。因此,MSE 越接近于零,您拟合得a越好b,并且您的TotalRank公式越能满足您的期望。

有了这样的度量,您可以手动拟合它们ab确保您的TotalRank-formula 满足您的排名期望:您刚刚看到,MSE 越来越接近于零。但这是一项非常常规的工作,因此您可以使用...

  1. 机器学习。我不会在这里解释如何将机器学习应用于您的具体目的 - 您可以在 Internet、Coursera 等中找到所有这些。但是会说,拥有“测量数据集”,学习一些算法就足够了,比如线性回归(或更复杂的,如决策树),自动适应a这些b

  2. 当然,通过这种方式,您不仅可以“混合” 2 个,还可以将更多排名因素“混合”成单个“公式”。这就是搜索引擎如何混合许多因素,如“页面标题中存在查询词”、“用粗体标记的词”等。

另外,我建议您看一看斯坦福大学的信息检索简介一书。它解释了很多这样的问题。

PS:对不起我的英语不好,祝你好运!:)

于 2019-08-11T15:43:26.830 回答
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)

无论您尝试弯曲、倾斜和加权数据,9gag 最终都会排在首位,尽管显然是错误的(抱歉这个荒谬的例子)。显然,这并不像将这两个数字放在一起那么简单。

投机时间

(请注意本节比上一节要长。对它持保留态度。)

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

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

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

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

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

图表,仍然

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

图表

我们如何才能看到我们所做的事情是有意义的?好吧,回头看看第一个图形图像。绿色节点又小又远,因此在这张图中得到了低分。同时,紫色节点很大并且(相对)接近蓝色,因此得分最高。红色节点距离更近,但由于体积小,仅排在第二位。

在数学上,我们没有做任何复杂的事情——我们只是计算出这两个分数的“平均值”,由中间节点的重要性加权。这是一种将“doge”与“dog”混淆的算法。红色节点对橙色一无所知,他们只关心蓝色。为了解决这个问题,我们需要重复这个过程。

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

流程图

  • 因此,我们将进入具有下一个最多连接的节点。在这种情况下,它们都是并列的 (3),因此我们将进入得分最高的节点(请注意,如果分数也相同,那么您选择哪一个对输出没有影响),所以是紫色的。我们将简单地重复这个过程,以获得:(橙色的新距离,蓝绿色的新尺寸)

图表

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

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

图形

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

图形

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

图形

因此,要查看结果:

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

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

所以,现在让我们一步一步来。由于我们通过红绿轴直接进入紫橙轴,因此我们基本上将它们用作保持点。因此,我们没有在前两个步骤中使用它们,因为它们是什么。这是因为,正如我在本节开头提到的那样,我们实际上并没有完整的图表。这将解决它:

更好的图表,但没有数字

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

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

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

于 2019-08-09T21:27:06.133 回答