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

时间:2019-04-10 03:18:55

标签: search ranking google-ranking

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

我的问题是,如何将这两种分数合并在一起,使得没有一个分数占主导地位?我自己的想法是某种线性组合可能有效,但我不确定。

如果任何人都可以回答实践中的完成方式,那就太好了。如果没有,理论上的答案也将受到赞赏。

2 个答案:

答案 0 :(得分:0)

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

实际的逻辑/理论知识

但是,我认为我们首先要意识到,我们合并的不是两个完全独立的分数。我们可能会在所有 all 位置中使用 all 数据,而不是手动选择内容和位置。让我们看一个潜在的例子:

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是一个人类,他会欣赏一个视觉上可解释的图形和数学,这些图形和数学不会持续半个小时。)< / p>

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

  1. 我们将首先选择连接最多的节点:蓝色节点。我们将查看其所有周围的环境,并根据其周围的PageRank得分对得分取'8'并将其细分。这些新数字以紫色文字表示。

the graph, still

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

the graph

我们如何看待所做的事情有意义?好吧,回头看看第一个图形图像。绿色节点很小且距离较远,因此最终在该图中得到较低的分数。同时,紫色结点很大,并且(相对)接近蓝色,因此得分最高。红色节点甚至更近,但是由于其很小的尺寸,它仅排在第二位。

从数学上讲,我们没有做任何复杂的事情-我们只是根据中间节点的重要性对两个分数进行了“平均”。这是一种将“ doge”与“ dog”混淆的算法。红色节点对橙色一无所知,他们只关心蓝色。要解决此问题,我们需要重复该过程。

我们将使用此算法(它是基于Dijkstra中最有效的路径查找算法中Diemkstra使用的算法的理论)来确定下一个节点的位置:

flowchart

  • 因此,我们将转到具有次最晚连接的节点。在这种情况下,它们都是并列的(3),因此我们将进入得分最高的节点(请注意,如果同时也对得分进行了捆绑,则选择的那一个对输出没有影响),因此为紫色。我们将简单地重复此过程,以获得:(橙色显示新距离,蓝绿色显示新大小)

the graph

请注意,对于白色文本节点,我们可以乘以距离而不是除以距离,因为我们已经将距离归一化为正比例(“行话的用语是使两个轴都增加,因为结果变得更加准确,而不是增加一个”和另一个递减的”)。

我们唯一未更新或未在更新中使用的节点(由于上次更新是橙色,因此仍被视为已被触摸,因为它与姊妹节点之间的某些连接已被更改),所以我们现在去那里。 (使用紫色表示新节点,绿色表示新行)

graph

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

graph

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

graph

因此,要查看结果:

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

让我们分析第二点。一开始确实确实令人困惑,但是我们需要从抽象的角度来看一下我们实际上所做的事情。想象一下它就像一个电路:有电流从每个电池/安培表/电源组流向其他电池,但电流流经具有一定电阻的导线。 我们要获取每个节点的值,然后根据距离将其传播给它的邻居。另一个比喻就像是冰人,在炎热的夏天将冰运到房屋中。您会很高兴地向所有人拿等量的冰块,但在通往每个人家的路上融化了很多。因此,每个人都得到与其距离成正比的数量(不过,我不喜欢这种类比,因为它给出了数字可以从节点“泄漏”的想法)

因此,现在让我们逐步进行。由于我们直接通过红绿色轴转到紫橙色轴,因此我们基本上将它们用作保持点。因此,我们并没有在最初的两个步骤中使用它们。这是因为,正如我在本节开始时提到的那样,我们实际上没有完整的图表。这样可以解决它:

better graph, but without numbers

现在,无需考虑所有内容:仅需要连接子集的平方根(即节点的50*sqrt(2)%):由1或2个节点分隔开的节点,但不需要更多。否则,事情将变得太笨拙,因为用于确定下一个节点的算法将得到 double -递归-这样就足够糟糕了! (公平地讲,也有数学上的论据,但这超出了此答案的范围(但从本质上讲,数字会比“最佳”答案少 ))。

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

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

答案 1 :(得分:0)

这当然是Google大秘密的一部分,正如Geza Kerecsenyi所说。

但是请尝试从两个角度考虑这一点(我将以非常广泛的方式对此进行解释,但是希望您能理解这个想法):

  1. 分析公式。将两个等级以线性组合在一起并不难。假设P是页面等级,而Q是查询文档等级。然后,您可以这样说:

TotalRank = a*P + b*Q

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

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

  • “测量数据集”:一组具有“独立排名”(您期望为此query-page对获得的总排名)的查询和页面对。我们可以手动收集此数据集。我们收集的越多,我们得到的测量就越精确。
  • 和“度量”本身:另一个公式,它将对我们说我们的TotalRank公式有多“好”或“坏”。例如,可能是MSE(Mean Squared Error)-最初来说,它是在计算两个值之间的差:整个数据集的等级和etalone等级。因此,MSE越接近零,则您对ab的拟合就越好,并且TotalRank公式就越能满足您的期望。

有了这种度量,您可以手动调整ab的值,并确保您的TotalRank公式满足您的期望等级:您刚刚看到,MSE正在越来越接近零。但这是一项非常常规的工作,因此您可以使用...

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

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

此外,我建议您看一看斯坦福的Introduction to Information Retrieval书。它解释了很多这样的问题。

P.S .:对不起,我的英语不好,祝你好运! :)