目前,知识图谱在学术界如火如荼地进行,但受限于知识图谱各个环节中的性能问题,还尚未能够在工业界大规模运用。而与知识图谱中以实体为知识节点,实体关系为实体关系边对知识进行组织不同,以事件作为节点,事件关系作为节点关联的三元组信息的抽取和应用,当前也是大家在探索的一个方向(即事理图谱,先撇开其建模和应用现状不讲)。
笔者之前围绕事件关系三元组抽取,结合语言学背景,尝试了一些朴素方式下的事件关系三元组、事件主谓宾三元组抽取的工作。如:
顺承事件关系三元组抽取,地址:
https://github.com/liuhuanyong/SequentialEventExtration
因果事件关系三元组抽取,地址:
https://github.com/liuhuanyong/CausalityEventExtraction
复合事件关系三元组抽取,地址:
https://github.com/liuhuanyong/ComplexEventExtraction
事件主谓宾三元组抽取,地址:
https://github.com/liuhuanyong/EventTriplesExtraction
本文选择复合事件关系三元组抽取和事件主谓宾三元组抽取两个实践项目进行介绍。前者的输出可以作为后者的输入,通过识别出事件关系的两头事件实体,再通过主谓宾关系抽取,可以进一步得到事件的主体和客体,主体和客体可以进一步成为事件实体链接的桥梁,以实现与实体知识的联合建模。
一、ComplexEventExtraction复合事件关系三元组抽取
chinese compound event extraction,中文复合事件抽取,包括条件事件、因果事件、顺承事件、反转事件等事件抽取,并形成事件关系三元组。
1、复合事件关系中事件的界定
如果要做事件关系三元组抽取,那么就务必要回答其中的事件形态是什么,其边界在哪儿。基于框架体系FrameNet那套的ACE将事件表示成为一个个论元集合,CEC事件数据集、SemEval等数据集中将事件界定为一个动词。不同的事件界定方式,直接决定了后续技术的选择以及对应的技术难度下图总结了当前遇到的几种工业界事件表示方式:
以因果事件为例, 已知句子:这几天非洲闹猪瘟,导致国内猪肉涨价。
图1-复合事件关系的界定
2、事件关系的几种类型
坦白的说,对于事件关系的界定,当下有不同的标准。下表列举了当下的几个典型的事件关系类型。而通过结合语言学规则,利用显式的关系词和模式词进行触发、统计,可以发现,因果事件关系是最为明显的,最有规律可循的。
图2-复合事件关系的类型
3、事件关系抽取的实施
当前朴素的事件关系抽取,还是以显式的关系触发词展开,可以针对因果关系【导致、造成、所以】、条件关系【如果、前提、要是】、反转关系【虽然、但是、尽管】、顺承关系【紧接着、然后、接下来】,构造对应的句法模式,将以该触发词为核心的主语和宾语部分抽取出来,即可以得到事件关系三元组。
例如:
1)转折关系三元组模板
2)因果关系三元组模版
4、事件关系抽取的效果
通过对已有的非结构化文本如新闻报道等进行模板抽取,我们可以得到相应的关系三元组抽取效果,如下所示:
1)因果事件三元组图谱可视化效果
图2-美国攻打伊拉克因果事件关系三元组效果
图3-寿光发生洪水因果事件关系三元组效果
2)反转与条件事件关系三元组抽取数据表结果
3)反转事件关系三元组抽取结果图谱可视化结果
图4-反转事件关系可视化效果
4)条件事件关系三元组抽取结果图谱可视化结果
图5-条件事件关系可视化效果
二、EventTriplesExtraction事件主谓宾三元组抽取
基于依存句法与语义角色标注的事件三元组抽取,文本表示一直是个重要问题,如何以清晰,简介的方式对一个文本信息进行有效表示是个长远的任务,我尝试过使用关键词,实体之间的关联关系,并使用textgrapher的方式进行展示,但以词作为文本信息单元表示这种效果不是特别好,所以,本项目想尝试从事件三元组的方式出发,对文本进行表示。
项目地址:
https://github.com/liuhuanyong/EventTriplesExtraction
1、基于依存句法分析和语义角色标注的事件三元组抽取
当前开源的句法分析组件,包括LTP、hannlp、百度DDParse等为我们进行特定句子的依存分析和语义角色标注提供了快速调用的接口。通过对一个句子进行依存句法分析,可以得到一个句子的核心动词、与该动词直接依存的词,如SBV主语关系、VOB动宾关系、OBJ谓语关系集合。因此,我们可以在此基础上,以句子的动词为核心,先后找出其主语和谓语,并通过ATT修饰关系、COO并列关系等进行主语和宾语的扩展,形成三元组。
1)抽取实施
本项目分别使用LTP、百度DDParse作为句法分析器针对输入的文本进行抽取,先进行长句切分,然后进行依存句法分析,并设定扩展规则,可以快速得到三元组集合。
2)抽取结果
本项目的抽取结果如下,选取了“以色列对加沙地带进行轰炸”这一新闻快讯进行处理,得到svos等主谓宾集合。
2、基于词性模板规则的事件三元组抽取
基于依存句法的方式进行事件三元组抽取,其性能受限于依存句法性能的精度,但坦白的说,当前的依存句法分析器的性能并不是特别高,中文的精度在80%-85%之间。因此,我们可以有另一种方式来实现三元组抽取,即基于词性模板的方式,其思想在于,通过构造事件三元组的成词词性模板,如一个典型的IP短语、NP短语、VP短语等,就可以得到三元组结果:
1)抽取实施
本项目分别使用开源jieba分词器作为分词和词性标注组件,针对输入的文本进行抽取,先进行长句切分,然后进行处理,并设定三元组词性模板,快速得到三元组集合。
2)抽取结果
同样的,本项目选取了“以色列对加沙地带进行轰炸”这一新闻快讯进行处理,得到svos等主谓宾集合。
三、项目总结
1、ComplexEventExtraction复合事件关系三元组抽取总结
本项目对事件图谱的类型、表现形式进行了归纳,并结合复合事件模式与语料进行了实验。实验表明,反转事件,其实在某种程度上可以用来构造反义词词典,例如"不是A而是B"这种模式,可以得到很多反义的词或短语,这让我想到了我的一个反义词项目接口:(https://github.com/liuhuanyong/ChineseAntiword) ,我们可以用wordvector找相近词,可以靠这种方式收集反义词,对了,还可以加上情绪。
实验表明,汉语显示标记其实在中文文本当中还是用的很普遍的,统计了以下,跑了1000W文本,有超过半数的文本中包含以上模式。因此,如果能够把显式的事件关系三元组做好,感觉用处还是很多的。本项目还有很多不足,比如模式上,比如对事件类型和事件表示的z总结上,而且,事件关系三元组还是限定在句子级别,这是一种讨巧的方式,因为放在篇章级上,实施的难度会更大。
2、EventTriplesExtraction事件主谓宾三元组抽取总结
本项目公开了基于ltp句法分析和语义角色标注、基于百度DDParser以及基于词法模式的事件三元组抽取方法,并给了实验示例。通过实验,我们发现
LTP在DDParser之外,还提供了语义角色标注的功能,这个可以用于事件三元组抽取的有效补充,LTP速度比DDParser要快,但语义角色标注模块存在明显的内存泄漏问题。此外,基于词法模式的事件三元组抽取速度最快,但效果取决于分词、词性标注性能,基于词法模式,可以得到语义更长的三元组元素信息。
关于作者
刘焕勇,liuhuanyong,现任360人工智能研究院算法专家,前中科院软件所工程师,主要研究方向为知识图谱、事件图谱在实际业务中的落地应用。
得语言者得天下,得语言资源者,分得天下,得语言逻辑者,争得天下。
1、个人主页:https://liuhuanyong.github.io。
2、个人博客:https://blog.csdn.net/lhy2014/。
欢迎对自然语言处理、知识图谱、事件图谱理论技术、技术实践等落地应用的朋友一同交流。