第三章:知识抽取:问题、方法和数据

知识抽取-问题和方法

问题分析
知识抽取场景(数据源)

  • (半)结构化文本数据:百科知识中的Inforbox、规范的表格、数据库、社交网络、…
  • 非结构化文本数据:网页、新闻、社交媒体、论文、…
  • 多媒体数据:图片、视频


从信息抽取到知识抽取
区别:信息抽取获得结构化数据,知识抽取获得机器学习可理解和处理的知识(知识表示)。

关系:信息抽取建立在信息抽取基础上,都普遍利用到自然语言处理基础、基于规则的包装器和机器学习等技术。

知识抽取例子

知识抽取的挑战

  • 知识的不确定性
  • 知识的不完备性
  • 知识的不一致性


知识抽取场景和方法
面向结构化数据的知识提取
从数据库中抽取知识

  • 抽取原理
  • 表(Table)- 类(Class)
  • 列(Cloumn)- 属性(Property)
  • 行(Row)- 资源/实例(Resource/Instance)
  • 单元(Cell)- 属性值(Property Value)
  • 外键(Foreign Key)- 指代(Reference)


根据上述规则可将关系数据库转为一个知识库。

  • 抽取标准
  • Direct Mapping
  • R2RML

  • 抽取工具
  • D2R, Virtuoso,Orcle SW, Morph等

R2RML 映射语言

– 输入:数据库、视图、Sql查询
– 输出:三元组


面向半结构化数据的知识提取

  • 规模多语言百科知识图谱,维基百科的结构化版本,linked data核心数据集
  • 覆盖127种语言,两千八百万个实体,数亿三元组,支持数据集的完整下载。
  • 固定模式对实体信息进行抽取,包括abstract, infobox, category,page link

YAGO

  • YAGO的百科知识抽取
  • YAGO整合了WikiPedia于Wordnet
  • 覆盖多种语言,1000万个实体,1.2一个三元组
  • 在YAGO2整合了GeoNames,增加了对时空信息的支持
  • 通过对规则实体信息进行抽取的推断

—Infobox启发式规则

  • 人工定义映射规则,将同义属性同义表示 GDP–>HashGDP, Children->HasChild
  • 每个属性定义domain和range,用于进一步推断和清洗
  • 类型推断(Type Heuristics):优先首字母是名词且可数的推断

面向无结构化数据的知识提取

  • 问题
  • 挑战:是当前知识图谱构建的技术瓶颈
  • 关键技术
  • 实体抽取
  • 关系抽取
  • 事件抽取
  • Pipeline的抽取过程会迅速降低知识的质量


实体识别


关系抽取


事件抽取

  • 事件定义:具有时间、地点、参与者等基本元素,可由某个动作触发或者状态改变而发生的一个图结构知识片段。
  • 事件抽取:从数据中抽取事件信息,并以结构化和语义化形式展现,例如事件发生的时间、地点、原因、参与者等

数据获取

知识抽取-数据获取

  • 数据源和数据量是知识图谱完备性的重要保证。
  • 用户往往拥有私有的数据,但知识图谱构建还需要公告的数据支持,而这些数据往往从万维网上获得。
  • 很多半结构化数据、多模态数据分布于万维网,并且具有较好的数据质量,有利益构建大规模高质量领域知识图谱。


数据采集原理和技术

爬虫原理

数据采集一般流程

1.获得目标数据的URL;
2.向对应URL提交HTTP请求;
3.解析HTTP响应;
4.存储解析结果

请求与响应
Requests能做什么?

  • 向目标URL发起不同种类的HTTP请求(GET,POST, DELETE等);
  • 定制HTTP请求的头部,设置User-Agent和Cookie;
  • 使用代理(Proxy)进行请求。
  • 对HTTP响应进行解析,获取状态码和文本字段。


数据解析

  • Beautiful Soup 除了本身自带的解析库外,还可以用来指定解析 HTML文件进行解析,如lxml和html.parser
  • lxml(https://lxml.dev/) 是用C语言编写的HTML和XML解析库。由于lxml的实现非常底层,使得他处理大多数HTML文件的速度非常快。
  • html.parser是python自带的HTML解析器,使用方便、稳定。
  • 在实践过程种,我们遇到过使用lxml在不同操作系统上对同一页面解析结果不一样的情况,推荐使用html.parser。


正则表达式
若一个HTML标签内包含了多个需要抽取字段,可以编写正则表达式模板对该标签内容进行抽取。

多线程并行爬取


爬虫机制应对
多数网站都有反爬虫机制,常见反爬虫机制:

  • 通过验证HTTP请求头的反爬虫机制
  • 基于用户行为的反爬虫机制


反爬机制1原理

  • 每个HTTP请求的头部都会包含一些关于此请求的附加信息,如User-Agent、referer、cookie。绝大多数的网站都会查验User_Agent字段,对不同的User-Agent提供不同的响应

          反爬机机制1应对

  • 第2种机制的应对措施也非常简单,就是在发起HTTP请求时, 在请求头中加入定制的信息。比如在User-Agent字段声明此请求来自一个浏览器Agent或者一百度爬虫Agent。

参考
东南大学课件