目前,本体一直是知识图谱落地过程中的容易受到抨击的点,很多非专业用户对图谱的需求,其实并不想花费大量的时间去做本体约束,而是想直接拿来就用,开箱即用,以达到搜索与分析等目的。对本体的强专业性门槛,直接导致了知识图谱构建平台面临着很实实在在的采购困境。
因此,关于无本体约束的开放知识图谱构建这个话题就会被提出来,例如几年来风靡一时的magi等,其使用体验让人耳目一新(技术上很有挑战,落地模式上还有很漫长的路)。
因此,带着开放信息抽取这一问题,本文以以OpenIE为代表的开放信息抽取项目技术方案解读,供大家参考。
问题的提出
开放信息抽取是开放知识图谱构建的一个重要组成部分,在这方面的工作中,OpenIE是一个典型代表。
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)是导致自杀的罪魁祸首。
进一步的,针对某个特定原因,还给出了支撑性的可信来源,例如: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上下位抽取模式:
如上表所示,模板 “NP1如NPList2 “可抽取上下位信息,NPList2中每个简单名词短语(NP)都是NP1的具体实例,NP1是一个实体类别。
例如,给定句子: “我们提供巴黎、尼斯和蒙特卡洛等城市的旅游”,
可提取出三个类别为城市的实例: “巴黎”、“尼斯”和“蒙特卡洛”
2、实例关系模板的生成
基于模板对特定的类别进行模板实例化和关键词keywords,并添加语法约束,例如抽取的NP1、NP2等必须是简单名词短语(一个名词前面有零个或多个修饰词), NPList1、NPList等也必须是简单名词短语集合。
对于上述规则,如果要识别一个名为country的关系类别,则将“country”替换Class1,成为country类别的识别规则,并将规则中的字母序列作为关键词集合,变为”countries such as” ,如下:
同样的,如果在已知元组中两个元素的情况下,而试图抽取另一个元素时,则可以进一步生成二元规则。
例如,针对”x plays for Seattle Mariners”这个二元关系进行提取时,将Seattle Mariners绑定到一个SportsTeam的实例以及加入到关键词集合当中:
3、基于搜索引擎接口的实例扩充
为了扩大知识抽取的数据来源,KnowItAll针对特定类别提取规则中的关键词自动自动构造查询语句,向Google、Alta Vista、Fast等搜索引擎中发出请求进行搜索,如以 “cities such as”为关键词查询,可以返回大量包含该关键词的句子集合,例如下图以微软必应搜索的返回结果。
提取器针对返回的结果,使用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已经有性能上的提升,但它只能处理有限的句子结构,用浅层句法处理方法来识别以动词开始以及出现在参数短语之间的关系短语,并将关系限制在动词模式的子集上。
这种方法只对一个句子进行局部分析,忽略了整体的上下文信息,所以提取的关系往往不是在句子中被明确真实表述的事实关系。
因此,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,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
原文始发于微信公众号(老刘说NLP):无本体约束的开放知识图谱构建:以OpenIE为代表的开放信息抽取项目技术方案解读