转载公众号| 老刘说NLP
最近社区抛出一个关于开放知识抽取的话题,也是当前知识图谱构建的一个热点,希望能够介绍相关的工作,而在之前也做过一些工作,借着这个机会,写一篇文章,来跟大家谈谈这个问题。
开放知识抽取是目前比较有趣的问题,在前面的文章《知识图谱构建:以OpenIE为代表的开放信息抽取项目技术方案解读》中,我们围绕着OpenIE这一项目的几个版本系统进行介绍,从中我们可以看到基于规则的方法在信息抽取中的强大作用,以及整个系统逐步完善的整个过程,如下图是关于opnie的一个例子。
不过,就封闭域知识抽取与开放知识抽取而言,其在实现方式、落地价值上存在着差异性,就开放域抽取而言,特点是不限定关系类别、不限定目标文本,难点在于如何获取训练语料、如何获取实体关系类别、如何针对不同类型目标文本抽取关系。
因此,带着这些问题,我们先介绍从封闭域知识抽取和开放知识抽取的异同进行对比,然后介绍目前开放知识抽取的主流做法,包括基于规则的,基于生成的、基于序列标注的以及基于分类的,供大家一起参考。
一般而言,在进行知识抽取时候,我们所看到的,能够较好建模以及应用的,都是限定关系抽取。
为什么,因为对于任何一个抽取任务,其问题的确定性越高,越容易界定为科学性的可评估的量化性越大,其优化目标就越可能被明确,以此带来的落地价值,学术发文价值就越高。
正如我们所了解的,实体识别ner,实体关系抽取任务re,以及事件抽取任务ee,都是在预定义schema的范畴下进行的,先定义好实体类型,实体关系/属性类型,以及事件要素,然后采用基于规则、基于模型的方法来进行训练预测,能够很清晰快速的推进,虽然这个过程是很不灵活的,并且定义规范的schema并非易事,所以越来越多的场景会需要我们针对给定的随意文本,抽取出其中的知识元组,也就是开放知识抽取。
开放抽取,与上面说的限定域抽取,最大的价值在于海量、起量快,在没有约束的情况下,可以快速生成大量有意义的知识,但没有约束也就成为这种方法在后期管理上较难问题的根源。
我们为什么要进行按照限定schema进行抽取,是因为我们预定定义好后,就可以直接入库,直接进行下一道程序,如分析,查询,更新等。但事先抽取,然后再进行使用,事实上还需要针对抽取出来的头实体,关系,尾实体进行分类。
例如,给实体进行实体分类,打上人物、电影等实体类型,给关系进行规范化,如江父亲、爸爸、老子、继父等不同表述统一规范成父亲,这其实就变成了一个非标转标的问题,而且,非标转标,最大的问题是标准的确立,因此就会陆续出现聚类、schema自动生成等复杂问题,这些目前都是很不好控制和评估的。
因此,综上,我们可以看到,开放信息抽取在面向通用搜索的场景中,或许还有落地可能,其他方向其实是很少的,这也是为什么在工业场景,尤其是垂直行业,开放知识抽取的讨论是较少的,学术界的探索也是较为缓慢的,因为不好评测,实现难度也很大。
当然,如果从技术这个角度,通过调研发现,整个开放知识抽取还是出现了以openie为代表的多个系统,从技术发展的脉络来看,包括基于规则的,基于模型的几种方法上。其中,基于规则,包括基于词性模板的,基于依存句法模式的,基于有监督的,则根据现有nlp的几种范式可进一步分为基于序列标注的方法、基于seq2seq的生成方法,基于span的分类方法等多种。
而对于有监督而言,其问题的关键在于标注数据的获得,目前以OIE2016以及Re-OIE2016为代表的数据集使用最广,但规模还是较少。
实际上,一般的抽取任务都会涉及到这个问题,通常可以借助外部知识库如百科图谱进行原文回标,而回标的前提在于实体或者关系名称在原文中是有对应的span的,如<中国,首都,北京>在句子“北京是中国的首都”中实际出现,但有些实际上是不出现的,例如对于<张三,妻子,小红>,在句子“张三和小红一起参加了结婚十周年纪念日”中并不能严格定义。
因此,关系词是否在原文中出现,也常常作为封闭域和开放域抽取的一个重要区别。因此,我们需要从一个句子中,准确的挑选出那些词语可以作为头尾实体,哪些词语可以充当关系词。
从经验来看,如果抽取的是实体图谱,头尾实体一般都是名词性的,可以常常将名词或者名词性短语成分作为头实体,而关系类型一般也是名词性的,如父亲、朋友、首都等等。而如果是要抽取的目标是事件三元组,那也对应的头尾实体可以是名词性成分,关系名称则可以是动词等谓词。
因此,总结的看,开放抽取的流程,可能就会变成给定一个句子,从原文中抽取符合要求的spo姐成分,然后再根据要求,对so进行实体标签分类,对p进行关系标准化或者聚类,从而完成规范管理,这与限定域抽取的顺序是有一定颠倒的,当然后续的标准化工作可以不做,但其价值是大打折扣的。
下面,我们从无监督基于规则、有监督基于生成、有监督基于序列标注、有监督基于分类的三种典型工作出发进行介绍,从中借鉴了
https://zhuanlan.zhihu.com/p/353576462一文中对开放信息抽取的一些整理内容,对此表示感谢。
无监督基于规则的开放信息抽取,其思想在于不需要标注数据,只利用语法或者句法规则识别出特定的成分,筛选出高质量的三元组,然后再通过评分函数和分类器进行评价,最终得到相关结果。
无监督Rule-based的代表作textrunner、StanfordOIE等,在前面的文章《知识图谱构建:以OpenIE为代表的开放信息抽取项目技术方案解读》中,我们围绕着OpenIE这一项目的几个版本系统进行介绍,从中我们可以看到基于规则的方法在信息抽取中的强大作用,以及整个系统逐步完善的整个过程,感兴趣的可以查看。下面以textrunner以及srandfordioe进行介绍。
1、textrunner系统
textrunner的思想在于使用深层次语法解析器(parser)去互联网语料上自动抽取三元组,抽取结果有一个置信度,置信度较高的作为正例,置信度较低的作为负例形成分类训练数据集,学习一个二分类贝叶斯分类器,判断(论元1,关系词, 论元2)是否是可信的关系。
首先,在一个小的数据集进行语法解析,先进行词性标注,然后使用lightweight一个名词与短语的分词工具,解析句子中的名词短语,并将名词短语作为可能的论元ei和ej,两个名词短语之间的词语作为关系,构成三元组候选集合。
但这一步会得到很多的三元组,后续需要加入一个分类器进行分类,所以工作变成了两个,一个是正负样本的构造,一个是分类器的搭建。首先,在正负样本构造上,将满足下述三个条件的作为正样本:如论元ei和论元ej存在依赖路径,并且路径长度小于一定的值、论元ei和ej之间的依存路径没有跨句以及论元ei和ej都不是代词。
2、StanfordOIE
StanfordOIE的思想在于输入一个长句然后递归的拆分独立的短句(学习一个分类器用来判定短句是否被拆分出来)。
并且为了使得最终得到的三元组能在下游任务中能用,对于这些短句进行逻辑推理确保最大化缩减句子中无意义的组分。
最后还应用了14组人工规则(如上图所示)来从短句中抽取谓词关系和论元三元组。
图11是其抽取过程的示意图,给定一个句子,先进行依存句法分析,然后通过设定好的patter,完成抽取。
地址:https://github.com/philipperemy/stanford-openie-python
与规则方式不同,生成式OIE,采用seq2seq的方式进行生成抽取,其需要实现给定输入原文句子,以及对应的抽取结果。而这时候的训练数据就比较重要。
对于有监督而言,其问题的关键在于标注数据的获得,目前以OIE2016以及Re-OIE2016为代表的数据集使用最广,但规模还是较少,下图是Re-OIE2016的一个例子。
IMoJIE是这类方法的代表工作,该方法提出了一种迭代式的基于记忆的联合信息提取,使用一个BERT-base的编码器和一个迭代解码器,在每一次迭代抽取中对到此为止生成的提取结果进行重新编码。这种重新编码可以捕捉到提取物之间的依赖关系,提高了整体性能,但整体过程十分耗时。
该工作启发于在 CopyAttention范式(一种基于bootstrapping的方法),如下图所示。
在具体实现上,在每一轮迭代中,将原始序列与之前提取的信息连接,并将其输入给BERT从而获得最终的嵌入。
接着,将带有拷贝和注意力机制的LSTM 解码器用于生成新的信息提取结果,整个迭代直到出现EndOfExtractions技术标签结束。
例如, 第一次训练数据为:
(“I ate an apple and an orange.”, “I; ate; an apple”).
第二次训练数据为原始句子与抽取结果的拼接:
(“I ate an apple and an orange. [SEP] I; ate; an apple”, “I; ate; an orange”).
整个过程不断迭代,对于句子很长的情况下,所需要迭代的次数较多。
地址:https://github.com/dair-iitd/imojie
基于序列标注的方式是最容易想到的,这也是当前现定域知识抽取的常用范式。
就该方法而言,其核心在于针对训练数据,设定相应的序列标签,并利用相关的编码和解码方式完成抽取。
例如,定义S(Subject)、R(Relation)、O(Object) 以及 N(None),输入文本,对每个token进行4分类,也可以定义为主实体,副实体等,进行多分类,并利用BIO或者BMES进行标注。
RnnOIE以及SenseOIE是其中的几个代表工作,下面以RnnOIE为例进行介绍。
序列标注的方法,将句子中主实体、副实体、关系词分别用不同的BIO标签表示。
例如,下面是给出了一给出了三组不同的形式,来表示数据输入的形式及标注结果和最终抽取结果。
(a)、(b)、(c)分别表示主实体、副实体只有一个、主实体有两个、副实体有两个的场景。
以(b)为例,输入中Barack Obama和a former U.S. president都是主实体因此都用A0-B和A0-I标记,关系词was born in用P-B和P-I标记,第一个副实体用A1-B和A1-I表示(若存在第二个副实体,则用A2-B和A2-I表示)。
在模型设计上,RnnOIE模型结构示意图如下图所示:模型结构采用BILSTM进行编码,与标准版NER任务用CRF解码的形式不同,直接采用Softmax分类到每个Token的标签概率。
其中embeding包含两种类型(橙色和黄色),分别是每个词语自身的词向量+位置向量和谓语动词向量+位置向量的拼接得到的。经过一个BI-LSTM编码后直接Softmax输出每个token位置的类别标签。
由于在抽取时,会抽取多个结果,因此,关于抽取结果三元组的置信度问题,该工作一个简明方案,直接用三元组中所有token标签预测的概率值进行连乘积得到三元组的置信度。
除了序列标注、生成式方法外,通过span分类的工作也有相关代表性的方法,这个在进行实体识别上也常有用到。
SpanOIE是该类方法的一个典型代表。
1、SpanOIE
SpanOIE采用pipeline式方法进行信息抽取,首先使用一个谓词发现模块来以句子为输入,预测出谓词对应的span,论元抽取模块则以句子以及谓词对应的span作为输入,然后找出对应的论元,包括Subject、Relation、Object。
1、Spans Candidates Selection阶段
跨度模型的主要缺点是,从一个句子中生成的跨度太多,会导致计算成本过高,损害模型的性能。一个大小为T的句子的所有可能跨度的数量是T(T+1)。
对于一个大小为T的句子,所有可能的跨度是T(T+1)/2,这使得跨度的数量随着句子的长度迅速增长。为了减少跨度的数量,该工作对跨度候选者提出了多个约束。
包括:最大长度约束。在训练过程中,只保留大小小于10个单词的参数跨度和大小小于5个单词的谓词跨度。无重叠约束,只保留与给定谓词跨度不重叠的跨度。
2、Predicate Inference阶段
在预测推理阶段一个谓语跨度如果完全包含在同一个句子中的另一个谓语跨度中,将被删除。
例如,给定一个句子[James wants to sell his company],两个跨度[wants to sell]和[to sell]都被选为谓语,只保留前一个。
这种策略是合理的,因为[James; to sell; his com- pany]不是一个可以从原句中推导出来的确切事实。
3、Argument Inference阶段
给定一个句子和一个谓词跨度,该模型首先对句子中每个标签的每个可能跨度进行评分。然后,所有的元组(跨度、标签、分数)根据它们的分数进行排序,选择分数最高的元组。
如果一个具有特定标签的元组之前没有被选中,那么该元组将被选中。直到所有的标签都有其相应的跨度,也选择结束,但如果一个标签的对应跨度是NULL跨度,这个标签将在提取中被删除。
地址:https://github.com/zhanjunlang/Span_OIE
1、Etzioni O, Banko M, Soderland S, et al. Open information extraction from the web[J]. Communications of the ACM, 2008, 51(12): 68-74.
2、Gabor Angeli, Melvin Johnson Premkumar, and Christopher D. Manning. Leveraging Linguistic Structure For Open Domain Information Extraction. In Proceedings of the Association of Computational Linguistics (ACL), 2015.
3、Kolluru K, Aggarwal S, Rathore V, et al. IMoJIE: Iterative Memory-Based Joint Open Information Extraction[J]. arXiv preprint arXiv:2005.08178, 2020.
4、Stanovsky G, Michael J, Zettlemoyer L, et al. Supervised open information extraction[C]//Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers). 2018: 885-895.
5、Roy A, Park Y, Lee T, et al. Supervising unsupervised open information extraction models[C]//Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019: 728-737.
6、Zhan J, Zhao H. Span model for open information extraction on accurate corpus[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2020, 34(05): 9523-9530.
6、https://zhuanlan.zhihu.com/p/353576462
本文先介绍从封闭域知识抽取和开放知识抽取的异同进行对比,然后介绍目前开放知识抽取的主流做法,包括基于规则的,基于生成的、基于序列标注的以及基于分类的,从中我们能看到大致的实现逻辑。
在更多时候,我们应该记住,无规矩不成方圆,是任何抽取任务在建模时的铁律,在圈定好规则的框架下进行抽取,能够最大限度地发挥抽取模型的价值。
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
就职于360人工智能研究院、曾就职于中国科学院软件研究所。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
OpenKG
OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。
点击阅读原文,进入 OpenKG 网站。