在一个Web页面上,大量内容是与主题无关的信息,精确提取数据技术方法能够将网页上的无关内容过滤掉,一般来说,精确提取到的数据都是结构化数据,主要应用在数据和服务集成领域,例如,建立垂直搜索、建立商品比价、建立混搭(mashup)服务、商业情报采集或其它数据挖掘领域。尤其在商业智能等数据挖掘领域,精确提取数据很关键。
当前,使用网页数据提取规则进行Web信息提取是最有效和最稳定的手段,虽然自适应算法能够自主地识别网页上的数据内容结构,但是,精确度只能用一个概率指标衡量,其表现不能稳定地达到某个较高水平。相反,使用定制的网页数据提取规则,提取数据的精确度是确定的,在提取规则中可以规定。例如,如果无法精确提取数据,可以规定放弃某个页面的数据提取,并提示用户进行干预。这样在商业情报分析系统中防止引入错误数据干扰统计结果。
手工编写页面数据提取规则需要特定的技能,而且容易出错,难于达到精确提取数据的目标,语义结构定义和网页数据提取规则生成工具MetaStudio提供了便捷的图形化用户界面(GUI),只需要用户操作GUI进行必要的映射,指明从样本页面的什么位置提取数据,MetaStudio便可自动输出页面数据提取指令文件。
所述“映射”,不仅仅将被提取的数据的页面位置记录下来,为了提高网页数据提取规则的适应性(相对于网页结构变化来说),还需要一些其它操作,例如,FreeFormat映射和样例复制品映射,下面将一一详述。
将信息结构建设好以后,需要指定信息属性的内容应该从目标页面的哪个HTML DOM节点上提取,我们将这个过程称为映射,并专称为数据映射,与下一章的线索映射相对。
为了增强网页数据提取规则的适应性(目标页面HTML结构的微小调整不影响先前生成的信息提取指令),MetaSeeker工具包并不是单纯地根据目标网页数据所处的位置生成网页数据提取规则,而可以选择下面的三种途径:
以上三种映射操作都是从DOM树视窗的鼠标右键弹出菜单激发的,下面将详细讲解其用法。
DOM树视窗的鼠标右键弹出菜单内容映射下的子菜单是动态生成的,整理箱中每个叶子节点(不是容器节点)都有一个菜单项。在DOM树视窗中选择某个DOM节点,点击该菜单,可以将该节点映射到指定的信息属性上,就会在工作台左栏的信息属性编辑区的节点列中出现该节点的序号。
有下述方法选择DOM节点:
选中,系统将重置鼠标点击的缺省处理方式,将在DOM树上找到被点击HTML元素多数情形下,是从DOM树的text节点向信息属性影射的,当然,MetaStudio支持的映射不限于此,例如,图片的URL地址(IMG元素的src属性值)映射甚至使用自由表达式表示的映射。另外,哪种DOM节点允许映射到特定的信息属性上跟信息属性的特性有关,详见《高级用户手册》。如果映射操作不符合要求,会弹出一个提示框说明原因,如果仍然找不出失败原因,可以在MetaSeeker使用经验交流区寻求帮助。
注意:由于页面上HTML页面元素的嵌套关系会干扰对被点击的HTML元素的定位(主要发生在反向选择文本内容时),系统在DOM树上找到的节点很可能是真正的目标节点的父节点,所以,用户需要查证系统找得是否精确。因为DOM树上的节点被选中时在浏览器窗口中的对应元素将以红色边框闪烁几次,所以查证过程比较直观。
如果被提取的DOM节点具有FreeFormat标志,或者在本子容器范围内的某个祖先节点具有FreeFormat标志,可以利用此标志以提高信息提取规则的适应性。无论容器节点还是叶子节点都能进行FreeFormat映射。
寻找FreeFormat标志时,不能超出本子容器的范围。无论是顶层容器还是内部的子容器,都代表HTML页面上的一个块,这个块的范围是由MetaStudio根据本子容器包含的信息属性的定位参数计算出来的,如果选择的FreeFormat标志不符合范围约束条件,在生成信息提取规则时将弹出一个提示框。
选择DOM节点的方法同上一节,选定后,点击FreeFormat映射弹出菜单,可以看到所有的信息属性都是一个菜单项,选择某个菜单项就将具有FreeFormat标志的DOM节点映射到了该信息属性上。在整理箱结构树的FreeFormat列和类型列上将分别显示相关的FreeFormat标志信息。
已经进行了数据映射的信息属性仍然可以进行FreeFormat映射,用以提高信息提取的准确性。如果还没有为信息属性进行数据映射,执行FreeFormat映射是会自动设定text类的block特性,提取被映射的DOM节点下的所有文本内容,可以根据需要取消这个设定而手工进行数据映射,以更准确地提取文本内容。
如操作过程一节斜体字所述,样例复制品的映射方法有了很大变化,只有容器节点才有多实例值,而且如果容器节点使用FreeFormat标志进行定位,可以省却样例复制品映射的麻烦。
如果需要使用样例复制品计算多实例提取规则,首先要激活该功能。需要下面的步骤: