互联网中蕴含着大量的数据资源,这些数据存在于html的代码之中,如何从浩瀚的代码中提取有效的数据,针对不同的情况,可以采用多种方法来实现网页数据的提取。

1 手工方法

网页呈现数据的方式,一般都是按照导航页、列表页、详情页进行设计,这就会使得数据展示存在一定的规律,我们找出这种规律,就可以制定相应的规则,来获取数据。比如。京东商城中笔记本的列表页面。

我们想要在该页面提取笔记本的价格数据,则需要对页面的html代码进行分析,获取其html代码,如下所示:

1.1 利用XPath语言

利用其html代码进行数据提取,可以采用XPath语言,XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。XPath被开发者采用来当作小型查询语言。

价格信息的Xpath代码为:

//*[@id=”plist”]/ul/li[5]/div/div[3]/strong

1.2 利用CSS选择器

与之类似的,也可以采用CSS选择器来进行定位笔记本价格,把html代码看作是一个dom树,按照树的层次结构,利用CSS选择器来一层层的定位到价格。该笔记本价格信息的CSS选择器的表达式为:

#plist>ul>li:nth-child(5)>div>div.p-price>strong

2包装器归纳

包装器就是将数据从网页中抽取出来,并将数据还原为结构化数据。包装器归纳是基于有监督学习的,它从标注好的训练样例集合中学习数据抽取规则,用于从其它相同标记或相同网页模板中抽取目标数据。

包装器归纳主要包括网页清洗、网页标注、包装器空间生成、包装器评估、包装器归纳结果等步骤。

2.1 网页清洗

网页清洗主要解决网页代码不规范的问题,比如网页中的标签没有闭合,个别标签使用不规范等,网页结构代码不严谨,就会导致在抽取过程中的噪声,使用一些工具比如Tidy,对网页进行规范化处理,可以在后期的抽取过程中减少噪声的影响。

2.2 网页标注

网页标注就是在网页上标注所需要抽取的数据,标注的过程可以是在需要抽取的数据位置上打上特殊的标签,表示这个数据是需要抽取的。比如,我们前面抽取的笔记本的价格数据,就可以在价格标签上打上特殊符号,将价格信息标记为抽取数据。

2.3 包装器空间的生成

对标注的数据生成XPath集合空间,对生成的集合进行归纳,形成若干个子集。归纳的规则是在子集中的XPath能够覆盖多个标注的数据项,具有一定的泛化能力。

2.4 包装器评估

对包装器进行评估,需要采用一定的标准,主要有两个标准,准确率和召回率。

准确率。将筛选出来的包装器对原先训练的网页进行标注,统计与人工标注的相同项的数量,除以当前标注的总数量。准确率越高评分越高。

召回率。将筛选出来的包装器对原先训练的网页进行标注,统计与人工标注的相同项的数量,除以人工标注的总数量。召回率越高评分越高。

经过前面一系列的步骤之后,得到包装器归纳结果,也就是笔记本最后搜索页面价格信息的XPath路径。

2.5 包装器归纳的简单举例

假如我们的标注信息,同时标注了n1,n2。它们的XPath分别是:

n1的XPath:/html[1]/body[1]/table[1]/tbody[1]/tr[2]/td[1]

n2的XPath:/html[1]/body[1]/table[1]/tbody[1]/tr[3]/td[1]

将其归纳到一个集合,然后泛化后得到的XPath可能有两个:

A: /html[1]/body[1]/table[1]/tbody[1]/tr[3]/td[1];B: //*/td

进行包装器评估:

准确率:包装器A的准确率高于包装器B,则A优于B

召回率:包装器A的召回率和包装器B的召回率一样,则A等于B

综上两个标准比较,选择包装器A。

3 自动抽取

首先来说,网站的数据自动抽取是可行的,因为网站中的数据通常是用很少的一些模板来编码的,通过挖掘多个数据记录中的重复模式来寻找这些模板是可能。其次,自动抽取也能够克服手工方法和包装器归纳的缺陷。手工方法,仅适用于那些较简单网站,工作量不大的情况。有监督的包装器则维护开销会很大,比如网站改变了以后的模板,之前生成的包装器就需要相应的进行修改,才能使用。

网页数据自动抽取的流程如下所示:

对于需要抽取数据的网页,需要进行预处理,也就是网页清洗工作,规范网页代码结构和标签的使用,然后对网页进行聚类处理,通过一定的聚类算法,将特征相近的网页归为一组,然后,根据不同组的聚类网页,训练生成相应的包装器模板,使得每组相似的网页获得一个包装器模板,分别使用不同的包装器模板,对相应的网页进行信息抽取,获取网页中的目标数据,最后,将得到的数据保存到数据库中。

网页信息自动抽取的一个代表就是RoadRunner,它是自动抽取网页数据的包装器,通过比较同类网页的两个样本页面,然后分析两个页面的相似性和不同性,归纳出一个正则文法,然后根据正则文法生成一个网页所包含的数据模式,最后抽取网页的数据。

4 三类网页数据抽取方法的比较

 

手工方法

包装器归纳

自动抽取

优点

1 对于任何一个网页都是通用的,简单快捷;

2 能抽取到用户感兴趣的数据。

1 需要人工标注训练集;

2 能抽取到用户高兴取得数据;

3 可以运用到规模不大网站的信息抽取。

1 无监督的方法,无需人工进行数据的标注;

2 可以运用到大规模网站的信息抽取。

缺点

1 需要对网页数据进行标注,耗费大量的人力

2 维护成本高;

3 无法处理大量站点的情况。

1 可维护性比较差;

2 需要投入大量的人力去做标注。

1需要相似的网页作为输入;

2 抽取的内容可能无法达到预期,会有一些无关信息。

5 结语

网页信息抽取除了使用包装器的方法,目前,使用爬虫技术对网页信息进行爬取也很普遍,这些技术并不是单一的一个技术,都有很多技术点组成,存在着一定的交叉。在实际的使用中,大家可以根据具体的情况,采用相应的技术,或者是多项技术的融合,来达到获取网页信息数据的目的。

本文主要参考王昊奋老师的知识图谱讲座中,关于信息抽取和发掘部分内容进行的整理。

知识图谱学习与实践(7)——网页数据抽取(包装器的使用)相关推荐

  1. 知识图谱学习与实践(4)——通过例句介绍Sparql的使用

    通过例句介绍Sparql的使用 1 简介 SPARQL的定义,是一个递归的定义,为SPARQL Protocal and RDF Query Language,是W3C制定的RDF知识图谱标准查询语言 ...

  2. 知识图谱学习与实践(1)——知识图谱的演化过程

    1 引言 知识图谱是一个包含很多技术内容的知识体系,总的来说,是处理关联的知识,核心是数据,但强调了数据之间的关联关系.简单来看,可以认为是数据库或知识库,和语义网有着千丝万缕的联系.知识图谱是由谷歌 ...

  3. d2rq java,知识图谱学习与实践(6)——从结构化数据进行知识抽取(D2RQ介绍)...

    1 概述 D2RQ,含义是把关系型数据库当作虚拟的RDF图数据库进行访问.D2RQ平台是一个将关系型数据库当作虚拟的.只读的RDF图数据库进行访问的系统.提供了基于RDF访问关系数据库的内容,而无需复 ...

  4. 知识图谱学习与实践(6)——从结构化数据进行知识抽取(D2RQ介绍)

    1 概述 D2RQ,含义是把关系型数据库当作虚拟的RDF图数据库进行访问.D2RQ平台是一个将关系型数据库当作虚拟的.只读的RDF图数据库进行访问的系统.提供了基于RDF访问关系数据库的内容,而无需复 ...

  5. 【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part2):图谱数据准备与导入

    前序文章: [知识图谱]实践篇--基于医疗知识图谱的问答系统实践(Part1):项目介绍与环境准备 背景 前文已经介绍了该系统的环境准备.下面介绍图谱数据获取,数据主要从:http://jib.xyw ...

  6. 【知识图谱】 | 《知识图谱——方法、实践与应用》阅读笔记

    <知识图谱--方法.实践与应用>的阅读笔记 知识图谱--方法.实践与应用 第1章 知识图谱概述 1.1 什么是知识图谱 1.2 知识图谱的发展历史 1.3 知识图谱的价值 1.4 国内外典 ...

  7. 知识图谱学习小组学习大纲

    (这是为北京知识学习小组第一期 kgbj1 准备的为期4周的学习大纲) 2016年6月3日 鲍捷 这个学习小组的目的,不是按教科书的定义去学习"知识图谱",更不是做研究.我们更多是 ...

  8. 知识图谱理论与实践(以问答系统为例)

    2019年的世界顶级自然语言处理大会ACL一次性收录了超30篇高质量知识图谱类论文. 知识图谱是大数据时代知识表示的主要形态之一,是人工智能应用不可或缺的基础资源,自2012年提出至今,受到学术界和产 ...

  9. 新书速递 | 《知识图谱:方法、实践与应用》

    本文转载自公众号:博文视点Broadview . 互联网促成了大数据的集聚,大数据进而促进了人工智能算法的进步.近年来知识图谱作为AI领域底层技术被越来越多的人谈起.知识图谱的升温得益于新数据和新算法 ...

最新文章

  1. swoole实现数据库连接池
  2. R语言CRAN不包含的安装包下载并手动使用RStudio进行安装实战:以下载VRPM包及绘制彩色列线图为例
  3. MySQL高可用之mysql-mmm环境搭建
  4. strrchr 字符查找函数
  5. 台式计算机m9870t,JBT9870_水力测功器最新标准规范(14页)-原创力文档
  6. ABAP performance学习笔记
  7. 模拟滤波器的单位冲激响应+单位阶跃响应+斜坡响应+抛物线响应matlab实现(转载+整理)
  8. 初识MyBatis-Plus
  9. Spring 2 和 JPA 简介
  10. Linux设备驱动——驱动模型
  11. mysql每次查询加流水号_通过SQL自动添加流水号
  12. YOLOv5图像识别显示中文标签
  13. java的list和map区别,list和map的区别是什么
  14. 词干提取算法Porter Stemming Algorithm解读
  15. 小程序中设置全屏背景图
  16. mysql统计每半小时内的数据(查寻某段时间内的数据)
  17. Pandas函数方法分类 参数说明+实例分析!!
  18. 【Matlab】错误使用 classify (line 233) The pooled covariance matrix of TRAINING must be positive definite.
  19. 硬件/操作系统/网络(十二):网络基本概念的知识扫盲
  20. 程序咖:体验沉浸式学习,评测中提升你的职业技能

热门文章

  1. CF3B Lorry
  2. 【CF】3B Lorry
  3. 年后胖三斤,减肥你准备好了吗
  4. OJ 大象喝水及苹果和虫子
  5. 电脑版android版iphone版ipad版,[下载]微软发布iPad版Office iPhone版Android版彻底免费...
  6. centos系统安装中文字体几种方法
  7. 快速学会开发微信小程序教程
  8. Sers微服务架构 初探
  9. Source Insight 4.x完美激活破解安装图文教程
  10. 32位系统加载不了64位的dll。。。是不是没有为此架构安装?