最近在看VIPS算法(Visual Based Page Segment Algorithm),这个算法是清华和北大的学生在微软亚洲研究院实习时提出的,中文名称叫基于视觉的Web页面切割算法,或者说基于视觉的Web页面分页算法。他们的思想是根据HTML源代码在浏览器中的显示属性来确定一个页面到底要需要分成哪些块。简单的说就是将页面切割成一块一块的,页面是一块,页脚是一块,中间是一块,然后中间又根据内容分成更细的块,整个过程是一个迭代的过程。最后对于太小的页面还需要合并,使之更加体现页面的主要内容,而不需要关注单个的文本。这个算法从理论上来讲确实不错,因为它可以清晰的展现Web页面的主要内容模块,为提取数据丰富区(Data-rich Section)提供了很好的基础。可以说是HTML与视觉之间的一个桥梁。尽管它的意义重大,但实现起来并不是那么容易。它的核心思想是根据HTML转换后的DOM节点在浏览器中的显示的位置和背景颜色来确定哪些内容输入同一语义块。显然,它的基础是要将HTML源代码放到浏览器中展示一遍,因此这就意味着需要对整个的HTML源代码解析。这个是浏览器的意义。他们的实验模型是基于IE的API,IE可以很容易将HTML源代码解析,得到每一个节点如果要显示,它的显示位置和背景颜色。由于没有开源,后来另外一个人尝试用C#基本实现了此算法,而且开源,但是他也是基于IE的API来写的,也就是说还是无法摆脱IE的作用。用JAVA实现的一个很大的问题是难以确定节点在浏览器中的展示位置。背景颜色也许还可以推导(CSS可能比较难以处理),但是位置一直是一个难题。最后我和师兄商量后他说希望我自己写dll调用IE的API,由于我没有写过JNI调用,所以这个比较难。他还说曾经找过几个人来研究firefox的源代码,但是大家放弃了,认为太难了。
对于这块我也没有信心了。
估计不足。