以下内容学习、摘录自《数学之美》
使用搜索引擎时,大家都希望得到有用而具有权威性的信息,而不是那些仅从字面上看相关的网页。遗憾的是,任何搜索引擎给出的结果都不完美,多少都会有点噪音。有些噪音是人为造成的,其中最主要的噪音是针对搜索引擎网页排名的作弊(SPAM);另一些噪音则是用户在互联网上的活动产生的,比如用户和不严肃的编辑创作的大量不准确的信息。虽然这些噪音无法百分百地避免,但是任何好的搜索引擎都应该尽可能地清除这些噪音,给用户提供相关而准确的搜索结果。
搜索引擎反作弊
针对搜索引擎的作弊,虽然方法很多,目的只有一个,就是采用不正当手段提高自己网页的排名。
早期最常见的作弊方法是重复关键词。比如一个卖数码相机的网站,重复罗列各种数码相机的品牌,如尼康、佳能等等。
有了网页排名( Pagerank)以后,作弊者发现一个网页被引用的链接越多,排名就可能越靠前,于是就有了专门买卖链接的生意。比如,有人自己创建成百上千个网站,这些网站上没有实质的内容,只有链到其客户网站的链接。这种做法比重复关键词要高明得多,因为他们自己隐藏在背后,而他们那些客户的网页本身内容上没有什么问题,因此不容易被发现。
做事情的方法有道和术两种境界,搜索反作弊也是如此。在“术”这个层面的方法大多是看到作弊的例子,分析并清除之,这种方法能解决问题,而且不需要太动脑筋,但是工作量较大,难以从个别现象上升到普遍规律。很多崇尚“人工”的搜索引擎公司喜欢这样的方法。而在“道”这个层面解决反作弊问题,就要透过具体的作弊例子,找到作弊的动机和本质。进而从本质上解决问题。
我们发现,通信模型对于搜索反作弊依然适用。在通信中解决噪音干扰问题的基本思路有两条:1.从信息源出发,加强通信(编码)自身的抗干扰能力。2.从传输来看,过滤掉噪音,还原信息。
从动机上讲,作弊者无非是想让自己的网站排名靠前,进而获得商业利益。而帮助别人作弊的人(他们自称是搜索引擎优化者, Search EngineOptimizer,SEO)也是要从中牟利的。掌握了动机就可以针对他们的动机进行防范。那些卖链接的网站,都有大量的出链( Out Links),而这些出链的特点与不作弊的网站的出链相比,特点大不相同(可能他们自己不觉得)。每一个网站到其他网站的出链数目可以作为一个向量,它是这个网站固有的特征。既然是向量,我们就可以计算余弦距离。(余弦定理又派上了用场!)我们发现有些网站的出链向量之间的余弦距离几乎为1,一般来讲,这些网站通常是一个人建的,目的只有一个:卖链接。发现这个规律后,我们改进了Page Rank算法,使得购买的链接基本上不起作用。
反作弊用到的另一个工具是图论。在图中,如果有几个节点两两互相都连接在一起,它们被称为一个 Clique。作弊的网站一般需要互相链接,以提高自己的排名。这样,在互联网这张大图中就形成了一些 Clique图论中有专门的发现 Clique的方法,可以直接应用到反作弊中。这里我们再次看到数学的作用。
最后还要强调几点,第一, Google反作弊和恢复网站原有排名的过程完全是自动的(并没有个人的好恶),就如同手机消除噪音是自动的一样。一个网站要想长期排名靠前,就需要把内容做好,同时要跟那些作弊网站划清界限。第二,大部分搜索引擎优化器和帮助别人作弊的人,只针对占市场份额最大的搜索引擎算法来作弊,因为作弊也是有成本的,针对只有市场份额不到5%的引擎作弊,在经济上实在不划算。因此,一个小的搜索引擎作弊少,未必是反作弊技术好,而是到它那里作弊的人太少。
网页搜索反作弊对搜索引擎公司来讲是一项长期的任务。作弊的本质是在网页排名信号中加入了噪音,因此反作弊的关键是去噪音。沿着这个思路可以从根本上提高搜索算法抗作弊的能力,事半功倍。而如果只是根据作弊的具体特征头痛医头,脚痛医脚,则很容易被作弊者牵着鼻子走。
搜索结果的权威性
用户使用搜索引擎一般有两个目的,其一是导航,即通过搜索引擎找到想要访问的网站,这个问题今天已经解决得很好了;其二是查找信息。今天的搜索引擎对几乎所有的查询都能给出非常多的信息,但问题是这些信息是否完全可信,尤其是当用户问的是一些需要专业人士认真作答的问题,比如医疗方面的问题。随着互联网的规模越来越大,各种不准确的信息也在不断增加,那么如何才能从众多信息源中找到最权威的信息,就成了近年来搜索引擎公司面对的难题。
首先需要指出的是,Pagerank和其他关于网页质量的度量方式都很难衡量搜索结果的权威性。比如有很多媒体,它们的主要目的是娱乐大众,而不是提供准确的信息,这些媒体虽然文章常常写得好看,名气也大, Pagerank也很高,但由于它们的目的是为了八卦娱乐(比如美国著名的《人物》周刊所属的 people.COm网站,或者中国的天涯论坛),因此它们的内容未必权威。
权威度与一般的网页质量(比如 Page Rank)不同,它和要搜索的主题是相关的。比如上面提到的世界卫生组织、梅奥诊所、美国癌症协会对于医学方面的论述具有相当的权威性,但是在金融领域,这些网站则未必如此。相反,CNN在医学方面未必有权威性,但是在民意看法、政治观点和新闻综述等方面则可能比较权威。权威性的这个特点,即与搜索关键词的相关性,使得它的存储量非常大,比如我们]有M个网页,N个搜索关键词,那么我们要计算和存储O(M*N)个结果。而计算一般的网页质量则容易得多,只要计算和存储M个结果即可。因此,只有在今天有了云计算和大数据技术的情况下,计算权威性才成为可能。
计算权威度的步骤可以概括如下:
1.对每一个网页正文(包括标题)中的每一句话进行句法分析(关于句法分析的方法我们后面会有详细介绍),然后找出涉及到主题的短语,以及对信息源的描述。这样我们就获得了所谓的“提及”信息。
2.利用互信息,找到主题短语和信息源的相关性,这个方法我们在前面已经提到。
3.需要对主题短语进行聚合,虽然很多短语从字面上看不同,但是意思是相同的,比如“吸烟的危害”、“吸烟是否致癌”、“香烟的危害”、“煤焦油的危害”,等等,因此需要将这些短语聚类到一起。对这些短语进行聚类之后,我们就得到了一些搜索的主题。至于聚类的方法,可以采用我们前面提到的矩阵运算的方法。
4.最后,我们需要对一个网站中的网页进行聚合,比如把一个网站下面的网页按照子域( Subdomain)或者子目录( Subdirectory)进行聚类。为什么要做这一步呢?因为即使是一个权威的网站,它下面的一些子域却未必具有权威性。
完成了上述四步工作后,我们就可以得到一个针对不同主题,哪些信息源(网站)具有权威性的关联矩阵。当然,在计算这个关联矩阵时,也可以像计算 Page Rank那样,对权威度高的网站给出“提及”关系更高的权重,并且通过迭代算法,得到收敛后的权威度关联矩阵。有了权威度的关联矩阵,便可在搜索结果中提升那些来自于权威信息源的结果,使得用户对搜索结果更加放心。在计算权威度时,我们采用了本书中另外三章的方法,包括句法分析、互信息和短语(词组)的聚类,而它们的背后都是数学。因此可以说,对搜索结果权威性的度量,完全是建立在各种数学模型基础之上的。