未来的搜索如何弥补PageRank未了的缺憾?当搜索从页面级晋升为区块级,无疑将带来一场效率的革命。
文/李洋
一个网页就犹如一头牛。它有头、有尾,可以划分为不同的信息区域。当你浏览一个页面时,往往会将目光锁定在最重要的区域中,而不是先浏览导航、广告、版权信息等信息块。沿着这个思路,就可以进一步提升搜索的精准度。 区块级搜索 在上世纪90年代中期,Google的创始人拉里·佩奇(LarryPage)发明了一种新的网页排名算法。简而言之,这一算法的核心便是“链接”:当越多的页面指向一个页面时,后者的重要性就越强;该重要性还取决于指向此页面的源页面的重要程度。这个后来以佩奇的姓氏命名的算法PageRank,为Google打下江山起到了决定性的作用。但是,随着互联网的发展,这一算法的缺点也不断体现。由于它是基于页面级的搜索,因此无法判断一条链接在一个页面中的权重。比如,一条由页面中的重要内容引出的链接,与一条由广告内容引出的链接,其重要性应该是有很大差别的。而PageRank对此种情况是等同对待的。 也就是说,如果我们能够将页面分块,并标识出每块的重要程度,便使得页面级搜索上升到了区块级搜索的高度,那么搜索的准确性和精度也必然会随之提高。 目前,微软亚洲研究院的文继荣研究员找到了这把庖丁之刃。据文研究员称,新技术将比现行的PageRank算法下实现的搜索精度提高25%。当然,目前这一惊人的结论是在实验室内产生的,实际数据还有待进一步应用及测试。 其实,在计算机学术界,很早就有人想到了给页面分块的做法。他们主要是对HTML的语法进行分析,试图从代码解析的角度解构一个网页。但这显然是行不通的,因为HTML中的语法标签并无任何语义作用,其代码往往十分杂乱,且与不同的设计者有关。 网页是多样化和异构的,但人类却可以一眼便将一个网页划分为几块。于是,文继荣和他的两个学生蔡登和俞诗鹏,想到了以视觉的角度来分割整个页面。在浏览器显示出一个页面之前,要用内部的渲染引擎对其进行加工,并获取某个标签的坐标位置、字体大小、颜色等信息。文的算法在应用了这些视觉信息元素后,就可以决定在什么地方来做分块,对网页进行自动地分割。 但仅仅分割显然是不够的,还要得知一个区块的重要程度。微软的研究员们采用了机器学习的方法来建立一个模型。首先通过人为的训练,“告诉”计算机哪里是一个页面中最重要的部分,而这些通常是有迹可寻的,比如在页面中的位置、大的图片、粗字体等等。经过大量的训练之后,计算机便形成了一个公式,可以将页面自动划分为红绿蓝三个级别的区块(重要性依次减弱)。精准度大致在86%左右,基本和人的水平相当。也就是说,如果一个页面设计得十分糟糕,既杂乱又分不清主次,那么无论是人或机器,都无法对区块的重要性做出判断。 速度提升 这项技术的诞生对于搜索而言是一个根本性的改变。它除了在链接分析上,能够弥补GooglePageRank算法的缺憾外,还能够在图片搜索等领域获得有效应用。在此之前,图片搜索在页面中抓取一个图片后,还要在页面中寻找解释这一图片的上下文说明。而有了这个技术则可以大大提升效率,可以直接在该图片出现的块里取说明文字,并且根据图片来自的块重要性,来决定这个图片的重要性。此外,在做类似的信息抽取的时候,都可以用到这项技术。 从2001年起,文继荣带着两个学生总花费了两年多的时间研究出了这项技术。实际上,在最初的想法确定后,他们在几个月内就写出了算法。但这一算法在实际测试时经常会“跑不通”。“你都想象不到,有的网页内部的代码嵌套居然多达百层。”文继荣笑着说,“但这就是互联网上的实际情况。不管一个网页写得有多烂,我们的算法也要照顾到。”在接下来的时间里,他们在百万级页面级别对该算法进行了测试、完善。最终,当微软在国际学术会议上发布这一技术时,引发了不小的轰动。 但当它走近实际应用时,又产生了新的问题——速度太慢。通常浏览器要渲染一个网页需要几百毫秒。这时间看似很短,但当你要同时处理的页面是几十亿、上百亿时,这个速度就变得无法容忍了。为配合微软总部将该技术应用在其搜索引擎中,产品部门提出了将时间缩短至数毫秒以内的要求。这不得不说是一项挑战。压力之下,微软的研发人员想到了一个解决办法:抛开IE浏览器的渲染引擎,自己编写一个相对简单而精炼的渲染引擎。因为这项技术中,仅需要通过渲染引擎获得其输出的数据结构,比如长度宽度、坐标等,而并不需要考虑最终的页面渲染效果,而对JavaScript等脚本也一概过滤。通过这一方式,每个页面的平均处理时间被成功地缩短至2毫秒以内。 还有什么是不能实现的吗?只要你想得到。