基于Web 开发模式的信息抽取
信息抽取是一个互联网自然语言处理的一个首要环节,信息抽取的准确度会直接影响到后续的处理。信息抽取的目标是去除噪音,获取网页有价值的信息如网页的标题、时间、正文、链接等信息。
主流算法介绍
网页信息抽取的方法有很多,比如从算法上分:基于模板的,基于信息量、基于视觉的、基于语义挖掘的、基于统计的。从HTML 处理上分为:基于行块、基于DOM 树。下面我逐一介绍。
1. 基于模板,一般由人工维护一个URL 和HTML 的模板。当URL 匹配到某个URL 模板时,利用对应的HTML 的模板来抽取其中的信息。这种方法见效快、准确度高,抓取少量站可以使用,可以做一些模板设置工具来减少工作量,大量站需要较多人力维护模板列表。
2. 基于信息量(信息量的解释我下面会说),见基于行块分布函数的正文抽取 ,计算正文在源码哪些行上分布较多,取正文较多的行;另外,也有算法是根据行的正文密度来计算的,简单点说就是正文长度/ 标签数量。基于信息量也有另一种方法,就是建立Dom 树,把行函数变为Dom 树上某个节点的评估函数。对于资讯类网站,这个方法会工作得很好,但是需要考虑到抽取网页信息并不代表文字多就好,比如正文下有一段版权信息或者网站说明,如何去除这些信息?另外,游戏下载网站分为游戏的结构化信息、描述信息、游戏操作说明等部分,信息是分散的,而不是集中的,这类信息如何处理?
3. 基于基于视觉的页面分割算法 ,是基于分块的算法的一种具体实现方式,这是微软亚洲研究院的一个算法,用于微软搜索引擎Bing 上。我比较喜欢这个算法,因为提出了两个好的想法:一是根据视觉来分块,二是根据视觉来进行块合并。基于视觉处理较复杂,需要用到CSS 、Javascript等引擎,需要用浏览器内核库来处理HTML ,性能可能不高。另外,这个算法的结果只是告诉大家网页大概可以分为多少块,每一块的位置、大小是什么,而哪块和哪块是正文还需要进一步计算。
4. 基于语义的正文抽取,根据锚文本和页面标题等不容易出错的信息去发现正文块,这类算法有效,但是仍有局限性。
5. 基于