内容来自论文

@article{何昕2007基于简单树匹配算法的,
  title={基于简单树匹配算法的Web页面结构相似性度量},
  author={何昕 and 谢志鹏},
  journal={计算机研究与发展},
  number={z3},
  pages={1--6},
  year={2007}
}

简单树匹配算法SimPle Tree Matching 最初在软件工程上用于比较两个计算机程序,后引入网页结构相似度计算。主要考虑页面的结构信息,假设含有相似信息的页面也具有相似的结构。

将HTML网页表示成树结构

原始的HTML文档可以通过深度优先遍历树重构出来

文档 1 和 2 对应的网页表示:
在这里插入图片描述
文档 1 和 2 对应的html表示:
在这里插入图片描述
文档 1 和 2 对应的网页结构树表示:
在这里插入图片描述
简单树匹配不允许结点的替换和跨层匹配,从而大大提高了算法的运行效率。

简单树匹配算法

两棵树的匹配定义为:

对于映射MMM,任意的结点对(i,j)(i,j)(i,j),(i,j)∈M(i, j) \in M(i,j)M (i,ji, ji,j 是非根结点),(parent(i),parent(j))∈M(parent(i), parent(j)) \in M(parent(i),parent(j))M成立,则结点对(i,j)(i,j)(i,j)匹配.

最大匹配是指匹配到的结点对数目最多的匹配.

算法流程

AAABBB为两棵树, iiijjj 分别为AAABBB上的结点.

A=(RA,A1,⋯ ,Am)B=(RB,B1,⋯ ,Bn)A=\left(R_{\mathrm{A}}, A_{1}, \cdots, A_{m}\right) \\ B=\left(R_{\mathrm{B}}, B_{1}, \cdots,B_{n}\right)A=(RA,A1,,Am)B=(RB,B1,,Bn)

其中,RAR_{\mathrm{A}}RARBR_{\mathrm{B}}RBAAABBB的根结点,AiA_{i}AiBjB_{j}Bj分别是AAABBB的第iii个和第jjj个第1层子树.

(1)当RAR_{A}RARBR_{B}RB的标记相同时, AAABBB的最大匹配为MA,B+1M_{{A}, {B}}+1MA,B+1, 其中MA,BM_{{A}, {B}}MA,B⟨A1,A2,⋯ ,Am⟩\left\langle A_{1}, A_{2}, \cdots, A_{m}\right\rangleA1,A2,,Am⟨B1,B2,⋯ ,Bn⟩\left\langle B_{1},B_{2}, \cdots, B_{n}\right\rangleB1,B2,,Bn 的最大匹配。MA,BM_{\mathrm{A}, \mathrm{B}}MA,B 可以通过动态规划算法得到。
(2)当RAR_{A}RARBR_{B}RB的标记不相同时,返回0

在这里插入图片描述

计算网页结构相似度

给定两个HTML文档,它们对应的结构树为 T1T_{1}T1T2T_{2}T2T1T_{1}T1T2T_{2}T2 中每一个结点标记对应HTML文件中一个标签.
定义T1T_{1}T1T2T_{2}T2 的相似度为:

 Similarity (T1,T2)= Simple TreeMatching (T1,T2)(∣T1∣+∣T2∣)/2 \text { Similarity }\left(T_{1}, T_{2}\right)=\frac{\text { Simple TreeMatching }\left(T_{1}, T_{2}\right)}{\left(\left|T_{1}\right|+\left|T_{2}\right|\right) / 2}  Similarity (T1,T2)=(T1+T2)/2 Simple TreeMatching (T1,T2)

其中,∣T1∣\left|T_{1}\right|T1,∣T2∣\left|T_{2}\right|T2 分别表示两棵树中结点数目,SimpleTreeMatching(T1,T2)\left(T_{1}, T_{2}\right)(T1,T2) 表示这两棵树的最大匹配结点数.

两棵树的最大匹配结点数越多,则两颗树越相似,它们所代表的 HTML文档也就越相似。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐