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

知识抽取-问题和方法

问题分析

知识抽取场景(数据源)

  • (半)结构化文本数据:百科知识中的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。

数据采集实战

参考

东南大学课件

第3章 知识抽取:问题、方法和数据相关推荐

  1. 徐阿衡 | 知识抽取-实体及关系抽取(一)

    本文转载自公众号:徐阿衡. 这一篇是关于知识抽取,整理并补充了上学时的两篇笔记 NLP笔记 - Information Extraction 和 NLP笔记 - Relation Extraction ...

  2. 结构化数据抽取成三元组_干货丨AI在数据防泄漏中的应用——知识图谱之知识抽取...

    随着技术的不断发展,AI(Artificial Intelligence,人工智能)逐渐在社会经济发展的方方面面深入,成为信息化时代最重要的支柱技术之一. 在数据安全领域领域,AI技术所能起到的作用越 ...

  3. 知识图谱学习笔记四(知识抽取与挖掘)

    知识抽取任务以及相关竞赛    知识抽取基本定义 实现自动化构建大规模知识图谱的重要技术.目的在于从不同来源.不同结构的数据中进行知识提取并存储在知识图谱中.    知识抽取子任务 命名实体识别(如: ...

  4. 知识图谱入门 (三) 知识抽取

    欢迎大家关注我的博客 http://pelhans.com/ ,所有文章都会第一时间发布在那里哦~ 本节介绍了针对结构化数据.非结构化数据.半结构化数据的知识抽取方法. 知识抽取的概念 知识抽取,即从 ...

  5. 知识图谱 (2)半结构化数据的知识抽取

    1. 半结构化数据定义 类似于百科.商品列表等那种本身存在一定结构但需要进一步提取整理的数据. 对于一般的有规律的页面,我们可以使用正则表达式的方式写出XPath和CSS选择器表达式来提取网页中的元素 ...

  6. 第二章 知识图谱——机器大脑中的知识库

    原文: http://book.thunlp.org/knowledge_graph/ 第二章 知识图谱--机器大脑中的知识库 Published by  liuzy on July 6, 2015 ...

  7. 【CIPS 2016】(8-10章)信息抽取、情感分析自动文摘 (研究进展、现状趋势)

    CIPS 2016 笔记整理 <中文信息处理发展报告(2016)>是中国中文信息学会召集专家对本领域学科方 向和前沿技术的一次梳理,官方定位是深度科普,旨在向政府.企业.媒体等对中文 信息 ...

  8. 【CIPS 2016】(6-7章)知识图谱、文本分类与聚类(研究进展、现状趋势)

    CIPS 2016 笔记整理 <中文信息处理发展报告(2016)>是中国中文信息学会召集专家对本领域学科方 向和前沿技术的一次梳理,官方定位是深度科普,旨在向政府.企业.媒体等对中文 信息 ...

  9. java头像交互式差分演变_一种基于交互式差分进化计算的用户知识需求获取方法与流程...

    本发明属于知识服务领域,具体涉及一种基于交互式差分进化计算的用户知识需求获取方法. 背景技术: 在多数企业拥有庞大的知识数量和优质的知识资源的情况下,如何利用推送系统将知识主动推送给设计人员以提高企业 ...

最新文章

  1. vSphere vCenter 4.0 安装图解
  2. Spring MVC 搭建web项目示例
  3. VMware推出vRealize,全面加速数字化与混合云的迁移
  4. snakeyaml读取yaml/yml配置文件数据
  5. Arduino--超声波
  6. 卡在登陆界面进不去_穿越火线第十三年:需要的不仅仅是新界面,重要还是留住旧玩家...
  7. MySQL复习资料(八)——MySQL-事务
  8. datetime建立索引有用吗_超全的数据库建表、SQL、索引规范
  9. 7 libjpeg使用
  10. Python3+Selenium3+webdriver学习笔记8(单选、复选框、弹窗处理)
  11. javaWeb项目之新闻管理系统详细开发过程
  12. Python:罗马数字转整数
  13. 【如何让代码变“高级”(二)】-这样操作值得一波666(Java Stream)(这么有趣)
  14. java简历校园经历_简历校园经历如何编
  15. 手把手教你如何自制目标检测框架(从理论到实现)
  16. matlab里面sin函数是角度,matlab-如何用matlab编写sin函数要求定义一 – 手机爱问
  17. Windows7 键盘快捷
  18. c语言的文法,c语言实现First文法
  19. Vue 传值方式——父向子传递数据
  20. php xlsxwrite,PHP_XLSXWriter-轻量级XLSXExcel电子表格库

热门文章

  1. Web实现:单行文本超出省略强制不换行
  2. HX=JE,HX-JE芯片无感升压ic
  3. 2019年Java程序员金三银四跳槽季,机会只留给有准备的人!
  4. 机器人也得不断的练习才学的会 得让机器「理解」对象的特殊之处
  5. 怎么将pdf转换成cad图纸?转换途径说明
  6. 主流浏览器内置http抓包工具使用
  7. wrappers.php,PHP源码阅读笔记六:stream_get_wrappers函数
  8. java组织架构权限_关于权限系统和组织结构
  9. 两个房间 每间房间三盏灯
  10. 计算机毕业设计springboot基于审批流的OA管理系统t4q46源码+系统+程序+lw文档+部署