1.工作总结
本周编写了去除冗余标签与文本节点和类树编辑距离算法。但是通过阅读HTMLParser的文档和源码发现,之前没有很好的利用HTMLParser自身的特点(如,HTMLParser对DOM树的节点提供了visitor模式的基本实现),以至于代码比较冗长、难看。下周考虑重写这些代码。
本周遇到的最大困难是文献[1]提出的模板生成算法的实现,在这个问题上卡了好几天。
这个算法要求找出文档中的相似子树(或相似的邻近森林)并进行合并,合并后的节点用带有通配符(*、?、+)的虚结点表示,我认为这个合并过程应该是自底向上的。假定待处理子树只有两层,那么这个问题可以简化为 求两个正则表达式的最大公共子序列,与合并两个正则表达式。论文中仅指出使用动态规划实现,但没给出具体算法。考虑了几天,得出的结论是按照其形式定义严格实现是不可能的。考虑到网页的结构不太复杂,每一层节点中应该只有1到2个虚结点,可以利用修正虚结点的阈值实现该问题的一个近似算法。
2对进一步工作的展望
2.1关于模板生成算法
虽然[1]中的模板生成算法很复杂,但其主要功能仅是提高对文档聚类的效果,与定位重复数据的数据区。[1]中模板提供的相似度比较是聚类的重要依据,但是我们有其他简单地算法来提供近似的效果。[1]中要求合并重复子树,这对定位类似商品列表的重复数据区比较有好处,但是对提取新闻类页面效果不好。对于提取商品详细信息页面的提取效果也值得商榷。所以对训练集进行人工标注是必须的。
2.2 改用其他算法
由于对少数训练集进行标注是一种必然,那么完全可以利用 人工标注 实现对所有数据区的定位,与部分数据的语义识别。换而言之,在给定页面集确定为相似页面时,直接利用标注结点的路径进行数据提取即可。
所以下一步的重心是文档聚类算法和已提取数据项的语义识别。其中聚类的相似度暂时由一种类树编辑距离提供,聚类算法采用最小距离法。语义识别通过事先定义对象的属性、格式进行匹配,这方面需要进一步的研究。
在此基础上,考虑实现某几个简单地原型系统用于演示(仅搜集少量用于演示的数据):
·新闻网站
·针对某类商品的购物搜索,利用lucene
·针对某类商品的在线比价(即时分析几个网站的搜索结果,选取每个搜索返回页的最小价格项返回给用户)
3 工作计划
略
—————————
[1] Joint Optimization of Wrapper Generation and Template Detection ,KDD’07, August 12–15, 2007, San Jose, California