`
dengqsintyt
  • 浏览: 291579 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

数据挖掘-基于dom树的网页属性抽取方法应用

阅读更多

提纲

     一、简介

     二、应用举例

     三、思想

     四、实现

     五、html-Dom树特征

 

一、简介

       基于Dom树的抽取技术根据html网页所具有的树形层次结构特征来实现html网页中的数据抽取。其系统通常先把html网页结构按照其中的html标签解析成基于Dom树的层次结构,其次通过某种方法把所要抽取的数据定位在Dom树的某个层次位置上,最终通过自动或半自动的方式生成一个相应的规则表达式(regular expression)形式的抽取规则,通过使用规则将数据从网页中抽取出来。利用基于Dom树的数据抽取的准确率和召回率相对很高,但是基于Dom树的抽取系统的输入往往需要相应的若干示例网页,因此适用于各个不同的知识领域。其缺点是天生对结构性的过分依赖,并且网页结构又经常性的发生变化,因此,使得它在应对网页结构变化时比较被动。

在实际应用中,某些抽取系统借鉴基于实体的信息抽取和基于Dom树的信息抽取两种方法,根据这两种方法优缺点的互补性,很多信息抽取系统有机地结合了这两种信息抽取方法,实现了一种自适应的高效的信息抽取系统(adaptive information extraction),如Amorphic信息抽取系统;该系统使用基于位置的信息抽取方法对网页进行处理,得到规则表达式形式的抽取器,并进行信息抽取;一旦遇到网页结构发生变化的情况,通过基于Dom树的方法,自动进行抽取器的恢复与修改,进而增强系统的健壮性。

二、应用举例

从新闻网页中正确识别中文作者,必须解决两个关键问题:一是候选中文作者集合的构建;二是真实中文作者的识别。下面详细描述这两个关键问题的解决思路。

     1.候选中文作者集合的构建

针对此问题,我们可以先抽取出网页文本,然后利用纯文本的中文姓名识别方法,从网页文本中识别出所有中文姓名构成候选中文作者集合。这种做法的主要缺陷在于,新闻网页中可能有很多中文姓名,这将导致最后获得的候选中文作者集合中存在大量的非作者姓名,为进一步的真实作者识别带来很大代价。

我们在解决这个问题时,充分利用了网页结构特征场景,结合文本特征场景和中文姓名特征场景,使得最后获得的候选中文作者集合很小,大大降低了进一步识别真实作者的代价。

以下总结了我们主要使用的场景:

(1)网页结构特征场景:

     新闻网页给浏览者最直接的视觉信息就是新闻标题,而中文作者姓名可能位于新闻标题下方的紧邻区域,如图2.5所示。

 

中文作者姓名可能位于新闻网页中正文的头部或尾部

(2)文本特征场景

中文作者姓名的左右边界可能含有时间特征场景。具体规则描述如下:

      F1= {时间;其他信息;中文作者:XXX | XXX}

       F2= {时间;中文作者:XXX | XXX;其他信息}

       F3= {中文作者:XXX | XXX;时间;其他}

       F4= {中文作者:XXX | XXX;其他;时间}

       F5= {其他;中文作者:XXX | XXX;时间}

       F6= {其他;时间;中文作者:XXX | XXX}

其中: XXX代表真实姓名。

 

中文作者姓名的上下文中可能含有一些特殊字符:空白字符、冒号、“【” 或“[”。

(3)中文姓名特征场景

     借鉴已有的研究成果,在百家姓字典的基础上,我们构建了中文姓氏字典

      中文姓名的字的个数一般不会超过4个

如图:

 


 

我们将按照如下思路构建中文作者候选集合:

A:我们首先在新闻网页中找出包含中文作者的文本片段。有两种情况需要考虑:一种是先从新闻网页中抽取新闻标题,然后利用网页结构特征场景,在标题下方的邻近区域截取可能包含作者的文本片段;另一种情况是先从新闻网页中抽取新闻正文,然后利用网页结构特征场景,在正文头部和尾部截取可能包含作者的文本片段;

B:利用文本特征场景和中文姓名特征场景,我们从可能包含作者的文本片段中抽取出候选作者;

C:最后获得候选中文作者集合。

可见最后获得的中文作者集合与用纯文本的中文姓名识别方法从网页文本中获得的候选作者集合要小得多。

这里需要说明的是,在使用网页结构特征场景时,我们需要利用网页的DOM树结构。DOM(Document Object Model)是文档对象模型,可以提供HTML和XML的应用编程接口。根据W3C DOM规范,DOM是一种与浏览器、平台、语言无关的接口,使用DOM可以访问页面其他的标准组件。DOM将整个页面映射为一个由层次节点构成的文件,可以把DOM认为是页面上数据和结构的树形表示,它允许开发人员在树中导航寻找特定信息。DOM定义了文档的逻辑结构以及存取和维护文档的方法,利用DOM,程序员可以建立文档,遍历文档的结构,还可以增加、删除以及修改文档的元素和内容。图2.7为新闻网页的DOM示意图,图中上半部分是浏览器中看到的新闻网页,图中下半部分是该新闻网页的DOM树结构。其中,对于“作者:钱朱建”,结合上述所说的网页结构特征场景,通过遍历DOM树,我们就很容易抽取出中文作者:钱朱建。

 

 

2.真实中文作者的识别

借鉴基于互信息的中文姓名识别方法,我们从候选中文作者集合中识别出真实作者。

在中文系统自动分词中,中文人名常常被切成单个字或词的碎片。对于中文人名来说,一般由2到4 个字组成, 最多被切成3部分, 比如,“张大顺”被切成“张|大|顺”; 对含有复姓的 4 字人名来说, 复姓一般被切成一个词, 所以最多也是3部分, 如“东方不败”可能被切成 “东方|不|败”; 还有少见的情况是姓名被切成一个单独的词, 如“严宽”、“罗盘”等。根据对中文人名的分析,结合互信息理论,我们引出姓名内部互信息理论。

 

三、思想

      算法一:新闻网页中中文作者位于新闻标题下方的邻近区域

            Step 1 :首先根据DOM树结构确定新闻网页的真实标题,然后利用网页结构特征场景,在标题下方的邻近区域截取可能包含作者的文本片段。

            Step 2 :在Step 1确定的可能包含作者的文本片段的基础上,根据文本特征场景和中文姓名特征场景,从可能包含的作者的文本片段中抽取候选作者集合。

            Step 3 :在Step 2确定候选作者集合的基础上,根据姓名内部互信息确定真实作者。

 

  

      算法2:新闻网页中中文作者位于正文的头部或尾部的邻近区域

            Step 1 :首先根据新闻网页的正文抽取文献抽取新闻正文信息,然后利用网页结构特征场景,截取新闻网页中作者可能出现头部或者尾部邻近区域片段。

            Step 2 :在Step 1确定的新闻正文中可能包含作者的头部或者尾部邻近区域片段的基础上,根据文本特征场景和中文姓名特征场景,从可能包含的作者的文本片段中抽取候选作者集合。

            Step 3 :在Step 2确定候选作者集合的基础上,根据姓名内部互信息确定真实作者。

 

 

四、实现

      1.c++代码实现:通过htmlcxx构建dom实现,给出示例

       HtmlCxx是一款简洁的,非验证式的,用C++编写的css1和html解析器。和其他的几款Html解析器相比,它具有以下的几个特点:

       A:使用由KasperPeeters编写的强大的tree.h库文件,可以实现类似STL的DOM树遍历和导航。

       B:可以通过解析后生成的树,逐字节地重新生成原始文档。

       C:打包好的Css解析器

 

#include <htmlcxx/html/ParserDom.h>
  ...
  
  //Parse some html code
  string html = "<html><body>hey</body></html>";
  HTML::ParserDom parser;
  tree<HTML::Node> dom = parser.parseTree(html);
  
  //Print whole DOM tree
  cout << dom << endl;
  
  //Dump all links in the tree
  tree<HTML::Node>::iterator it = dom.begin();
  tree<HTML::Node>::iterator end = dom.end();
  for (; it != end; ++it)
  {
  	if (it->tagName() == "A")
  	{
  		it->parseAttributes();
  		cout << it->attributes("href");
  	}
  }
  
  //Dump all text of the document
  it = dom.begin();
  end = dom.end();
  for (; it != end; ++it)
  {
  	if ((!it->isTag()) && (!it->isComment()))
  	{
  		cout << it->text();
  	}
  }

 

 

 

      2.Java代码实现:通过htmlPaser构建dom树实现

      网上有很多htmlParser的例子,可查询示例。

 

五、html-Dom树特征

        html的Dom树的重要信息特征:树的层次结构、树的深度、标签特征(标签数量)、文本特征、链接特征(链接数量、链接中的文本长度)、图片大小等

如下几个重要属性的提取:

     编码识别:可以提取header中的charset,如果没有则可以用mozilla的charset探测组件来自动识别。编码建议都转为utf-8。 

       语言识别:可以利用utf-8的中日韩的编码区间来计算字符的分布在哪个语言区间的概率来判别。 

       标题提取和净化:锚文本和title相结合,根据规则截断标题,把“_新闻中心_新浪网”等无意义的去掉,也可以根据相似网页的标题共同部分去掉来截取。 

       日期时间识别:正文区域上下不远的地方,用正则来匹配即可。如果有多个时间,可以取大于某个时间(2000年以后?)离现在最近的但不超过当前时间的时间。 

       图片提取:提取正文区域的大图片链接,图片的介绍文字可以提取图片下方的文字或者图片周围的文字以及标题的文字。 

     链接提取:提取链接最多的块,如果链接+简介+缩略图的HUB页,可以把文字和图片作为权重计算进去。HUB页也是形式多样,难度不比正文提取小

 

  • 大小: 104.8 KB
  • 大小: 145.4 KB
  • 大小: 244.5 KB
  • 大小: 100.3 KB
  • 大小: 88 KB
分享到:
评论

相关推荐

    基于DOM的Web信息自动抽取

    【基于DOM的Web信息自动抽取】是一种在网页数据处理中常用的技术,主要应用于网页内容的解析、抓取和分析。DOM(Document Object Model)是HTML和XML文档的标准表示,它将网页内容组织成一个可编程的节点树结构,...

    基于属性标签的Web数据挖掘.pdf

    基于属性标签的Web数据挖掘是一种专门针对Web页面数据进行有效提取和分析的技术。它通过构建带有属性标签的DOM树来实现,这种方法特别适用于现代Web页面布局,比如Div+CSS布局。 在传统的Web数据挖掘技术中,比较...

    基于Java实现的基于模板的网页结构化信息精准抽取组件。.zip

    在IT领域,网页结构化信息的精准抽取是网络数据挖掘中的关键步骤,它涉及到了网页内容的理解、解析和提取,以便于进一步的数据分析和利用。本项目是一个基于Java实现的基于模板的网页结构化信息抽取组件,其核心目标...

    基于数据元标准与粗糙集的数据挖掘模型研究.pdf

    本篇研究论文探讨了基于数据元标准与粗糙集理论的数据挖掘模型研究。作者郑涛以数据元标准和粗糙集理论为基础,提出了一种新的...这种方法不仅可以提升数据挖掘的效率和精度,而且具有较高的理论价值和广泛的应用前景。

    基于HTMLParser的Web信息抽取系统的设计与实现

    基于HTMLParser的Web信息抽取系统的设计与实现,是一项旨在从网页中自动提取特定信息的技术方案。随着互联网信息的爆炸性增长,如何从海量数据中快速定位到有价值的信息成为了一个亟待解决的问题。传统的HTML页面...

    2021-2022年收藏的精品资料网页正文提取系统的详细设计与实现毕业设计.doc

    (2)核心算法的设计,基于统计特征对DOM树进行分析,过滤噪音数据;(3)系统实现,包括算法的优化和测试。 2.1 基本原理 网页正文提取的基本原理是利用HTML结构特征和统计分析,识别出正文内容所在的节点。这通常...

    基于XML的Web信息采集系统设计与实现.pdf

    该系统通过将类型相似页面的节点信息和字段描述配置于XML文件中,实现了网页对应独立抽取模板的方法。实验结果表明,基于XML的Web信息采集系统能够满足信息抽取的需求。 Web信息采集是指从网页中提取用户感兴趣的...

    易语言-易语言网页正文提取算法

    《基于行块分布函数的通用网页正文抽取算法》是一篇研究论文,提出了一个有效的方法来识别网页正文。 该算法的核心思想是通过分析网页中行块的分布特征来确定正文。HTML文档由许多行块组成,如段落、标题、链接等,...

    jsoup-1.11.3.jar

    在实际应用中,Jsoup广泛用于内容抓取、数据挖掘、自动化测试、网页维护等场景。例如,新闻聚合服务可能利用Jsoup定期抓取各个网站的新闻标题,SEO工具可能用它来检查网站的HTML结构是否符合标准,开发者也可能用它...

    jaxen-1.1.1.zip

    在实际开发中,Jaxen广泛应用于XML数据的处理和解析,尤其是在需要基于XPath进行数据提取和操作的场景下。例如,在Web应用程序中,可以利用Jaxen从服务器响应的XML数据中抽取特定信息,或者在XML配置文件的处理中...

    微博粉丝数据userrelation.json.zip

    《微博粉丝数据的爬虫采集与JSON解析》 在当今数字化时代,社交媒体平台如微博成为了人们获取信息、交流思想的重要...在实际操作中,我们需要不断优化爬虫策略,提高数据质量,同时结合业务需求,挖掘数据的潜在价值。

    Solr~JSOUP.zip

    3. **提取数据**:可以方便地从HTML中提取文本、属性值等数据,适合用于Web抓取或数据挖掘。 4. **清洗HTML**:Jsoup能修复不规范的HTML,确保安全可靠的解析过程。 5. **修改DOM**:除了读取,Jsoup还允许对DOM进行...

    htmlcleaner使用方法及xpath语法初探

    HtmlCleaner常用于数据挖掘、网页抓取、内容分析等场景,特别是在需要处理非标准或包含错误的HTML时,其优势尤为明显。XPath的使用则使我们能够精确地定位到HTML文档中的特定信息,简化了数据抽取的过程。 总结来说...

    uber-cities:收集优步运营所在城市的地理信息

    为了便于数据挖掘和分析,有开发者制作了一个名为“uber-cities”的项目,旨在抓取Uber官网上的城市信息,并以JSON格式存储。本文将详细探讨这个项目背后涉及的技术、流程以及可能的应用场景。 首先,我们要理解的...

Global site tag (gtag.js) - Google Analytics