信息检索:是关于信息的结构、分析、组织、存储、搜索和检索的领域。
检索对象:信息检索主要针对文档(网页、电子邮件、论文、图书、新闻等),如今也视图处理各种多媒体信息。
文档检索与数据库查询的区别:数据库有良好结构(记录、属性);而文档大部分信息是文本,文本是无结构的,不过文档具有一定的结构(标题,章节,摘要等),信息检索会充分利用到这些信息。
泛指“信息检索系统”,描述用来比较查询和文档并生成文档排序结果的软件系统。
基本类型:
除了上面提到的信息检索中的三大关键问题,还有:
架构:提供对系统中重要组件及组件之间的关系的高层次描述。
软件架构:一组软件组件;组件提供的接口;各组件之间的联系
两种核心功能:索引处理、查询处理。
查询处理组件集:
搜索引擎工作基础:应当很好地存储文档集合中的信息。
搜索引擎的本质目标:回答“我们想要搜索什么”,提供一切我们所能搜索的信息
文档信息的更新:搜索引擎应尽可能多地含有近期的信息
信息采集的任务:想方设法找到要检索的文档集合,不论这些文档在哪里,甚至无论文档是什么格式
网页的备份:将网页抓取到本地,便于对数据的分析处理,便于提高显示效率和效果
网络爬虫:从互联网下载网页的程序
网页爬取时存在的问题:互联网规模庞大;如何高效爬取网页和保持信息更新;是否允许爬取(可能需填写表单);如何礼貌爬取
统一资源定位器(URL):协议方案+主机名+资源名
首先客户端程序连接到一个域名服务器(DNS),将主机名转换为IP地址。
然后客户端程序连接到该IP地址服务器。
连接成功时客户端发送一个HTTP请求(GET请求)来获得网页。
网络爬虫基本任务:下载页面 + 发现新的URL
爬虫的基本工作原理:
并行爬取技术:由于大量爬取时间花费在等待(等待DNS响应、网站连接确认、网站发送网页等),为提升效率,网络爬虫常采用多个线程,一次抓取几百个网页。
礼貌策略:避免影响源网站正常工作,如规定一次抓取多少页面,规定两次抓取时间间隔。
当备份网页不能够再反映真实网页时,就应当更新。
HTTP协议提供了HEAD请求,仅返回页面头部信息(含最后修改时间)而非页面内容,可用于检查页面是否发生变化
办法之一:定期评估各页面变化频率。
对于页面的时新性,页面年龄是较好的度量方法。
假设一个页面的变化频率是 λ \lambda λ(在1天/1周内变化 λ \lambda λ次),则一个页面从上一次采集起, t t t天后的年龄期望值为: A g e ( λ , t ) = ∫ 0 t P ( 在 时 间 为 x 时 页 面 发 生 变 化 ) ( t − x ) d x {\rm Age}(\lambda, t) = \int_0^t{P(在时间为x时页面发生变化)(t-x) {\rm d} x} Age(λ,t)=∫0tP(在时间为x时页面发生变化)(t−x)dx。
研究表明:页面更新一般遵循泊松分布,故有:
A g e ( λ , t ) = ∫ 0 t λ e − λ x ( t − x ) d x {\rm Age}(\lambda, t) = \int_0^t{\lambda e^{-\lambda x}(t-x) {\rm d} x} Age(λ,t)=∫0tλe−λx(t−x)dx
垂直搜索引擎:面向特殊类(专业)用户,索引 .仅收集面向某一主题/话题的页面
深层网络:那些网络爬虫难以找到的站点或网站内容统称为深层网络。
至少包含三类:
网站地图:是一个包含了某网站信息描述(如信息修改时间和更新频率)的格式化XML文件,一般由网站管理员提供(robots.txt)
用途:
对互联网上大量信息采集,常采用多台计算机并行执行。
假设一个爬虫程序有一个传输率为1MB/s的网络连接。网页的平均大小为20K,那么爬虫程序每秒钟可以备份50个页面。如果被采集信息的网站和爬虫程序所在的计算机距离很近,那么数据传输率可能会达到1MB/s。然而,网站开始传输数据需要80ms的时间,因为在打开连结和发送请求之间有传输延迟。假设每次请求需要100ms的时间(80ms的延迟时间,20ms的数据传输时间)。用50乘以100ms,可以看到,在传输50个页面时需要5秒钟的时间,其中包括延迟等待时间。这也意味着,在一秒钟内传输50个页面需要使用5个连接。
文档采集中的问题:
文档信息源:比如出版物(书、文章、新闻、博客)某一时间创建后不再更新。来自同一个源头的出版物可在一个文档源的序列中得到,网络爬虫通过检查该(固定)信息源就可发现所有新文档。
文档信息源类型:
文件格式转换:将文档中的内容转换成一种统一的标签格式,如HTML,XML。
基本目的:为了对文档进行索引,一般需存储转换为统一格式后的文档。(桌面搜索不需要存储)
主要用途:
文档存储系统的基本要求:
完全重复检测:检验和技术
近似重复检测方法:基于词(及权重)表达文档,并计算相似性;基于指纹(选择出的文档中的一些n-gram)表达文档,并计算相似性
文档噪声:网页中含有的与主要内容无关的文本、链接、图片等。
去噪声理由:搜索引擎基于词统计;无关文本干扰页面内容表示;无关文本、链接、图片等大量增加处理和空间消耗。
文本处理:爬虫获得文本后,需决定是否修改或重构这些文本,以简化搜索。
处理目的:将词语可能出现的多种形式转化为更加一致的索引项。
处理事项:
齐普夫法则:
一个词在词频统计表中的排名 r r r 乘以它的词频 f f f 约等于一个常数 k k k: r ⋅ f = k r \cdot f = k r⋅f=k
而因为一个词出现的概率 P r P_r Pr 等于这个词的出现次数 f f f 除以所有词在文本中出现次数 T T T 的总和,因此该法则可表示为: r ⋅ P r = c r \cdot P_r = c r⋅Pr=c,其中 c c c 是一个常数,对于英语来说约等于0.1。
该法则对排名靠后的低频词不一定准确。
Heaps法则:
语料规模 v v v 与词表大小 n n n 的关系为: v = k ⋅ n β v = k \cdot n^\beta v=k⋅nβ
Heaps法则能预测词表大小随语料规模的变化情况:语料规模小时新词增长很快,语料规模变大时增长速度变慢。
在用户输入查询后,搜索引擎一般会对结果集(包含所有查询词的文档)数量进行估计。
假设词在文档中出现的概率彼此独立。若查询包含3个词a,b,c,它们在文档中的出现频率分别为 P ( a ) , P ( b ) , P ( c ) P(a), P(b), P(c) P(a),P(b),P(c),文档集的规模数为 N N N,则查询结果集大小: f a b c = N ⋅ P ( a ) ⋅ P ( b ) ⋅ P ( c ) f_{abc} = N \cdot P(a) \cdot P(b) \cdot P(c) fabc=N⋅P(a)⋅P(b)⋅P(c)。
由于搜索引擎在建索引时易统计到出现过某个词的文档数目( f a , f b , f c f_a, f_b, f_c fa,fb,fc)和整个文档集的规模 N N N,而 P ( a ) = f a / N , P ( b ) = f b / N , P ( c ) = f c / N P(a) = f_a/N, P(b) = f_b/N, P(c) = f_c/N P(a)=fa/N,P(b)=fb/N,P(c)=fc/N。于是 f a b c = ( f a ⋅ f b ⋅ f c ) / N 3 − 1 f_{abc} = (f_a \cdot f_b \cdot f_c)/N^{3-1} fabc=(fa⋅fb⋅fc)/N3−1。
由于若a和b是相互独立出现的两个词,有: f a b N = f a N ⋅ f b N \frac{f_{ab}}{N} = \frac{f_a}{N} \cdot \frac{f_b}{N} Nfab=Nfa⋅Nfb,于是有: N = f a ⋅ f b f a b N = \frac{f_a \cdot f_b}{f_{ab}} N=fabfa⋅fb。只需尽量取到两个语义上无关联的词a和b并按此公式计算即可。
词素切分:从文档的字符序列中获取词的过程。
词干提取方法:
可用XML标记文档结构,或利用到HTML标记的网页结构。
锚文本的价值:
原理:基于随机游走。根据网页的入链数(指向该页)及每个网页的重要度来估算。
页面C的PageRank(某个随机浏览网页的用户浏览C的概率)值:PR( C ) = PR(A)/2 + PR(B)/1。
即每个页面的PR(点击概率)应平均分配给所有外向链接。
特点:网页PR值与具体的查询无关。搜索引擎优先选择PR值高的网页。
指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。
应用:
方法:
一些缩写的含义:
倒排索引主要由两个部分组成:单词词典和倒排文件。
单词词典:单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息及指向倒排列表的指针。
倒排列表:倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。
倒排文件:所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件即被称为倒排文件,倒排文件是存储倒排索引的物理文件。
完全在内存里完成索引的创建过程。
第一遍文档遍历:收集一些全局的统计信息,如文档集合包含的文档个数N,文档集合内所包含的不同单词个数M,每个单词在多少个文档中出现过的信息df。将所有单词对应的df值全部相加,就可以知道建立最终索引所需内存大小是多少。于是在内存中分配足够大的空间,用来存储倒排索引内容。
第二遍文档遍历:开始真正建立每个单词的倒排列表信息,即对于某个单词来说,获得包含这个单词的每个文档的文档ID,以及这个单词在文档中的出现次数tf,这样就可以不断填充第一遍扫描所分配的内存空间。当第二遍扫描结束的时候,分配的内存空间正好被填充满,而每个单词用指针所指向的内存区域“片段”,其起始位置和结束位置之间的数据就是这个单词对应的倒排列表。
经过两遍扫描完成索引建立后,即可将内存的倒排列表和词典信息写入磁盘,这样就完成了建立索引的过程。
缺点:如果文档集合太大时,内存未必能够满足需求;要对文档集合进行两遍遍历,速度不占优势。
始终在内存中分配固定大小的空间,存放词典信息和索引中间结果,当分配的内存空间被消耗殆尽时,在内存中对索引信息三元组(单词ID,文档ID,单词频率)进行排序,将排序好的索引信息写入磁盘,词典不写入, 词典始终在内存中,新产生一个对应的中间文件,最后对所有中间文件进行合并,形成最终的索引。
优点:无论要建索引的文档集合有多大,都可以通过这种方法完成。
缺点:词典信息一直在内存中进行维护,随着处理文档越来越多,词典里包含的词典项越来越多,所以占用内存越来越大,导致后期中间结果可用内存越来越少。
对排序法做出了改进,整体流程和排序法大致相同,即每次将内存中数据写入磁盘时,包括词典在内的所有中间结果信息都被写入磁盘(在写入磁盘文件时,将词典项放在列表最前端,之后跟随相应的倒排列表),这样内存所有内容都可以被清空,后续建立索引可以使用全部的定额内存。
“归并法”的临时文件是每个单词对应的部分倒排列表,所以在合并时针对每个单词的倒排列表进行合并,形成这个单词的最终倒排列表。另外,“归并法”在最后的合并过程中形成最终的词典信息。
将新增文档和老文档一起重新构建新的索引,再删除老索引
加入新文档后,在内存当中构建增量索引,最后再将增量索引与磁盘中的老索引合并形成新的索引。
在初始建立老索引时,在每个倒排项末尾预留空余磁盘空间。有了新增文档之后,在内存中构建出增量索引,再直接把增量索引中每个倒排项的内容直接追加到内存中的老索引的对应倒排项末尾。
能够结合不同索引更新策略的长处,将不同的索引更新策略混合,以形成更高效的方法。
一般会将单词根据其不同性质进行分类,不同类别的单词,对其索引采取不同的索引更新策略。常见的做法是:根据单词的倒排列表长度进行区分,因为有些单词经常在不同文档中出现,所以其对应的倒排列表较长,而有些单词很少见,则其倒排列表就较短。长倒排列表单词采取原地更新策略,而短倒排列表单词则采取再合并策略。
两种查询处理方法:
对于查询处理,有2类优化技术:
每篇返回给用户的文档,需要包含所有查询项。当有一个查询项较为罕见时,联合处理可以做得很好(如对于查询“fish locomotion”,单词“fish”的频率是“locomotion”的1000倍,既然对只包含2个词的文档感兴趣,系统能跳过“fish”倒排表中的大部分,以便找到同时包含“locomotion”的文档的posting)
对于短查询,能同时提高效率和效果;对于长查询如整个段落,不是一个好的选项。
使用前k个排序文档优化查询处理。对于每个查询,都有某一最小分数(阈值 τ \tau τ)是每个被检索出的文档都需要达到的,该最小分数是第k个最高得分文档的分数,任何没有达到此分数的文档不会显示给用户。
基于文档质量对倒排表中的文档排序,如pagerank,或者根据部分分数对文档排序。
基本过程:将所有查询发给一台目录计算机;目录计算机将消息发给多台索引服务器;它们各自做查询处理的一部分任务;然后目录机组织结果,并将结果发给用户。
2个主要方法:文档分布式;词项分布式
每台索引服务器的行为类似于整个文档集一小部分数据的搜索引擎。目录机发送查询的拷贝给每台索引服务器,每台机器返回前k个结果以及每个结果的分数。这些结果由目录机合并为一个相关排序表,然后返回给用户。
较为常用,很容易支持新增的文档,负载均衡性好(常见词与罕见词汇均匀分布在不同的索引服务器上),容错性好(如果某台索引服务器故障,只影响到部分文档子集合,对于用户来说并不会直接感受到这种故障的影响),同时支持两种不同的查询处理方式。
索引中的每个倒排表被分给一个索引服务器。大部分情况下,所要处理的查询数据不会存储在一台机器,那么被选中处理查询的服务器通常是倒排表最长的那台索引服务器,如果其他索引服务器上有相关的数据,则通过网络传送给他们来处理查询。查询处理完成后,结果发给目录机。
可扩展性不足:如果有新增文档,对几乎所有的索引服务器都有直接影响。负载均衡性差(常见词倒排列表庞大,罕见词倒排列表很少),容错性差(如果某台索引服务器故障,则某些单词的倒排列表无法访问,直接影响用户体验),只能支持“一次一词项”查询处理方式。
文本查询最初的处理过程,应该对应于文档的处理步骤。查询文本中的词,应转换为文本处理时产生的同样词项。
对于在拼写词典中没有的词,就建议用户更正它们。
方法:将没有的词与词典中词进行相似比较,以便提出更正建议。
词相似度的衡量标准:编辑距离。
搜索引擎将用户的初始查询用一个或多个词去扩展,或替换查询中的一些词,并将修改后的查询建议提交给用户,可帮助改善检索效果。
基本思路:
关键技术:衡量词项的相关性。基本方法如戴斯系数(Dice) ,互信息(MIM),期望互信息(EMIM),皮尔森检验法(x²)。
还可以基于搜索结果或查询日志扩展。
相关反馈也是一种查询扩展方法。它通过与用户的交互过程,让用户指出哪些是感兴趣的,哪些是不感兴趣的,根据这些信息,通过增加词项或对原始词项重新分配权重,自动地改写查询,并自动生成新的文档排序,识别出在用户初始查询的排序文档中的相关文档,实现对查询结果的改善。
伪相关反馈,也采用同样思想。所不同的是,不是让用户自己去识别相关文档,而是系统将排序靠前的文档假设是相关的。这些文档中频繁出现的词,用来扩展初始查询。扩展质量则由靠前的文档有多少是实际相关的而决定的。
个性化搜索:不同用户输入同一查询,返回不同结果;甚至同一用户在不同时间输入同一查询,返回不同结果。
改善搜索质量的有效上下文是:查询日志和搜索会话历史,使用地理上下文信息的本地搜索也对部分查询产生实质性的改善。
结果显示页面:大部分搜索引擎的结果页面,仍采用排序的文档摘要列表。文档摘要有实际页面链接,并包括标题、URL、快照链接以及页面摘要等。
页面摘要的生成:是自动文摘的一个应用例子。自动文摘技术大致可分为查询无关文摘和查询相关文摘。搜索结果页面是查询相关文摘。
传统做法一般是将搜索结果按照排序显示给用户,而搜索结果常包括与查询主题相关的不同方面。对于特定用户,可能仅关心其中一类,对排序显示可能失望。
解决途径:对检索结果聚类,将检索结果文档集按照内容相似性聚成一些类(文档组),将这些类别显示给用户,便于用户快速定位到感兴趣的文档类。然后每个文档类再按照文档与查询的相关性排序显示。
信息检索模型的组成:
信息检索模型四元组: [ D , Q , F , R ( q i , d j ) ] [D, Q, F, R(q_i, d_j)] [D,Q,F,R(qi,dj)]
包括:布尔模型、向量空间模型、经典概率模型。
基本规则:每个索引词在一篇文档中只有两种状态:出现或不出现,对应权值为0或1。
布尔检索又称精确匹配检索。
优点:简单易于理解;能处理结构化查询;速度快
缺点:无权重设计;僵化,不支持部分匹配(“与”意味着全部,“或”意味着任何一个);很难对输出排序;很难控制被检索的文档数量
模型原理:文档D和查询Q均被看成是由标引词构成的向量,检索过程就是计算文档向量与查询向量之间的相似度。可以根据相似度值的不同对检索结果进行排序,可以根据检索结果进一步做相关检索。
优点:可对查询向量中关键词赋予权重;可根据相似度大小对查询结果进行排序并控制输出数量;采用“部分匹配”
缺点:在模型中,特征项被假设为相互独立,而实际上一个文档中的特征项之间可能存着一定的联系;不能像布尔模型一样支持布尔结构化查询;较布尔模型要复杂得多
一个在n当前文档中频繁出现,但是在剩余的其它文档中很少出现的词项获得较高的权重。
tf·idf加权方法:
t f i k = f i k tf_{ik} = f_{ik} tfik=fik,其中 f i k f_{ik} fik是词项 k k k在文档中的出现次数。但为减小高频词项的影响,通过对词项次数取对数,会比直接使用原始数值更加有效: t f i k = log ( f i k ) + 1 tf_{ik} = \log{(f_{ik})}+1 tfik=log(fik)+1(词项频率加1是为了保证频率为1的词项具有非零权值)
tf·idf:词频和反文档频率的乘积。
d i k = t f i k ⋅ i d f k = ( log ( f i k ) + 1 ) ⋅ log N n k d_{ik} = tf_{ik} \cdot idf_k = (\log{(f_{ik})}+1) \cdot \log{\frac{N}{n_k}} dik=tfik⋅idfk=(log(fik)+1)⋅lognkN
在归一化后:
d i k = ( log ( f i k ) + 1 ) ⋅ log N n k ∑ k = 1 t [ ( log ( f i k ) + 1.0 ) ⋅ log N n k ] 2 d_{ik} = \frac{(\log{(f_{ik})}+1) \cdot \log{\frac{N}{n_k}}}{\sqrt{\sum_{k=1}^{t}{[(\log{(f_{ik})}+1.0) \cdot \log{\frac{N}{n_k}}]^2}}} dik=∑k=1t[(log(fik)+1.0)⋅lognkN]2(log(fik)+1)⋅lognkN
归一化原因:在冗长的文本中,词项的频率会比短文本大,为了抵消这种影响,即采用归一化。
几种确定查询式中词项权重的方式
概率排序原则:如果一个参考检索排序系统对每个查询的反馈都是数据集中所有文档根据和用户查询的相关性概率值降序排序的结果,并且其中的概率值都被尽可能精确地估计出来,那么该系统对于用户的整体效果就是基于这些数据能够获得的最好结果。
优点:文档可以按照它们相关概率递减的顺序来排序。
缺点:开始时需要猜想把文档分为相关和不相关的两个集合,一般来说很难;实际上这种模型没有考虑索引术语在文档中的频率(因为所有的权重都是二值的);假设索引词独立
目前使用比向量模型更广泛。
(暂略一部分数学内容)
(暂略)
提出背景:自然语言文本中的词汇具有一词多义(基于精确匹配的检索算法会报告许多用户不要的东西)和一义多词(基于精确匹配的检索算法又会遗漏许多用户想要的东西)的特点。我们希望找到一种办法, 既能反映术语之间内在的相关性, 又具有较高的效率。
隐性语义索引可看做是隐性语义分析(LSA)在信息检索中的应用。LSA是一种通过分析大量的文本集,自动生成关键字-概念(语义)之间映射规则的方法。它假设词语在文本中的使用模式内存在着潜在的语义结构。同义词之间具有基本相同的语义结构,多义词的使用必定具有多种不同的语义结构,而词语之间的这种语义结构体现为它们在文本中的出现频率上也具有一定的联系,通过统计学方法,提取并量化这些潜在的语义结构,进而消除同义词、多义词的影响,提高文本表示的准确性。
召回率(recall):衡量搜索引擎找到所有相关文档的能力。
准确率(precision):衡量排除不相关文档的能力。
F值:召回率和准确率的调和平均数。
平均准确率(MAP):各次查询的准确率的均值。
文本分类的应用:垃圾邮件的判定、新闻出版按照栏目分类、词性标注、词义排歧等
文本分类的过程:
偶然事件表:TP,FP,TN,FN。
对一个分类器的度量:准确率、召回率、fallout(FN / FN+TN)
先对每个分类器(每一类)计算上述量度,再对所有分类器求平均。
是关于类别的均值。
先合并所有分类器的偶然事件表中的各元素,得到一个总的偶然事件表,再由此表计算各种量度。
是关于文本的均值。
搜索引擎在查找能满足用户请求的网页时,主要结合以下两方面的因素拟合出评分函数对搜索结果进行排序:
属于随机游走模型(一个对直接跳转和远程跳转两种用户浏览行为进行抽象的概念模型)
结合网页的入链数量和网页的质量因素两者,获得网页重要性评价标准。
是与查询无关的全局算法。
计算方法详见笔记第三讲中“链接分析”部分。
互联网页面之间的链接结构实际上很复杂,对于某些特殊的链接结构,按照上述方法计算PageRank 会导致问题,一个典型的例子就是如下图所示的“链接陷阱”。这种结构类似于天体中的黑洞,在计算PageRank 的时候,该结构将导致系统只会吸收传入的分值,而不能将获得的分值传播出去,随着PageRank 一轮轮地连续运算,链接陷阱内的页面PageRank 得分越来越高,这与PageRank 的设计初衷相违背。
远程跳转是解决链接陷阱的通用方式,所谓的远程跳转,即在网页向外传递分值的时候,不限于向出链所指网页传递,也可以以一定的概率向任意其他网页跳转。对于链接陷阱内的网页来说,增加了远程跳转措施后,就像为每个页面增加了指向互联网任意其他页面的虚拟边,权值可以通过这种虚拟边向外传递,以此来避免链接陷阱导致的问题。
属于子集传播模型(从诸多链接分析算法中抽象出来的概念模型)
指与某个领域或者某个话题相关的高质量网页。比如搜索引擎领域,Google和百度首页即该领域的高质量网页;比如视频领域,优酷和爱奇艺首页即该领域的高质量网页。
指的是包含了很多指向高质量Authority页面链接的网页,比如hao123首页可以认为是一个典型的高质量Hub网页。
接收到了用户查询之后,将查询提交给某个现有的搜索引擎(或者是自己构造的检索系统),并在返回的搜索结果中,提取排名靠前的网页,得到一组与用户查询高度相关的初始网页集合,这个集合被称做根集(Root Set)。在根集的基础上,HITS算法对网页集合进行扩充,扩充原则是:凡是与根集内网页有直接链接指向关系的网页都被扩充进来,无论是有链接指向根集内页面也好,或者是根集页面有链接指向的页面也好,都被扩充进入扩展网页集合。HITS算法在这个扩展网页集合内寻找好的Hub页面与好的Authority页面。
(其它的一些链接分析算法略)
存在一些恶意的优化行为,通过特殊手段将网页的搜索排名提高到与其网页质量不相称的位置,而搜索引擎为了保证排名的公正性,也需要对作弊行为进行识别和处罚。
常见作弊手段:内容作弊、链接作弊、页面隐藏作弊
通过雇人写作大量低质量内容吸引流量,这些写作有机地将搜索引擎的热门搜索词添加到写作内容中。这样,普通搜索引擎用户在搜索时,会被吸引进入内容农场网站,赚取广告费用。
网站拥有者考虑到搜索引擎排名中利用了链接分析技术,所以通过操纵页面之间的链接关系,或者操纵页面之间的链接锚文字,以此来增加链接排序因子的得分,并影响搜索结果排名的作弊方法。
Google轰炸利用了指向目标网页的锚文字来操纵搜索结果排名,而锚文字很可能和被指向的页面没有任何语义关系,所以一个直观的判断方式即为判断锚文字是否和被指向页面有语义关系,如果有语义关系存在,则被判断为正常链接,否则可被判断为作弊链接。
页面隐藏的本质特征是向搜索引擎爬虫和用户推送不同内容的页面。所以一个直观的识别这种作弊方式的方法是对页面进行两次抓取,第一次是正常的搜索引擎爬虫抓取,第二次抓取则以模拟人工访问网页的方式抓取。如果两次抓取到的内容有较大差异,则会认为是作弊页面。
首先搜集一批作弊页面,然后根据这批作弊网页进行扩展,如果有在论坛中和这些作弊URL经常一起出现的网页链接,会逐步将其扩充进可疑页面集合。之后,依次访问这些可疑URL,并记录下访问时是否做了重定向及重定向到哪个页面,逐步判断。