图谱实战 | 无本体约束的开放知识图谱构建:以OpenIE为代表的开放信息抽取项目技术方案解读...

目前,本体一直是知识图谱落地过程中的容易受到抨击的点,很多非专业用户对图谱的需求,其实并不想花费大量的时间去做本体约束,而是想直接拿来就用,开箱即用,以达到搜索与分析等目的。对本体的强专业性门槛,直接导致了知识图谱构建平台面临着很实实在在的采购困境。

因此,关于无本体约束的开放知识图谱构建这个话题就会被提出来,例如几年来风靡一时的magi等,其使用体验让人耳目一新(技术上很有挑战,落地模式上还有很漫长的路)。

因此,带着开放信息抽取这一问题,本文以以OpenIE为代表的开放信息抽取项目技术方案解读,供大家参考。

问题的提出

开放信息抽取是开放知识图谱构建的一个重要组成部分,在这方面的工作中,OpenIE是一个典型代表。

698b0fbc79369d8e42596df9b88fd81d.png

OpenIE是一个由华盛顿大学研发的开放信息抽取系统,面向开放文本,并提取大量的关系元组(Arg1, Pred, Arg2),而不需要任何特定关系的训练数据,例如,给定句子:

McCain fought hard against Obama, but finally lost the election

Open IE系统可以从中提取出两个元组:

<McCain, fought against, Obama>

<McCain, lost, the election>

此外,该系统还为每一个抽取结果进行了统计,例如,在系统中输入导致自杀的原因是什么时候,指定relation为cause,arugument为suicide,可以在左侧直接得到原因及其出现的频次,21 answers from 197 sentences

Untreated depression (38)、Depression (mood) (38)、the blast (20)、the explosion (19)、Death (17)、the drugs (13)、the root (12)、Antidepressant (9)、Adderall (5)、OH (4)、Great Depression (2)、Borderline personality disorder (2)、the acne medicine (2)、Idea (2)、Methylphenidate (2)、our understanding (2)、Major depressive disorder (2)、Those letters (2)、the government (2)、Sertraline (2)。

从中可以看到,未经治疗的抑郁症(Untreated depression)是导致自杀的罪魁祸首。

8b01738945807fed95907b555a24e397.png进一步的,针对某个特定原因,还给出了支撑性的可信来源,例如:Untreated depression这一结果,来源句子: Untreated depression is the number one cause for suicide , but bipolar disorder is a close second。

该句子的来源网站: http://www.peteearley.com/2010/03/07/making-a-difference-crisislink-benefit/

这也成为前几年火热的magi搜索思想的一个重要来源。

OpenIE知识库项目从2007年启动,逐年不段更新,自发布以来经历了多个版本:

2004年,华盛顿大学发布了第一OpenIE系统-基于模板的knowitall;

2007年发布OpenIE系统TextRunner;

2010年发布第二个版本Reverb;

2014年发布第四个版本OpenIE4.0,采用基于语义分析的抽取方法,并同时抽取时间和空间信息;

2016年至今,为第五个版本OpenIE5.0,支持符合名词性短语、数字和列表等信息的抽取。

本文围绕着OpenIE这一项目的几个版本系统进行介绍,从中我们可以看到基于规则的方法在信息抽取中的强大作用,以及整个系统逐步完善的整个过程,希望给大家带来一定的启发。

一、OpenIE1.0:KnowItAll

2004年,华盛顿大学发布了第一个openie系统knowitall,利用可扩展的本体和少量的通用规则模板种子,为预定义类别和关系生成提取模板

1、 KnowItAll的构成

该系统包括提取器(Extractor)、搜索引擎接口(Search Engine Interface)、以及概率评估器(Probabilistic Assessment)三个基本组件。

其中,在提取器中,KNOWITALL从一组通用的、独立于领域的模板中为每个类和关系实例制定一套提取规则,如经典的Marti Hears上下位抽取模式:

8f25c367e4ccb68209e545ded17109f8.png

如上表所示,模板 "NP1如NPList2 "可抽取上下位信息,NPList2中每个简单名词短语(NP)都是NP1的具体实例,NP1是一个实体类别。

例如,给定句子: "我们提供巴黎、尼斯和蒙特卡洛等城市的旅游",

可提取出三个类别为城市的实例: “巴黎”、“尼斯”和“蒙特卡洛”

2、实例关系模板的生成

基于模板对特定的类别进行模板实例化和关键词keywords,并添加语法约束,例如抽取的NP1、NP2等必须是简单名词短语(一个名词前面有零个或多个修饰词), NPList1、NPList等也必须是简单名词短语集合。

5d6afe118aae2c7afb251f8401c545ca.png

对于上述规则,如果要识别一个名为country的关系类别,则将“country”替换Class1,成为country类别的识别规则,并将规则中的字母序列作为关键词集合,变为"countries such as" ,如下:

120dd7f0339972a32fcf4a7121ef3e9c.png

同样的,如果在已知元组中两个元素的情况下,而试图抽取另一个元素时,则可以进一步生成二元规则。

例如,针对"x plays for Seattle Mariners"这个二元关系进行提取时,将Seattle Mariners绑定到一个SportsTeam的实例以及加入到关键词集合当中:

d73665e63671a5fc33bf4a966b9223ef.png

3、基于搜索引擎接口的实例扩充

为了扩大知识抽取的数据来源,KnowItAll针对特定类别提取规则中的关键词自动自动构造查询语句,向Google、Alta Vista、Fast等搜索引擎中发出请求进行搜索,如以 "cities such as"为关键词查询,可以返回大量包含该关键词的句子集合,例如下图以微软必应搜索的返回结果。

d35b021f57dd43414390ebabfd7f6ae4.png

提取器针对返回的结果,使用Brill tagger进行词性标注和名词短语识别,依照上面所述的规则进行匹配和规则约束提取。

4、基于概率评估器的三元组置信度评估

由于抽取出来的结果包含大量的噪声,因此需要针对提取的结果进行置信度估计。

有意思的是,KnowItAll认为,假设“Cuba Gooding”是一个演员,那么在通常情况下,"Cuba Gooding starred in "这个短语在网络出现次数会比其他短语更多,其中的判别词相当于关系的显式标记词。

因此,"Cuba Gooding starred in "中,"X starred in "就是一个辨别词组的模式,这个模式可以通过预先定义好的抽取规则进行自动生成

概率评估器利用搜索引擎查询判别词的方式,将查询返回的数量来作为共现次数,在此基础上通过计算提取结果和一组判别词的共现次数或者点间互信息PMI值来作为提取结果成立的一个重要特征,选择朴素贝叶斯网络来进行二分类。

由于贝叶斯概率是基于观察样本估计出来的,需要一个足够大的训练集来估计给定类别下特征出现的概率。因此,Knowitall采用了基于Bootstrapping的方法来构造正负样例:

首先从通用规则模板中为每个关系实例化一组提取规则,并通过搜索引擎进行查询统计PMI信息,同时从规则的关键词短语和类名中生成一组判别词短语,并反复执行如下操作:

步骤1、为每个关系类别找到200个实例,利用通用判别器短语上找到20个PMI较高的种子作为正样本;

步骤2、在所有通用判别器短语上找到20个PMI较高的种子作为正样本;使用这些正样本种子来训练多个判别器;

步骤3、选择5个最好的判别器,并在这5个判别器上找到一组新的高PMI的种子。

5)知识提取数据的存储

在经过模板定义、搜索引擎查询、规则抽取以及贝叶斯分类之后,Knowitall可以得到大量的三元组数据,并将包括三元组元数据,支撑的证据,以及置信度在内的数据存储在关系型数据库RDBMS中,其中的支撑证据很有意思,具备结果的解释性。

二、OpenIE1.0:TextRunner

2007年,华盛顿大学发布了TextRunner,该系统基于宾夕法尼亚州树库中启发式生成的例子作为训练集,使用非词汇化词性和NP短语特征作为特征,并使用朴素贝叶斯模型(后续采用线性CRF与马尔可夫网络)进行训练来抽取知识

1、TEXTRUNNER的构成

TEXTRUNNER由自监督学习器(Self-Supervised Learner)、单步抽取器(Single-Pass Extractor)以及基于冗余的评估器(Redundancy-Based Assessor)这三个重要部件构成。

2、自监督学习器 自监督学习器通过构造训练数据集,学习一个贝叶斯分类器,来判断给定三元组是否可信。具体地:

1)先对数据集进行语法解析。 解析句子中的名词短语,并将名词短语作为可能的实体,两个名词短语之间的词语作为关系,构成三元组候选集合;

2)使用约束来构造正负样本。 例如,若两个实体之间存在依赖路径并且路径小于一定的值,两个实体都不是代词时,将该数据作为正样本;

3)构造特征训练分类起。 如三元组中的字符个数、停用词个数、头实体左边的词性、尾实体右边的词性等特征,并数值化,训练贝叶斯分类器;

3、单步抽取器

单步抽取器针对输入一句话,进行词性标注和名词短语识别,识别名词短语之间的词语作为关系表示,使用分类器进行分类,判别这个三元组候选是否可信;

4、冗余评估器

冗余的评估器通过启发式的规则对关系短语进行归一化,比如去除不必要的修饰词语,如去除was originally developed by 中的副词,originally形成was developed by 作为的规范化形式,并计算三元组在不同句子中的频次,通过设定阈值,保留高频词的结果作为最终结果。

三、OpenIE2.0:Reverb

为了弥补TextRunner系统中出现的不连贯问题,学习的提取器对是否在关系短语中包含每个词做出了一系列的决定,会导致不可理解的关系短语,2010年,华盛顿大学发布了第二个版本Reverb,采用基于词性标注的关系抽取方式。

1、Reverb的构成

Reverb使用OpenNLP对原始句子进行词性标注和组块识别,先后完成关系抽取和论元抽取两个阶段。

在关系抽取阶段,对句子中的每一个动词,找出满足该序列以动词开头,并同时满足句法约束和词法约束,如果任何一对匹配在句子中相邻或重叠,则将它们合并为一个匹配,形成关系短语集合;

论元抽取阶段,针对关系短语集合中的每个关系短语,在句子中找到离该关系短语最近的名词短语,并满足使该名词短语不是相对代词、疑问词(以WH开头)活着存在性名词(比如there)。如果能找到这样的名词短语对,则作为提取结果返回。

2、Reverb的句法约束

Reverb提出了基于动词的关系短语抽取模型,并同时设计了句法约束和词法约束两个约束条件。句法约束通过定义句法模版(词性模式)来完成,例如:

V = verb particle? adv?  
W =(noun|adj|adv|pron|det)  
P = (prep|particle|inf. marker)

该词性模式将关系短语限制为简单的动词短语、紧跟在动词短语后面的介词或小品词(与动词构成短语动词的副词或介词)、或者动词短语后接简单的名词短语,并以介词或小品词结尾的词语序列。

句法约束要求关系短语必须与上述POS标签模式相匹配,如果一个动词在一个句子中有多个可能的匹配,则选择可能最长的匹配结果,如果模式匹配多个相邻序列,则将它们合并成一个关系短语。这种细化使模型能够轻松处理包含多个动词的关系短语,并且满足短语构成的连续性。

四、OpenIE3.0:OLLIE

与第一个版本TextRunner相比,Reverb已经有性能上的提升,但它只能处理有限的句子结构,用浅层句法处理方法来识别以动词开始以及出现在参数短语之间的关系短语,并将关系限制在动词模式的子集上

这种方法只对一个句子进行局部分析,忽略了整体的上下文信息,所以提取的关系往往不是在句子中被明确真实表述的事实关系。

734ce243631a1a8281e1b6e5542d81c2.png

因此,2012年发布第三个版本OLLIE,试图扩大关系短语的句法范围以覆盖更多的关系表达,并使得抽取出来的三元组形式允许有额外的上下文信息(如包括修饰词)。

1、OLLIE的构成

在实现上,如上图所示,OLLIE使用一组来自REVERB的高精度种子元组,利用bootstraaping的方法来构造一个大型训练集,并在此基础上训练并应用抽取模板集合。

2、关系模式的获取

在抽取模版的构造上,OLLIE使用了依存句法分析,与词法模版十分不同,考虑了词语之间的依存关系,使得提取的知识关系进一步明确,通过在语料中进行统计,并设计相应规则,可以取频次较高的模式作为开放模式集合。具体地,关系模式的获取经历了收集、标注、检测、泛化等几个步骤:

步骤1:模式实例的收集。 对包含三元组的句子进行依存关系分析,获得arguments和relation词语的依存路径;

步骤2:关系模式的标注。 首先,对关系节点进行标注,注明关系词语(作为词法限制)和词性(作为词性限制);接着创建关系模式,通过将“is”等词归一化成 “be”,同时将关系词语替换成为{rel};

步骤3:关系模式的检测。 对关系模式进行句法检测,以判定句法模式的成立性,例如,路径上没有没有槽节点,关系词语在arg1和ar2中间等。如果通过检测,那么就是一个句法模式,可以作为一个模式,否则还需要进行语义和句法上的检测,才可以作为一个模式;

步骤4:关系模式的泛化。 为了使关系模式更具有一般性,需要去除路径中的某些非通用成分,以提升泛化能力。例如去掉所有关系节点的词义限制、将所有介词边转换为抽象的 {prep ∗} 边、用 {prep} 替换提取模板中的特定介词。如此一来,对于给定的三元组

(Godse; kill; Gandhi)

其依存路径可能是:

{Godse}↑nsubj↑{kill:postag=VBD}↓dobj↓{Gandhi},

经过处理后,形成泛化模式为:

{arg1}↑nsubj↑{rel:postag=VBD}↓dobj↓{arg2}。

3、基于关系模式的抽取

在构建好开放模式之后,则可以实时提取时,先对句子进行依存句法分析,并将结果将开放模式与句子的依赖性解析进行匹配,并确定参数和关系的基本节点。然后我们扩展这些来传达与提取相关的所有信息,例如:给定句子:

“I learned that the 2012 Sasquatch music festival is scheduled for May 25th until May 28th.”,

经过依存句法分析后可以得到如右图所示的结果,通过匹配后命中模式:

{arg1}↑nsubjpass↑ {rel:postag=VBN} ↓{prep ∗}↓ {arg2}

先将arg1匹配到'festival',rel匹配到'scheduled',并用prep'for'匹配到arg2' 25th',得到(festival, be scheduled for, 25th)的知识元组信息。

为了得到更好的知识信息,再利用amod, nn, det等标签进行词语成分的扩充,如:

”25th”变成“May 25th”,

“ festival”变成“the 2012 Sasquatch music festival”,

最后得到的三元组变为:

(the Sasquatch music fes-tival; be scheduled for; May 25th)。

五、总结

开放域抽取的特点是不限定关系类别、不限定目标文本,难点在于如何获取训练语料、如何获取实体关系类别、如何针对不同类型目标文本抽取关系。

由华盛顿大学研发的开放信息抽取系统OPENIE从2007年启动,到现在已经发布了第五个版本,从其中每个版本迭代中所体现出来的算法升级,可以看到整个系统不断完善。

本文围绕着OpenIE这一项目的几个版本系统进行介绍,从中我们可以看到基于规则的方法在信息抽取中的强大作用,以及整个系统逐步完善的整个过程,希望给大家带来一定的启发。

知识可信与来源实证是解决当前知识图谱数据不准确的一个重要解决形式,关于这一点,我们可以多多思考。

参考文献

1、https://openie.allenai.org/

2、http://reverb.cs.washington.edu

3、http://turing.cs.washington.edu/papers/ijcai07.pdf

4、https://github.com/knowitall/openie/

关于老刘

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

就职于360人工智能研究院、曾就职于中国科学院软件研究所。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

6ee9df7bebf4e7ac1323b828e1728856.png

点击阅读原文,进入 OpenKG 网站。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 基于BERT事件抽取构建活动知识图谱python源码+项目说明.zip 主要思路: 这是一个基于深度学习的事件抽取。将任务分割为触发词抽取,论元抽取,属性抽取。具体而言是论元和属性的抽取结果依赖于触发词,因此只有一步误差传播。因 time loc 并非每个句子中都存在,并且分布较为稀疏,因此将 time & loc 与 sub & obj 的抽取分开(role1 提取 sub & obj;role2 提取 time & loc) 模型先进行触发词提取,由于数据集的特殊性,模型限制抽取的事件仅有一个,如果抽取出多个触发词,选择 logits 最大的 trigger 作为该句子的触发词,如果没有抽取触发词,筛选整个句子的 logits,取 argmax 来获取触发词; 然后根据触发词抽取模型抽取的触发词,分别输入到 role1 & role2 & attribution 模型中,进行后序的论元提取和属性分类;四种模型都是基于 Roberta-wwm 进行实验,加入了不同的特征。 最后将识别的结果进行整合,得到提交文件。 三、四见pdf 五、项目优缺点 优点: 1、舍弃CRF结构,采用指针式解码的方案,并利用trigger字典。如果未解码出trigger,则比较句子中匹配知识库的所有distant trigger 的 start + end logits,选取最大的一个作为解码出的 trigger 2、具体而言是论元和属性的抽取结果依赖于触发词,因此只有一步误差传播。 3、根据数据的特征,限制解码输出一个trigger,如果解码出多个trigger,选取 logits 最大的那个trigger作为候选trigger 4、根据数据的特点,发现绝大数都有触发词,故采用trigger左右两端动态池化特征作为全局特征; 5、因 time loc 并非每个句子中都存在,并且分布较为稀疏,将 time & loc 和 subject & object 的提取分开,采用两个独立的模型进行提取。 6、由于样本类别不均极其严重,采用10折交叉验证的方法来提升模型的泛化性能。 缺点: 1、因为测试集中的数据不是每一个都带时间和地点,所以时间和地点抽取效果不是很好,如一个句子里存在两个时间,只能抽取前面的时间,但比赛数据的测试集只有一个时间效果很好,只有两条数据集有地点; 2、由于测试集部分数据的trigger词在后面,sub和obj识别顺序会颠倒; 3、特殊测试集trigger与数据集trigger库不一致情况下,无法抽取trigger,但可以在trigger字典库中手动添加 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
【资源说明】 python基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zippython基于wikipedia数据的装备领域文本抽取与知识图谱构建-SPN模型部分.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值