具体实施方式
本发明实施例提供一种通过配置模板、利用DOM(Document Object Model,文档对象模型)树来精确抽取网页中不同类型信息的技术方案,用以解决网站的网页自动抽取效果差的问题,尤其可以解决垂直搜索中的精确抽取问题。
本发明实施例中,可预先针对不同的网站定义对应的模板集合,模板集合中可包括一个或多个模板。所定义的模板可以采用XML(Extensible Markup Language,可扩展标记语言)文件格式或其他文件格式,用于进行网页抽取,不同的模板对应于不同的网页信息组织结构(或称网页框架,即frame),通过模板可从基于相应网页框架的网页中抽取内容块。所抽取出的内容块可以是一个或多个,可相邻也可不相邻。
为了提高信息抽取粒度,可在模板中针对某个或某些内容块的信息组织结构进一步进行定义,即可通过模板在从基于相应网页框架的页面中提取内容块后,进一步根据该模板对于某个或某些内容块进行更细粒度的信息抽取。
在实际应用中,为简化网页信息抽取技术的实现,便于后续网页信息抽取,可先根据网页源码将待抽取网页解析为DOM树,在进行网页信息抽取时,利用该DOM树中的各级节点结构(即分层对象模型)实现相应粒度的内容块信息抽取。
为了进一步说明DOM树的结构,下面以一个具体的网页框架实例进行说明。
图1A和图1B示出了一个具体的网页,针对该网页框架结构,图1C示出了一种DOM树结构。如图1A所示,该网页可划分为以下内容块:头部搜索框块11、站内导航块12、二级导航块13、提问块14、答案块15、回复框块16、相关内容块17、求助块18、版权块19。各内容块还可进一步进行划分,如图1B所示,答案块15可进一步划分为:答案标志块151、答案内容块152、答案作者块153、答案时间块154。其中,答案作者块153还可进一步划分为:图标块1531、作者名称块1532、编辑人数块1533等。
相应的,DOM树的结构可如图1C所示。其中,“SOSO问问”为根节点,对应于整个网页;根节点下的各级对象节点分别表示图1所示网页框架中的各对象,即对应于相应名称的内容块,如“答案”节点对应于答案块15,“答案内容”对应于答案内容块152等,以此类推。
图2示出了对图1A和图1B所示的网页进行信息抽取的流程示意图。该流程可基于网页的框架来划分网页结构,再基于局部结构并根据相匹配的模板进行精确的信息抽取。
网页信息抽取流程通常由相应的应用程序系统执行。在启动该系统时或者启动该系统的网页信息抽取功能时,首先进行系统初始化过程。在该初始化过程中,系统可加载预先定义的用于进行网页信息抽取的模板,如将模板加载到内存。模板中可定义有划分规则,以控制内容块的划分和网页划分粒度;还可定义有输出规则,如定义有内容块的类型信息,该类型信息即为需要从网页中抽取的内容对应的类型信息。
如图2所示,本发明实施例提供的网页信息抽取流程可包括:
步骤201,将待抽取网页解析为DOM树,获取与待抽取网页对应的模板;
步骤202,根据该模板定义的网页划分粒度遍历该DOM树,将对应网页划分为内容块;
步骤203,根据该模板定义的输出规则,将所述内容块的内容和类型信息进行输出。
为了更进一步对上述流程进行详细说明,如图3所示,本发明实施例提供的网页信息抽取流程可包括:
步骤301,根据待进行信息抽取的网页源码建立DOM树。
该步骤中,根据如图1A和图1B所示的网页,建立如图1C所示的DOM树。
步骤302,查找与待进行信息抽取的网页对应的模板或模板集合,如果查找到,则转入步骤303,否则结束本流程。
该步骤中,可根据网页URL(Uniform Resource Locator,统一资源定位符)找到与之对应的模板或模板集合。本实施例中,在定义模板或模板集合时,可在每个模板集合前面定义匹配这个模板集合的子域名和目录名。如果网页的URL与某个模板集合中定义的子域名和目录名都匹配,那么匹配的模板集合用于对该URL进行信息抽取。
本实施例中,针对有些网站的网页框架类型比较多的情况,模板集合中会存在多个模板,分别用于对不同框架的网页进行信息抽取,这种情况下,还需要在找到与网页URL对应的模板集合后,进一步从该集合中找到与待抽取网页的框架结构对应的模板。即使模板集合中只有一个模板,也需要进行模板匹配(即通过上述方式找到对应的模板集合),以防止抽取与模板不匹配的网页,例如索引页URL,虽然通过URL命中了模板集合,但是没有配置抽取索引页的正文内容的模板,这种情况下则无法使用本发明实施例提供的方式对索引页正文内容进行信息抽取。
步骤303,根据选取的模板遍历DOM树,以便将网页划分为内容块。
该步骤中,可根据选取的模板,通过遍历DOM树,提取DOM上节点的整体位置特征、标签特征、文字特征来和模板中的模式(即网页划分粒度匹配条件)进行匹配,从而将整个网页划分成若干个块。如图1A所示,本次遍历后,网页被划分成多个内容块,依次为头部搜索框块11、站内导航块12、二级导航块13、提问块14、答案块15、回复框块16、相关内容块17、求助块18、版权块19。
步骤304,根据选取的模板再次遍历DOM树,以便得到内容块中更细粒度的内容块。
该步骤中,可通过遍历DOM树中指定内容块对应的对象节点,利用内容块中的局部位置特征、标签特征、文字特征,对内容块中的信息进行进一步划分。例如,本次遍历后,答案块15被细分为:答案标志块151、答案内容块152、答案作者块153、答案时间块154。当然,不同的模板所设置的需要进一步进行划分的内容块也可能不同,例如可在模板中定义对每个内容块进行进一步划分,也可如本实施例仅定义对答案块15进行进一步划分。
步骤305,根据选取的模板输出内容块的内容。
内容块中的内容被划分后,其中的每个内容的类型也确定了。可以预先在模板中指定类型名称,这样在上述流程划分出内容块的内容后(如根据步骤304划分得到的内容块或在此基础上根据步骤305划分得到的更细粒度的内容块),可根据模板中指定的类型,输出该类型的内容,还可进一步输出该类型的名称。例如,模板中指定的需要输出的内容类型为“答案内容”,图1B中的答案内容块152的类型为“答案内容”,因此在划分出类型为“答案内容”的内容块后,可对外直接输出该内容块的内容,以及进一步输出类型名称“答案内容”,从而无需后期分类处理。
上述流程中,DOM树遍历过程中,内容块细分的粒度是通过模板中定义的网页划分粒度匹配条件来控制的,在遍历DOM树的过程中,逐个匹配模板中定义的网页划分粒度匹配条件,从而得到模板所定义的网页划分粒度的内容块。以图1A和图1B所示的网页框架以及对应的模板为例,对于重要的内容块(或称对象),例如类型为“答案”的对象节点(对应答案块15),可在模板中定义需要对该类型的对象节点的下一级节点进行遍历,以便得到该对象节点所包含的更细粒度的对象节点及其类型,如对“答案”类型的对象节点的下一级节点中的类型为“答案内容”、“答案作者”、“答案时间”的对象节点进行遍历;而对于类型为“求助”的对象节点,则可以不再设置需要进一步遍历下一级对象节点的匹配条件。相应的,在根据模板设置的匹配条件遍历DOM树时,可根据设置的匹配条件对答案块15进行进一步的细分,从而抽取出答案内容、答案作者、答案时间;对于不重要的内容块,例如求助块18则可不进行细分,而是将整个求助块18看作一个整体。如果有特殊需要,例如想抽取回答作者的名称,则还可以进一步对答案块15中的答案作者块153进行更进一步的划分,以得到作者名称块1532,从而可输出该块的具体内容(即作者名称)。
通过以上描述可以看出,本发明提出了一种通过配置模板,基于DOM树来精确抽取网页不同类型信息的方法。通过两次遍历DOM树将整个网页不断细分,从而抽取细分后的各部分内容,并能确定其类型。根据需要调整模板配置,不重要的内容可以划分的很粗略,重要的或者有需求的内容可以尽量细分,以做到根据需求精确抽取。
本发明实施例应用到网页搜索过程中,可以使自动抽取效果比较差的站点网页能够比较好的抽取相关信息,可以将抽取的信息做其他的展示,还可以提供打分因子供相关性排序时使用。本发明应用到垂直搜索中,可以实现站点信息的精确抽取,精确判断类型,提高了准确率,方便后期对信息做进一步的加工处理。
以上流程可通过软件编程方式实现,通过软件编程方式实现的用于执行上述流程的网页信息抽取系统的结构可如图4所示,包括:
解析模块401,用于将待抽取网页解析为文档对象模型DOM树;
获取模块402,用于获取与待抽取网页对应的模板;
遍历模块403,用于根据所述模板定义的网页划分粒度遍历所述DOM树,将对应网页划分为内容块;
输出模块404,用于根据所述模板定义的输出规则,将所述内容块的内容和类型信息进行输出。
上述系统中,获取模块402具体用于:获取与待抽取网页的URL对应的模板集合,从所述模板集合中选取与待抽取网页的框架对应的模板。
上述系统中,遍历模块403具体用于:根据所述模板定义的网页划分粒度遍历所述DOM树,将对应网页划分为不同的内容块;根据所述模板定义的网页划分粒度遍历所述DOM树中指定内容块对应的对象节点,将该内容块划分为更细粒度的内容块。进一步的,遍历模块403还可根据所述模板定义的网页划分粒度遍历所述DOM树中所述更细粒度的内容块对应的对象节点,得到所述更细粒度的内容块中包含的内容块。
上述系统中,输出模块404具体用于:据模板定义的内容类型,将划分得到的各类型内容块中相应内容进行输出,并相应输出该内容的类型信息。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。