具体实施方式
下面结合附图和具体实施例进一步说明本发明实施例的技术方案。
根据本发明的实施例,提供了一种网页结构相似性确定方法,图1是本发明实施例的网页结构相似性确定方法的流程图,如图1所示,根据本发明实施例的网页结构相似性确定方法包括:
步骤101,根据网页的DOM树确定网页的模板特征向量;
步骤102,对所述模板特征向量计算网页结构相似性,并进行查找或类聚。
通过上述处理,可以通过查找与给定首页模板具有相似模板特征向量的首页模板,找到所有具有相同网页结构的作弊网站,还可以通过对所有网站首页的模板特征向量进行类聚来自动的发现作弊网站集合。能够快速的确定具有相似结构的网页。
下面对图1所示的处理过程进行详细的说明。图2是本发明实施例的网页结构相似性确定方法详细处理的流程图,如图2所示,包括如下处理:
步骤201,将网页的DOM树中的节点或节点的组合划分为不同的特征单元;其中,特征单元可以为:DOM树的每个节点、DOM树的每个节点和它的兄弟节点构成的节点对、DOM树的每个节点和它的父节点构成的节点对。
下面为网页的DOM树的一个实例,其中,包括根节点html,根节点html包括两个子节点,分别为:head和body,body又包括了三个子节点,分别为div,p和img。在实际应用中,可以将head和body划分为两个特征单元,还可以将body和其子节点div作为一个特征单元。
<html>
<head>
<title>网页标题</title>
</head>
<body>
<div class=abc>
测试文字......
</div>
<p>呵呵</p>
<div class=abc>
测试文字......
</div>
<p>呵呵呵</p>
<img src=...>
</body>
</html>
步骤202,在将DOM树划分为特征单元后,确定特征单元映射到高维特征向量后所在的维数。
具体包括如下处理:首先,需要将每个特征单元的信息分别拼接为字符串,对拼接后的字符串进行哈希运算,即,应用某种哈希函数;相对于每一个特征单元,都会得到一个相应的哈希运算结果;再得到每个特征单元的哈希运算结果后,将哈希运算结果作为该特征单元映射到高维特征向量后所在的维数。例如,根节点html下的一个特征单元为<div class=abc>,其哈希运算结果为:hash(”<div class=abc>””)=5397,因此,可以确定该特征单元<divclass=abc>映射到高维特征向量后所在的维数为第5397维。
需要说明的是,上述特征单元的信息为特征单元(节点)的HTML标签名称及相关属性,在实际应用中,相关属性包括但不限于以下四个属性:身份标识(id)、样式(class)、名称(name)、类型(style)。
步骤203,在确定特征单元映射到高维特征向量后所在的维数后,就可以根据预定规则确定特征单元在DOM树中的权重值;
具体地,该权重值代表了相应的特征单元在该网页(网页的DOM树)中的重要程度,特征单元的每一次在网页DOM树中出现都会被赋予一次权重值,最终的权重值是该特征单元每次出现的权重值的累加,特征单元每次出现在网页DOM树的权重值由预定规则决定,包括:
1、特征单元的权重值随特征单元(节点)在DOM树中的深度递减;因为在网页的DOM树上,越是内层的内容差异越不重要。在实际应用中,可以采用等比递减的方式确定特征单元的权重值,并只考虑有限深度内的特征单元。
2、特征单元的权重值随特征单元在兄弟节点(即,同一父节点下的子节点)中的重复递减,其中,在此种情况下特征单元权重值的衰减向特征单元的子特征单元传递;在实际应用中,因为很多网页的DOM树含有重复的结构,例如,论坛、博客中的很多篇帖子、或网络相册中的多个图片。若特征单元与之前的某个兄弟特征单元重复(例如,帖子的重复或图片的重复),那么它的权重以前面兄弟特征单元的权重为基数计算,衰减程度与它们之间所隔节点(特征单元)的个数有关。
3、特征单元的权重值随特征单元无相关属性递减,即,与特征单元是否有相关属性有关。其中,在该情况下,权重值的衰减向特征单元的子特征单元传递。在实际应用中,无相关属性的节点(例如,“<p>”、“<a>”)只能提供较少的独特信息,因此权重较低,而有相关属性的节点(例如,“<divid=main_content>”)则可以在相当程度上将同一来源的网页与其他网页区分开,因此权重较高。
在实际的应用中,特征单元每次出现的权重值由上述几个因素共同决定。
例如,特征单元<div class=abc>具有样式属性(class=abc),则比无样式属性的特征单元的权重要高,可以将该特征单元的权重值预设为1.0;此外,由于该特征单元位于DOM树的第3层,则最终的权重值还需要乘以衰减因子(假设衰减因预设为0.6)的3次方。
步骤204,在确定了特征单元的权重值后,根据特征单元在DOM树中的权重值确定该特征单元在高维特征向量的维数上的实数值,并由此确定对应于该网页DOM树的高维特征向量;
例如,由于在上述步骤中确定了特征单元<div class=abc>的在高维特征向量中的维数为5397,该特征单元的权重值可以根据该特征单元是否有样式属性、该特征单元在DOM树种的深度、是否与兄弟特征单元重复等因素确定。随后,就可以将最终确定的权重值作为高维特征向量的相应维数上的实数数值。即,确定了高维特征向量第5397维上的实数值。在实际应用中,对于每个模板特征向量都需要进行上述处理,将其在DOM树上的权重值作为高维特征向量中相应维数的实数值。
步骤205,在确定对应于该网页DOM树的高维特征向量后,将高维特征向量进行压缩,得到最终的模板特征向量。
具体地,在实际应用中,为了减少计算过程中的哈希冲突,将高维特征向量的维数设置的较大。但是,在后续的应用中,需要较小维数的模板特征向量来保证计算的效率。因此,在确定了对应于DOM树的高维特征向量后,需要对高维特征向量进行维数压缩,在本发明实施例中,采用简单的折叠的方法(维数取模,权重叠加)进行压缩。并基本保证后续应用压缩后的模板特征向量进行计算的准确性。下面,对上述采用折叠的方法对高维特征向量进行维数压缩的处理过程进行详细说明:
假设上述的高维特征向量的维数为M,需要将维数为M的高维特征向量压缩为维数为N的模板特征向量,其中,N为大于等于1小于M的自然数,需要进行如下处理:
1、将M维高维特征向量中的各个维数分别除以N,得到相应的余数;
2、将所有余数相同的高维特征向量的维作为N维模板特征向量的一个维;
3、将所有余数相同的高维特征向量的维中的实数值相加,作为N维模板特征向量相应维的实数值。
例如,高维特征向量的维数为10000维,而最终希望得到一个100维的模板特征向量,因此必须将高维特征向量进行压缩,假设高维特征向量是[a1,a2,a3,…,a10000],则压缩后的模板特征向量为[a1+a101+a201+…+a9901,a2+a102+a202+…+a9902,…,a100+a200+…+a10000]。实现高维特征向量向低维的模板特征向量的压缩。
图3是本发明实施例的网页结构相似性确定方法的将DOM树抽象为模板特征向量的示意图,如图3所示,网页的DOM树可以清楚的表示出该网页的网页结构,包括html节点、head节点、boby节点、title节点、meta节点、div节点、table节点、p节点、img节点,通过图2所示的处理可以将网页的DOM树从高维特征向量压缩为模板特征向量,并最终将网页的DOM树抽象成为一个模板特征向量。图4是本发明实施例的网页结构相似性确定方法的从特征单元到模板特征向量的示意图,如图4所示,首先对特征单元的信息(“div&id=main_content|a”)进行哈希运算,得到映射到高维特征向量后的维数(第23维),随后根据该特征单元在DOM树中的深度等因素来确定其权重值,从而得到高维特征向量,最后,将高位特征向量压缩为最终的低维的模板特征向量。上述步骤201-步骤205的处理过程可以参照图3、图4进行理解。
在得到最终的模板特征向量后,就可以根据该模板特征向量计算网页结构的相似性,需要继续进行如下处理:
步骤206,对模板特征向量计算网页结构相似性,并进行查找或类聚;
具体地,在步骤206中,为了实现对模板特征向量亿级数据的快速处理,设置了基于网格的快速算法。下面,首先对基于网格的查找方式进行说明:包括如下处理:
1、设置至少一套网格,该网格的间隔可以为0.2左右;
2、在网格中将模板特征向量中每一维上的实数值以上述预定间隔(例如,0至0.2之间为0,0.2至0.4之间为1)离散为整数值,从而将模板特征向量映射到至少一套网格中;
3、在网格中根据模板特征向量离散后的整数值将模板特征向量进行排序;
4、查找所有与给定模板特征向量在同一网格内的同网格模板特征向量;
5、采用预定算法分别计算所有同网格模板特征向量和给定模板特征向量的网页的结构相似度。
需要说明的是,为了避免漏掉在两个相邻格子交界处的模板特征向量,本发明实施例采用互相交错的两套网格,使得一个模板特征向量会映射到两个网格中,因此可以避免漏掉在两个相邻格子交界处的模板特征向量。
下面通过实例对上述查找方法进行说明:假设模板特征向量为[a1,…,a100],将该模板特征向量中的每一维按固定区间离散化,例如,将在0-0.2之间的实数值离散化为1,将在0.2-0.4之间的是数值离散化为2;通过上述离散化处理,可以将与给定模板特征向量不同维数的模板特征向量变为与给定模板特征向量同维数的整数模板特征向量。随后,对离散后的模板特征向量进行排序,可以快速查找出与给定模板特征向量在同一网格内的模板特征向量,缩小了计算的范围,在确定了与给定模板特征向量在同一网格内的模板特征向量后,再通过预定算法比较它们原始的模板特征向量(即,未离散前的模板特征向量、或未压缩的高维特征向量)的差异,便可确定与给定模板特征向量相似的模板特征向量,即,找到了与给定网页相同模板的网页。
使用查找方式来确定具有相似网页结构的网页,主要应用于给定一个网页,并查找与该网页结构相似的网页的情况,但是,在实际应用中,在没有给定网页的情况下,还需要直接从大量的网页中确定具有相同网页结构的网页,因此,本发明实施例还提供了一种类聚方式来确定具有相同网页结构的网页,包括如下处理:
1、设置至少一套网格,该网格的间隔可以为0.2左右;
2、将模板特征向量中每一维上的实数值以预定间隔(例如,0至0.2之间为0,0.2至0.4之间为1)离散为整数值;
3、根据模板特征向量离散后的整数值将模板特征向量在至少一套网格中进行排序;
4、在每一个网格内部根据预定算法将模板特征向量进行类聚,得到网页结构相似的模板特征向量的集合;
5、在多套网格之间将网页结构相似的集合合并,确定网页结构相似的模板特征向量的最终类聚结果。
在上述处理过程中,只需对同一格子内的模板特征向量进行类聚即可,其所需时间远远小于在全部网页集合上进行类聚。
下面,对上述查找方法和类聚方式的处理过程中所述的预定算法进行说明,根据本发明的实施例,预定算法可以包括任何用于实数向量的距离度量、或实数向量的相似性度量的计算公式,例如,欧氏距离、曼哈顿距离、向量内积等。在本发明实施例中,采用了自定义的伪距离来确定模板特征向量之间的相似性,伪距离是指两个模板特征向量中每一维的差的和除以每一维共同部分的和:dist(U,V)=∑i(|Ui-Vi|)/∑i(min{Ui,Vi})。在伪距离中,不同相似程度的网页对应于不同的距离范围,例如,对应于同模板的两个模板特征向量之间的伪距离一般小于0.2。
通过上述处理,当人工发现其中某个作弊网站时,可以通过查找具有相似模板特征向量的网站首页,找到所有具有相同网页结构的作弊网站,此外,还可以通过对所有网站首页的模板特征向量进行类聚来自动的发现作弊网站集合。因此能够快速的确定具有相似结构的网页。
根据本发明的实施例,提供了一种网页结构相似性确定装置,图5是本发明实施例的网页结构相似性确定装置的结构示意图,如图5所示,根据本发明实施例的网页结构相似性确定装置包括:提取模块50、权重值确定模块51、处理模块52。下面,对本发明实施例的网页结构相似性确定装置进行说明。
具体地,提取模块50用于根据网页的DOM树提取网页的模板特征向量,具体包括:划分模块501、第一确定模块502、第二确定模块503、以及压缩模块504。
其中,划分模块501用于将DOM树中的节点或节点的组合划分为不同的特征单元;其中,特征单元可以为:DOM树的每个节点、DOM树的每个节点和它的兄弟节点构成的节点对、DOM树的每个节点和它的父节点构成的节点对。
第一确定模块502用于在划分模块501将DOM树划分为特征单元后,确定特征单元映射到高维特征向量后所在的维数;
具体地,第一确定模块502包括拼接模块和哈希运算模块,其中,拼接模块用于将特征单元的信息拼接为字符串;哈希运算模块用于对字符串进行哈希运算,得到哈希运算结果,并将哈希运算结果作为特征单元映射到高维特征向量后所在的维数。例如,根节点html下的一个特征单元为<divclass=abc>,哈希运算模块对其进行哈希运算的结果为:hash(”<divclass=abc>”)=5397,因此,第一确定模块502可以确定该特征单元<divclass=abc>映射到高维特征向量后所在的维数为第5397维。需要说明的是,上述特征单元的信息为特征单元(节点)的HTML标签名称及相关属性,在实际应用中,相关属性包括但不限于以下四个属性:身份标识(id)、样式(class)、名称(name)、类型(style)。
在第一确定模块502确定特征单元映射到高维特征向量后所在的维数后,权重值确定模块51根据预定规则确定所述特征单元在所述DOM树中的权重值。
该权重值代表了相应的特征单元在该网页(网页的DOM树)中的重要程度,特征单元的每一次在网页DOM树中出现都会被赋予一次权重值,最终的权重值是该特征单元每次出现的权重值的累加,特征单元每次出现在网页DOM树的权重值由预定规则决定,包括:1、特征单元的权重值随特征单元(节点)在DOM树中的深度递减;2、特征单元的权重值随特征单元在兄弟节点(即,同一父节点下的子节点)中的重复递减;3、特征单元的权重值随特征单元无相关属性递减,即,与特征单元是否有相关属性有关。
在权重值确定模块51确定特征单元在DOM树中的权重值后,第二确定模块503根据特征单元在DOM树中的权重值确定特征单元在维数上的实数值,并由此确定对应于该网页DOM树的高维特征向量。随后,压缩模块504就可以将高维特征向量进行压缩,得到最终的模板特征向量。
具体地,上述压缩模块504包括:第一处理子模块、第二处理子模块、第三处理子模块,其中,第一处理子模块用于将M维高维特征向量中的各个维数分别除以N,得到相应的余数,其中,N为大于等于1小于M的自然数;第二处理子模块用于将所有余数相同的高维特征向量的维作为N维模板特征向量的一个维;第三处理子模块用于将所有余数相同的高维特征向量的维中的实数值相加,作为所述N维模板特征向量相应维的实数值。
在压缩模块504将高维特征向量进行压缩后,处理模块52就可以对模板特征向量计算网页结构相似性,并进行查找或类聚。
具体地,上述处理模块52包括:设置模块520、离散模块521、映射模块522、排序模块523、查找模块524、第一计算模块525、类聚模块526、合并模块527。
其中,设置模块520用于设置至少一套网格,该网格的间隔可以为0.2;
离散模块521用于将模板特征向量中每一维上的实数值以预定间隔(例如,0至0.2之间为0,0.2至0.4之间为1)离散为整数值,从而使得映射模块522能够将模板特征向量映射到至少一套网格中;
排序模块523用于根据整数值将模板特征向量在至少一套网格中进行排序。
如果采用查找方式确定网页结构相似性,随后,需要查找模块524查找所有与给定模板特征向量在同一网格内的同网格模板特征向量;随后,第一计算模块525采用预定算法分别计算所有同网格模板特征向量和给定模板特征向量的网页结构相似。
如果采用类聚方式确定网页结构相似性,则类聚模块526在每一个网格内部基于预定算法将模板特征向量进行类聚,得到网页结构相似的模板特征向量的集合;随后,合并模块527在多套网格之间将网页结构相似的所述集合合并,确定网页结构相似的模板特征向量。
需要说明的是,上述预定算法可以包括任何用于实数向量的距离度量、或实数向量的相似性度量的计算公式,例如,欧氏距离、曼哈顿距离、向量内积等。在本发明实施例中,采用了自定义的伪距离来确定模板特征向量之间的相似性,伪距离是指两个模板特征向量中每一维的差的和除以每一维共同部分的和:dist(U,V)=∑i(|Ui-Vi|)/∑i(min{Ui,Vi})。在伪距离中,不同相似程度的网页对应于不同的距离范围,例如,对应于同模板的两个模板特征向量之间的伪距离一般小于0.2。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或任意其它形式的存储介质中。
综上所述,借助于本发明的技术方案,通过计算网页的模板特征向量来确定网页结构的相似性,克服了现有技术中不能够计算网页结构相似性的缺陷,当人工发现其中某个作弊网站时,可以通过查找具有相似模板特征向量的首页模板,找到所有具有相同网页结构的作弊网站,此外,还可以通过对所有网站首页模板的模板特征向量进行类聚和查找来自动的快速发现作弊网站集合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。