信息抽取方法和装置
技术领域
本发明涉及计算机应用领域,尤其涉及一种信息抽取方法和装置。
背景技术
随着信息产业和通讯技术的飞速发展,互联网已经成为重要的知识库和信息来源。然而,随着互联网上信息量日益庞大,互联网中数据的组织类型更加多样化并且信息缺乏统一管理,人们对于高效率的信息抽取技术的需求越来越迫切。
基于网页结构特征分析的方法,采用统计聚类的思想,查全率较高,但在抽取信息时具有一定的盲目性,经常抽取出大量的无用信息。基于隐马尔科夫模型(HiddenMarkovModel,简称HMM)的信息抽取方法,需要相关领域的专家事先构建出该领域的最优数学模型,且模型参数的制定需要大量的样本数据,抽取效率较低。基于本体实现的表格信息抽取方法,不依赖于所抽取的WEB页面的设计格式,也没有对其内容提出任何表示限制,但该方法只适用于一定的应用领域,当应用领域改变时相应的本体需要重新构造。基于自然语言处理方式的信息抽取方法适用于含有大量自由文本且句子成分完整的Web页面,但该方法没有充分利用Web文档的层次结构,且处理速度慢,导致该方法的适用范围较小。
可见,现有的信息抽取技术难以同时满足网页信息自动抽取中查全率与准确率高、抽取信息量大、用户负担轻和无关于应用领域等要求。
发明内容
本发明提供了一种信息抽取方法和装置,解决了现有信息抽取技术无法满足实际应用需要的问题。
一种信息抽取方法,包括:
对超文本标记语言(HTML)文档进行预处理,得到规范的可扩展超文本置标语言(XHTML)文档;
对所述XHTML文档进行解析,获取样本实例;
通过归纳学习所述样本实例,得出公共XML路径语言(XPATH);
生成扩展样式表转换语言(XSLT)抽取规则;
根据所述XSLT抽取规则和所述XPATH,通过输出文件函数进行信息抽取。
优选的,所述对HTML文档进行预处理,得到规范的XHTML文档包括:
将所述HTML文档解析成一颗HTML文档对象模块(HTMLDOM)树,并获取该树的根元素;
为所述HTML文档添加XML文档声明和XSLT规则转换文件;
从所述树的树根开始递归遍历所述HTMLDOM树,形成所述规范的XHTML文件。
优选的,从所述树的树根开始递归遍历所述HTMLDOM树,形成所述规范的XHTML文件包括:
从树根开始递归遍历所述HTMLDOM树,判断节点类型;
对节点类型为文本节点的节点,用实体引用代替文本节点的特殊字符,并打印所述文本节点;
对节点类型为有用元素的元素节点,在取出所述元素节点之前先打印“<”,获得该元素节点的名称,同时将该元素节点的名称小写化;
对节点类型为无用元素的元素节点,直接过滤该元素节点。
优选的,所述从所述树的树根开始递归遍历所述HTMLDOM树,形成所述规范的XHTML文件还包括:
对于有子节点的节点类型为有用元素的元素节点,以同样方式递归打印出所有孩子节点,直到遍历结束,关闭所述元素节点。
优选的,所述对所述XHTML文档进行解析,获取样本实例的步骤包括:
将页面清洗得到的XHTML文档解析成XMLDOM树,获得该树的根节点(ROOT);
深度优先遍历所述XMLDOM树;
获得根节点的名称;
在所述根节点有孩子节点时递归处理该节点的孩子节点,在所述根节点没有孩子节点时直接加到当前节点下;
把所有子节点加载到JTREE的根节点中生成整棵树。
优选的,所述通过归纳学习所述样本实例,得出公共XPATH包括:
对于两个样本实例的XPATH表达式,从根节点开始比较;
如果节点名称和位置序号都一致,则计入公共XPATH表达式;
若某个XPATH的节点名称相同,而位置序号不同,则获得该节点及其所有的兄弟节点,将该节点的孩子序号置为0,并写入公共XPATH表达式中;
依次比较直到XPATH表达式结束。
优选的,所述生成XSLT抽取规则包括:
定义三个变量,使用该三个变量保存起始孩子节点序号、孩子节点数以及步长值;
设置公共路径里的参数,初始值为起始孩子节点序号;
模板运行一次后将起始孩子节点序号按步长值增加,得到的结果作为参数递归调用模板,完成多条记录数的自动抽取。
优选的,所述根据所述XSLT抽取规则和所述XPATH,通过输出文件函数进行信息抽取的步骤之后,还包括:
将抽取结果存入XML文件中,用于观察数据抽取的正确性和二次处理。
本发明还提供了一种信息抽取装置,包括:
页面预处理模块,用于对HTML文档进行预处理,得到规范的XHTML文档;
网页树构建模块,用于对所述XHTML文档进行解析,获取样本实例;
XPATH构建模块,用于通过归纳学习所述样本实例,得出公共XPATH;
抽取规则形成模块,用于生成XSLT抽取规则;
信息抽取模块,用于根据所述XSLT抽取规则和所述XPATH,通过输出文件函数进行信息抽取。
本发明提供了一种信息抽取方法和装置,对HTML文档进行预处理,得到规范的XHTML文档,然后对所述XHTML文档进行解析,获取样本实例,通过归纳学习所述样本实例,得出公共XPATH,并生成XSLT抽取规则,最后根据所述XSLT抽取规则和所述XPATH,通过输出文件函数进行信息抽取,实现了高查全率和查准率的信息抽取,解决了现有信息抽取技术无法满足实际应用需要的问题。
附图说明
图1为本发明的实施例一提供的一种信息抽取装置的结构示意图;
图2为本发明的实施例一提供的一种信息抽取方法的流程图;
图3为本发明的实施例一提供的一种信息抽取方法的实现原理图;
图4为本发明的实施例二中实验结果示意图。
具体实施方式
现有的信息抽取技术难以同时满足网页信息自动抽取中查全率与准确率高、抽取信息量大、用户负担轻和无关于应用领域等要求。
为了解决上述问题,本发明的实施例提供了一种信息抽取方法和装置。下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
首先结合附图,对本发明的实施例一进行说明。
本发明实施例提供了一种信息抽取装置,该装置的结构如图1所示,包括:
页面预处理模块101,用于对HTML文档进行预处理,得到规范的XHTML文档;
网页树构建模块102,用于对所述XHTML文档进行解析,获取样本实例;
XPATH构建模块103,用于通过归纳学习所述样本实例,得出公共XPATH;
抽取规则形成模块104,用于生成XSLT抽取规则;
信息抽取模块105,用于根据所述XSLT抽取规则和所述XPATH,通过输出文件函数进行信息抽取。
结合图1所示的信息抽取装置,本发明的实施例还提供了一种信息抽取方法,使用该方法完成WEB信息抽取的流程如图2所示,包括:
步骤201、对HTML文档进行预处理,得到规范的XHTML文档;
本步骤提供一种HTML页面清洗算法,主要实现步骤如下:
1、利用NekoHtml把HTML文档解析成一棵HTMLDOM树,并获得该树的根元素。
2、为文档添加XML文档声明和XSLT规则转换文件。
3、从树根开始,递归遍历HTMLDOM树,根据节点类型进行判断处理。
若是文本节点,则用实体引用代替特殊字符,并打印文本节点。若是元素节点,则需判断节点类型是否是无用元素。若是无用节点,如Script、META、Form、STYLE等,则直接过滤;否则,在取出元素节点之前先打印“<”,利用DOM中的getNodeName()方法获得元素节点名称,同时将其名称小写化。
如果有用元素类型的元素节点有子节点,则以同样方式递归打印出所有孩子节点,直到遍历结束,关闭元素节点。
4、待整个HTMLDOM树遍历结束,则形成了规范的XHTML文档。
步骤202、对所述XHTML文档进行解析,获取样本实例;
本步骤中,对XHTML文档进行解析,使用JTREE构建可视化的XML文档,以便获得样本实例,减轻用户负担。构建网页分析树流程如下:
首先,将步骤201之后得到的XHTML文档解析成XMLDOM树,获得该树的根节点ROOT。
其次,深度优先遍历该XMLDOM树。获得根节点的名称,如果该根节点有孩子节点,递归处理该根节点的孩子节点。如果该根节点没有孩子节点,则直接将没有子节点的元素节点加到根节点下。最后把所有孩子节点加载到JTREE的根节点中生成整棵树
步骤203、通过归纳学习所述样本实例,得出公共XPATH;
在获得所有的样本实例后,通过归纳学习得出公共XPATH(待抽取节点的路径,使用XPATH来定位)。例如:对于两个样本实例的XPATH表达式,从根节点开始比较。
如果节点名称和位置序号都一致,则将节点的路径XPATH计入公共XPATH表达式,形如:/root/node1/node2。若某个XPATH的节点名称相同,而位置序号不同(在树中同一层的不同兄弟节点位置序号不同),则说明待抽取的信息位于该树节点的及其兄弟节点为父节点的子树中;此时,继续获得该节点及其所有的兄弟节点,并将该节点的孩子序号置为0,并写入公共XPATH表达式中。依次比较直到XPATH表达式结束。
步骤204、生成XSLT抽取规则;
本步骤可采用基于树的绝对路径定位方式,这种方式最为直观和准确,运行效率也最高。
在信息抽取中,一般记录条数较多,而在XSLT中,当XSLT处理器为执行转换而处理样式表的时候,它的值每次都可能发生变化。但是,一旦在某个转换中设定了这个值,就不再发生变化。因此,要把所有的记录条数全部抽取出来,必须使用模板递归调用。首先定义三个变量,使用这三个变量保存起始孩子节点序号、孩子节点数以及步长值。然后设置公共路径里的参数,初始值为起始孩子节点序号,模板(即某个待抽取记录的抽取规则模板,本质一个xml文件,使用xslt进行处理)运行一次后将起始孩子节点序号按步长值增加,得到的结果作为参数递归调用模板,完成多条记录数的自动抽取。
步骤205、根据所述XSLT抽取规则和所述XPATH,通过输出文件函数进行信息抽取;
本步骤中,根据抽取规则库里的规则,利用XSLT和XPATH在数据转换和数据定位方面的优势,通过输出文件函数实现信息抽取。优选的,还可将抽取结果存入XML文件中,用于观察数据抽取的正确性和二次处理。
本发明实施例中,可根据实际需要自定义抽取规则以构成抽取规则库。
本发明实施例的实现原理如图3所示。
下面结合附图,对本发明的实施例二进行说明。
本发明实施例提供了一种信息抽取方法,该信息抽取方法建立在待抽取的网页库已获得的前提下,通过页面预处理器将源HTML页面标准化,补充HTML不规则标签,过滤无用元素节点等。如果该类型页面在抽取规则库中不存在,利用页面结构解析器将网页解析成为JTree,并根据样本实例学习公共XPATH,从而形成提取规则。如果存在抽取规则,则直接进行抽取。利用该原型系统进行了对4个网站的26个页面的进行了实验,实验结果参见图4,实验结果以准确率(P)和召回率(R)来衡量。另外,引入一个准确率和召回率的加权平均值F,其中待抽取数据共423个,当其提供的样本实例数为2个时,实际抽出共366个,正确抽出共360个,平均F值为75.23%;当其提供的样本实例为3个时,平均查全率为99.17%,平均查准率为99.17%,平均F值为99.17%。对于一般网站而言,一个信息点本方法最多提供3个样本实例,便可完成较高查全率和查准率的抽取。
本发明的实施例提供了一种信息抽取方法和装置,对HTML文档进行预处理,得到规范的XHTML文档,然后对所述XHTML文档进行解析,获取样本实例,通过归纳学习所述样本实例,得出公共XPATH,并生成XSLT抽取规则,最后根据所述XSLT抽取规则和所述XPATH,通过输出文件函数进行信息抽取,实现了高查全率和查准率的信息抽取,解决了现有信息抽取技术无法满足实际应用需要的问题。
本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。
可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。
上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。
任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。