如何评估搜索引擎?

时间:2009-10-01 14:01:32

标签: seo search-engine pagerank

我是一名学生,正在进行一项研究,以增强搜索引擎的现有算法。

我想知道如何评估搜索引擎 - 我已经改进了 - 来量化算法的改进程度。

我应该如何比较旧算法和新算法?

由于

10 个答案:

答案 0 :(得分:11)

这通常是通过创建问题测试套件然后评估搜索响应如何回答这些问题来完成的。在某些情况下,回复应该是明确的(如果您在搜索引擎中输入slashdot,您希望获得slashdot.org作为最高匹配),那么您可以将这些视为一类硬查询纠正'答案。

大多数其他查询本质上都是主观的。为了最大限度地减少偏见,您应该让多个用户尝试使用您的搜索引擎并对结果进行评级以与原始对象进这是一个类似的计算机科学论文的例子:

http://www.cs.uic.edu/~liub/searchEval/SearchEngineEvaluation.htm

关于算法的具体比较,虽然显而易见,但您测量的内容取决于您感兴趣的内容。例如,您可以比较计算效率,内存使用率,爬网开销或返回结果的时间。如果您尝试生成非常具体的行为,例如针对某些参数运行专家搜索(例如文献搜索),那么您需要明确地测试它。

相关性启发式算法也是一项有用的检查。例如,当某人使用可能与“编程相关”的搜索字词时,您是否倾向于从stackoverflow.com获得更多结果?如果你这样做,你的搜索结果会更好吗?如果您为特定网站或域提供一组信任权重(例如,将.edu.ac.uk域评为更值得信赖的技术结果),那么您需要测试这些权重的有效性。

答案 1 :(得分:10)

答案 2 :(得分:2)

为了评估某些东西,你必须定义你对它的期望。这将有助于定义如何衡量它 然后,您将能够衡量改进。

关于搜索引擎,我想你可能能够衡量其找到事物的能力,以及返回相关内容的准确性。

这是一个有趣的挑战。

答案 3 :(得分:2)

如果这是你的目标,我认为你不会找到最终的数学解决方案。为了对给定算法进行评级,您需要必须完成的标准和目标。

  • 您要比较的基线是什么?
  • 你把什么归类为“改进”?
  • 您认为“成功搜索”是什么意思?
  • 您的测试组有多大?
  • 你的考试是什么?

例如,如果您的目标是改进页面排名过程,那么请确定您是在判断算法的效率还是准确性。判断效率意味着您需要为代码提供一致的大型数据集并记录结果。然后,您将使用算法来改善时间。

如果您的目标是提高准确性,那么您需要定义什么是“不准确”。如果你搜索“杯子”,你只能说第一个提供的网站是“最好的”,如果你自己可以准确地定义什么是“杯子”的最佳答案。

我建议您缩小实验范围。定义一个或两个品质的搜索引擎,您觉得需要改进并努力改进它们。

答案 4 :(得分:2)

信息科学家通常使用精确度召回作为信息检索系统(如搜索引擎)的两种竞争质量指标。

因此,您可以衡量搜索引擎相对于Google的效果,例如,计算前10名中的相关结果数量(称之为精确度)以及您认为应该在该查询中的重要网页数量前十名但不是(召回召回)。

您仍然需要在一些查询集上手动比较每个搜索引擎的结果,但至少您将有一个指标来评估它们。这两者的平衡也很重要:否则,通过返回网页上的每一页,不会返回任何结果或完美的回忆,你可以轻松获得完美的精确度。

Wikipedia article on precision and recall相当不错(定义考虑到这两者的F-measure)。

答案 5 :(得分:1)

在评论中你说过“我已经听说过一种方法来衡量搜索引擎的质量,通过计算用户在找到他想要的链接之前需要点击一个后退按钮的时间,但我可以使用这个技术,因为你需要用户来测试你的搜索引擎,这是一个令人头疼的问题“。好吧,如果你把你的引擎免费放在网上几天,并做一点广告,你可能会至少尝试几十次。随机为这些用户提供旧版本或新版本,并衡量这些点击次数。

其他可能性:假设Google的定义是完美的,并将您的答案与某些查询进行比较。 (例如,如果您的第二个链接是谷歌的第12个链接,那就是10个距离,可能是您在Google上与其对应链接的前十个链接的距离总和)。这是一个很大的假设,但更容易实现。

答案 6 :(得分:0)

你必须清楚地确定积极和消极的品质,例如他们获得答案的速度有多快,或者他们在那里获得多少“错误”的答案。如果正确的答案是#5,但结果返回的速度要快20倍,这是一种改进吗?这样的事情对于每个应用程序都是不同的。在企业知识库搜索中,正确答案可能更为重要,但电话支持应用程序可能需要快速回答。

没有参数,没有任何测试可以说是一场胜利。

答案 7 :(得分:0)

接受搜索结果的质量最终是主观的这一事实。您应该有多种评分算法供您比较:旧评分算法,新评分算法和一些控制组(例如按URI长度或页面大小进行评分或某些类似故意破坏的概念)。现在选择一堆运行算法的查询,比如一百个左右。假设您最终得到4个算法。制作一个4x5表,显示每个算法的查询的前5个结果。 (你可以做前十,但前五个更重要。)一定要随机化每列中出现的算法。然后在这个东西面前抛出一个人,让他们选择他们最喜欢的4个结果集中的哪一个。在整个查询集中重复。尽可能多地重复人类。这应该根据每种算法的总胜数给出一个公平的比较。

答案 8 :(得分:0)

http://www.bingandgoogle.com/

创建一个这样的应用程序,用于比较和提取数据。然后使用您需要查找的50种不同的东西进行测试,然后与您想要的结果进行比较。

答案 9 :(得分:0)

我必须专业地测试搜索引擎。这就是我所做的。

搜索包括模糊逻辑。用户将键入网页“Kari Trigger”,搜索引擎将检索“Gary Trager”,“Trager,C”,“Corey Trager”等条目,每个条目的得分均为0-> 100,所以我可以将它们排在最可能的最不可能的位置。

首先,我重新设计了代码,以便可以使用搜索查询的大文件作为输入以批处理模式从网页中删除它。对于输入文件中的每一行,批处理模式将写出顶部搜索结果及其分数。我从生产系统中收集了数以千计的实际搜索查询,并通过批量设置运行它们以建立基线。

从那时起,每次我修改搜索逻辑时,我都会再次运行批处理,然后将新结果与基线区分开来。我还编写了工具,以便更容易地看到差异的有趣部分。例如,我并不在乎旧逻辑是否将“Corey Trager”作为82返回,而新逻辑将其作为83返回,因此我的工具会过滤掉它们。

通过手工制作测试用例,我无法做到这一点。我只是没有想象力和洞察力来创造良好的测试数据。现实世界的数据非常丰富。

所以,回顾一下:

1)创建一种机制,让您可以区分运行新逻辑的结果与先前逻辑的结果。 2)用大量实际数据进行测试 3)创建可帮助您处理差异的工具,滤除噪声,增强信号。

相关问题