知识抽取方法

2024-08-20 21:32
文章标签 方法 知识 抽取

本文主要是介绍知识抽取方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://pelhans.com/2018/03/16/xiaoxiangkg-note2/

本节介绍了针对结构化数据、非结构化数据、半结构化数据的知识抽取方法。

  • 知识抽取的概念
    • 知识抽取的子任务
  • 面向非结构化数据的知识抽取
    • 实体抽取
    • 实体识别与链接
    • 关系抽取
      • 基于模板的方法
        • 基于触发词的Pattern
        • 基于依存分析的Pattern
      • 监督学习
        • Pipeline训练
        • 联合模型
      • 半监督学习方法
        • 远程监督
    • 事件抽取
      • 事件抽取的pipeline方法
      • 联合训练
      • 基于深度学习的事件抽取方法
  • 面向结构化数据的知识抽取
  • 面向半结构化数据的知识抽取
    • 百科类知识抽取
    • Web网页数据抽取:包装器生成
      • 包装器归纳
      • 自动抽取
  • Ref

知识抽取的概念

知识抽取,即从不同来源、不同结构的数据中进行知识提取,形成知识(结构化数据)存入到知识图谱。大体的任务分类与对应技术如下图所示:

知识抽取的子任务

  • 命名实体识别
    • 检测: 北京是忙碌的城市。 [北京]: 实体
    • 分类:北京是忙碌的城市。 [北京]: 地名
  • 术语抽取 
    从语料中发现多个单词组成的相关术语。
  • 关系抽取 
    王思聪是万达集团董事长王健林的独子。 →  [王健林] <父子关系> [王思聪]
  • 事件抽取 
    例如从一篇新闻报道中抽取出事件发生是触发词、时间、地点等信息,如图二所示。
  • 共指消解 
    弄清楚在一句话中的代词的指代对象。例子如图三所示。

P3

面向非结构化数据的知识抽取

实体抽取

实体抽取抽取文本中的原子信息元素,通常包含任命、组织/机构名、地理位置、时间/日期、字符值等标签,具体的标签定义可根据任务不同而调整。如:

单纯的实体抽取可作为一个序列标注问题,因此可以使用机器学习中的HMM、CRF、神经网络等方法解决。

实体识别与链接

实体识别即识别出句子或文本中的实体,链接就是将该实体与知识库中的对应实体进行链接。其中涉及到了实体的识别与消岐技术。实体识别技术刚刚介绍过,下面把重点放在实体链接部分。

实体链接的流程如下图所示:

文字表述为,首先输入的是非结构化的文本数据,经由命名实体识别或词典匹配技术进行实体的指称识别。由于刚刚识别出来的实体可能是实体的部分表示或另类表示,因此需要结束表层名字扩展、搜索引擎、构建查询实体引用表等技术来对候选实体进行生成。经过该步骤生成的实体可能有多个候选项,因此需要对候选实体进行消岐,此处可使用基于图的方法、基于概率生成模型、基于主题模型或基于深度学习的方法。经过实体消岐后得到的唯一实体候选后就可以与知识库中的实体进行连接了。

举个例子:

关系抽取

关系抽取是从文本中抽取出两个或多个实体之间的语义关系。它是信息抽取研究领域的任务之一。如:

  • 王健林谈儿子王思聪:我期望他稳重一点。
    • 父子 (王健林, 王思聪)

根据关系抽取方法的不同,可以将其分为:基于模板的方法(触发词的Pattern, 依存句法分析的Pattern)、基于监督学习的方法(机器学习方法)、弱监督学习的方法(远程监督、Bootstrapping)。

基于模板的方法

基于模板的方法在小规模数据集上容易实现且构建简单,缺点为难以维护、可移植性差、模板有可能需要专家构建。

基于触发词的Pattern

首先定义一套种子模板,如:

其中的触发词为老婆、妻子、配偶等。根据这些触发词找出夫妻关系这种关系,同时通过命名实体识别给出关系的参与方。

基于依存分析的Pattern

以动词为起点,构建规则,对节点上的词性和边上的依存关系进行限定。一般情况下是形容词+名字或动宾短语等情况,因此相当于以动词为中心结构做的Pattern。其执行流程为:

监督学习

在给定实体对的情况下,根据句子上下文对实体关系进行预测,执行流程为:

  • 预先定义好关系的类别。
  • 人工标注一些数据。
  • 设计特征表示。
  • 选择一个分类方法。(SVM、NN、朴素贝叶斯)
  • 评估方法。

其优点为准确率高,标注的数据越多越准确。缺点为标注数据的成本太高,不能扩展新的关系。

Pipeline训练

即识别实体和关系分类是完全分离的两个过程,不会相互影响,关系的识别依赖于实体识别的效果,这样的好处的各模型相互独立,设计上较为容易,但误差会逐层传递,步骤太多有可能导致后续不可用。

联合模型

将实体识别和关系分类一起做,在一个模型中完成。

半监督学习方法

前面的监督学习效果虽好,但有标注数据集的获取困难。因此可以借助半监督学习的方法,此处又分为远程监督学习和Bootstrapping方法两种。

所谓远程监督方法就是知识库与非结构化文本对齐来自动构建大量训练数据,减少模型对人工标注数据的依赖,增强模型跨领域适应能力。Bootstrapping是通过在文本中匹配实体对和表达关系短语模式,寻找和发现新的潜在关系三元组。

远程监督

该方法认为若两个实体如果在知识库中存在某种关系,则包含该两个实体的非结构化句子均能表示出这种关系。如在某知识库中存在“创始人(乔布斯,苹果公司)”。那么就认为出现乔布斯和苹果公司的句子就是表述创始人这项关系。因此可构建训练正例:乔布斯是苹果公司的联合创始人和CEO。

远程监督流程为:

  • 从知识库中抽取存在关系的实体对。
  • 从非结构化文本中抽取含有实体对的句子作为训练样例。

远程监督可以利用丰富的知识库信息,减少一定的人工标注,但它的假设过于肯定,如乔布斯被赶出苹果公司。这句话表达的就不是创始人的例子,因此会引入大量的噪声,存在语义漂移现象。同时由于是在知识库中抽取存在的实体关系对,因此很难发现新的关系。

#### Bootstrapping

这个方法在很多任务中都有提到,其执行流程为:

  • 1.从文档中抽取出包含种子实体的新闻,如:
    • 姚明老婆 叶莉 简历身高曝光 
      X 老婆 Y 简历身高曝光
    • 姚明 与妻子 叶莉 外出赴约 
      X 与妻子 Y 外出赴约
    1. 将抽取出的Pattern去文档集中匹配
      • 小猪 与妻子 伊万 外出赴约
    1. 根据Pattern抽取出的新文档如种子库,迭代多轮直到不符合条件

该方法的优点为构建成本低,适合大规模的构建,同时还可以发现新的(隐含的)关系。缺点为对初始给定的种子集敏感,存在语义漂移现象,结果的准确率较低等。

事件抽取

从自然语言中抽取出用户感兴趣的事件信息,并以结构化的形式呈现出来,例如事件发生的时间、地点、发生原因、参与者等。如:

时间抽取任务最基础的部分包括:

  • 识别事件触发词及事件类型
  • 抽取事件元素同时判断其角色
  • 抽出描述事件的词组或句子

此外,事件抽取任务还包括:

  • 事件属性标注
  • 事件共指消解

对于事件抽取,也可分为Pipeline方法和联合训练的方法。

事件抽取的pipeline方法

有监督的事件抽取方法的标准流程一种pipeline的方法,将事件抽取任务转化为多阶段的分类问题,需要的分类器包括:

  • 事件触发次分类器(Trigger Classifier)
    • 用于判断词汇是否是是事件触发词,以及事件的类别
  • 元素分类器(Argument Classifier)
    • 判别词组是否是事件的元素
  • 元素角色分类器(Role Classifier)
    • 判定元素的角色类别
  • 属性分类器(attribute classifier)
    • 判定事件的属性
  • 可报告性分类器(Reportable-Event Classifier)
    • 判定是否存在值得报告的事件实例

可以看到,这个流程还是蛮长的,因此Pipeline存在的误差传递问题在这里格外严重,因此我们需要联合训练:

联合训练

基于深度学习的事件抽取方法

传统的方法需要借助外部NLP工具,还需要人工设计特征,但深度学习可以自动提取句子特征,减少对外部NLP工具的依赖。

下图给出一个典型的基于动态多池化卷积神经网络的事件抽取方法:

面向结构化数据的知识抽取

所谓结构化数据就是指类似于关系库中表格那种形式的数据,他们往往各项之间存在明确的关系名称和对应关系。因此我们可以简单的将其转化为RDF或其他形式的知识库内容。一种常用的W3C推荐的映射语言是R2RML(RDB2RDF)。一种映射结果如下图所示:

现有的工具免费的有D2R,Virtuoso、MOrph等。

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

半结构化数据是指类似于百科、商品列表等那种本身存在一定结构但需要进一步提取整理的数据。

百科类知识抽取

对于百科类数据我们都较为熟悉,下面着重介绍怎么从百科里抽取知识:

上图给出从百科里抽取知识的流程介绍。(待补)

Web网页数据抽取:包装器生成

现在我们的目标网站是部分结构化的,如:

包装器是一个能够将数据从HTML网页中抽取出来,并且将它们还原为结构化的数据的软件程序。使用它提取信息流程为:

包装器归纳

对于一般的有规律的页面,我们可以使用正则表达式的方式写出XPath和CSS选择器表达式来提取网页中的元素。但这样的通用性很差,因此也可以通过包装器归纳这种基于有监督学习的方法,自动的从标注好的训练样例集合中学习数据抽取规则,用于从其他相同标记或相同网页模板抽取目标数据。其运行流程为:

自动抽取

对于监督学习我们知道标注数据是它的短板,因此我们想到自动抽取的方法。网站中的数据通常是用很少的一些模板来编码的,通过挖掘多个数据记录中的重复模式来寻找这些模板是可能的。自动抽取的流程如图所示:

Ref

王昊奋知识图谱教程


这篇关于知识抽取方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091228

相关文章

Window Server2016加入AD域的方法步骤

《WindowServer2016加入AD域的方法步骤》:本文主要介绍WindowServer2016加入AD域的方法步骤,包括配置DNS、检测ping通、更改计算机域、输入账号密码、重启服务... 目录一、 准备条件二、配置ServerB加入ServerA的AD域(test.ly)三、查看加入AD域后的变

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

Python中使用defaultdict和Counter的方法

《Python中使用defaultdict和Counter的方法》本文深入探讨了Python中的两个强大工具——defaultdict和Counter,并详细介绍了它们的工作原理、应用场景以及在实际编... 目录引言defaultdict的深入应用什么是defaultdictdefaultdict的工作原理

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j