作者:陈朝晖 雅虎美国工程师
搜索引擎索引的等概率随机采样:Ziv Bar-Yossef 等人的方法介绍
对于搜索引擎等概率随机采样的研究已经有了相当长的历史,具体的背景文献我们不准备在这里一一探讨。我们希望通过对Bar-Yossef等人最近工作的介绍,把一种比较客观、科学的测试方法推介给读者。我们也会探讨他们的方法对于中文索引的局限性和一些解决方案。

图3,一个简化的搜索引擎索引
图3给出了一个简化了的搜索引擎索引示例,假定关键字“news”将返回4个结果:www.cnn.com、news.google.com、www.foxnews.com和news.bbc.co.uk。
首先我们给出一组定义
当我们通过搜索框对搜索引擎的索引进行采样,所获得的结果实际上偏向于匹配度高的文档。对于图3所示的搜索引擎,如果我们从搜索关键字池P = {news, bbc, maps, google}中任意选取一个关键字,然后在所得搜索结果中任意选取一个文档,那么选到某一个具体文档的概率与它的匹配度成正比,例如,p(news.bbc.co.uk) = 2/13 ,p(www.cnn.com) = 1/13
因此,通过关键字对搜索引擎的索引进行采样,实际上是对文档匹配度概率分布在作随机抽样。具体地说,如果相对于一个给定的搜索关键字池P,该索引的全部文档匹配度的总和为deg(D) = ∑x∈D deg(x),那么通过搜索框对引擎采样获取具体一个文档x的概率是deg(x)/ deg(D)。
如何通过对文档匹配度分布的随机抽样而获得我们所期望的等概率随机采样呢?这正是Bar-Yossef 等人工作的主要成果所在:他们采用蒙特卡罗仿真(Monte Carlo Simulation)算法实现了这一点
采样过程,参见图4

图4,通过蒙特卡罗仿真(Monte Carlo Simulation)算法实现对索引的等概率随机采样
问题和讨论
上述算法在数学上非常严谨优美,但是在具体的实现过程中仍然有相当多的困难,尤其是对于中文搜索引擎,有一些特殊的问题需要探讨。
P选择的条件是(1)要保证p(x) = 0,即索引中文档不匹配任何一个关键字q ∈ P的概率足够小。如果这个概率太高,测试只能局限于索引的一小部分,测试的结果就失去了意义。(2)关键字搜索结果量card(q)最好要比较小,这样可以尽可能地避免搜索结果超过搜索引擎允许返回结果的上限。作者提出的方案是通过抓取和分析一个大型的网上文库,例如维基百科全书,选择其中所有的英文单词的集合或者所有K个相连单词的集合作为P。这对于没有分词问题的英文而言是容易实现的,但对于汉语等需要分词的语种,这个方法似乎并不很合适。我们建议直接采用GBK字库中的全部字符,或者采用中文分词标准中所有词汇的集合。
文档匹配度deg(x)必须离线计算,通过查询获得是不现实的。对英文文档来说,只要计算文档中覆盖了多少个关键字q ∈P。但是对中文而言,不同引擎包含了不同的搜索逻辑,例如四个汉字以下的搜索通常采取词组搜索,长搜索词有些引擎可能采取与或逻辑。不同引擎对于汉语分词的处理也有较大的差异。在索引文档时,有些引擎可能考虑了繁简汉字的转换。所有这些都会对匹配度产生一定程度的影响。
实际上,匹配度deg(x)的计算并不一定要十分精确,一些近似处理是可以接受的,只要误差不至于太大。我们建议用GBK字库的单个汉字集合作为P,这样可以避免分词的差异。而此时文档的匹配度就是一个文档包含不同GBK字符的个数。
这一点Bar-Yossef 等人的文章中有比较详细的讨论,他们认为这个限制对于测试结果的影响并不太大。
从计算量上考虑,由于deg(x)一般都比较大,因此搜索结果文档被放弃的比例较高,如何进一步改进算法的复杂度是一个值得探讨的问题。
参考文献
* Ziv Bar-Yossef and Maxim Gurevich, Random Sampling from a Search Engine's Index (PDF文件和PPT文件)
雅虎搜索日志,顾名思义,应该和搜索有关.
普及知识不应该是日志所为.
何不结合yahoo自身来谈谈实际的问题呢?
否则这个日志的存在价值我觉得花哨成分多.
发布者:imjl - 2007年04月05日 21:27而且文章提及的内容完全是来自一份ppt!
可以搜索如下的标题
Random Sampling from a Search Engine‘s Index
巨寒!
从关键词入口的搜索结果精度问题很容易到达瓶颈吧?
不错.看懂一点了
发布者:meteor - 2007年02月16日 9:28能否介绍一下搜索引擎的技巧?
发布者:ww - 2007年01月09日 18:26能否介绍一下如何使用IBM OmniFind Yahoo! Edition(Version 8.4)进行搜索开发
发布者:wyp - 2007年01月02日 9:19具体应用起来肯定很有难度
发布者:Samd - 2006年12月19日 17:26文中提到"用GBK字库的单个汉字集合作为P,这样可以避免分词的差异。而此时文档的匹配度就是一个文档包含不同GBK字符的个数"这句话完全正确,但如果以单个汉字集合作为P,这样关键字和查询返回文档间的关联性会很低,这样得到的等概率随机采样值得疑,毕竟中英文是会有差异的。文中也提到了这样做的原因是为了考虑各搜索引擎对分词处理的差异,但不应该是以过多牺牲相关性为代价。如果两者均能兼顾,或至少取得一个折中,效果应该会更好。
发布者:lxx - 2006年12月19日 10:47