NLP自然语言处理-机器学习和自然语言处理介绍-事件抽取
一.案例介绍
1.背景
事件抽取技术的核心价值,是可以把半结构化、非结构化数据转换为对事件的结构化描述,进而支持丰富的下游应用。
比如说我们要为一些人物整理年表,如图,把人物经历的重要事件汇总起来,就可以用事件抽取方法来完成;我们不仅可以整理历史数据,还可以把新闻数据中的事件(天气、体育比赛情况、不和谐的行为和言论、面馆开张信息等等)抽取出来等等。
2.什么是事件
“事件”指在特定的时空下,由一个或多个角色(事件主体)参与的,围绕某个主题开展的一系列活动。
2.1事件组成元素
组成事件的各元素包括: 触发词、事件类型、论元及论元角色。
事件触发词/trigger:表示事件发生的核心词,多为动词或名词;
事件类型/event type:ACE2005 定义了8种事件类型和33种子类型。其中,大多数事件抽取均采用33 种事件类型。 事件识别是基于词的34 类( 33类事件类型+None) 多元分类任务,角色分类是基于词对的36 类( 35 类角色类型+None) 多元分类任务;
事件论元/事件要素/argument:事件的参与者,主要由实体、值、时间组成。值是一种非实体的事件参与者,例如工作岗位 ;
论元角色/要素角色/role:事件论元在事件中充当的角色。共有35类角色,例如,攻击者 、受害者等。
如材料:在 Baghdad,当一个美国坦克对着 Palestine 酒店开火时一个摄影师死去了。
序号 事件类型 触发词 论元 论元角色
“事件图谱“指持续、快速地获取客观世界中发生的事件,并丰富事件属性、建立事件间的关联关系,构成以事件为基本单位的知识网络。
2.2事件的8种类别即相应子类别
例如:Life/Marry 是结婚事件,Marry事件是官方活动,两人在法律定义下结婚。其模版包括一个participate slot和两个attribute slot,如下所示:
3.什么是事件抽取
(1)定义
将非结构化文本中的事件信息转化为结构化形式,包括识别出事件的触发词,支持该事件论元(主体、客体、时间、地点)。
例如材料:苹果公司将于西部时间9月12日上午10点,北京时间9月13日凌晨1点举行新品发布会,这一次的发布会地点是全新建造的史蒂夫-乔布斯剧院。根据目前的消息,这次发布会上苹果将会发布iphone8、iphone7s、Apple Watch3以及全新Apple TV。
抽取结果如下:
(2)分类
对事件进行分类,包括极性、时态。
例如材料:过往世卫组织曾5度宣布“国际关注公共卫生紧急事件”。
抽取结果如下:
二.模型介绍
1.事件抽取模型的核心构成
(1) 事件类型体系,以及各类事件里重要的角色,统称为schema。
(2) 信息抽取方法。
2.Schema的制定
“schema”即纲要,是我们对事物一般的、抽象的描述,体现人类对事物的认知水平,决定了机器抽取事件的能力,因此非常重要。而确定了schema,一方面方便大家在相同的概念基础上展开协作,另一方面也让机器有了相对确定的学习和预测目标。
一个完整的事件schema,应当包括:
(1)事件类型体系,比如“企业成立”、“企业并购”等等组成的,就是我关心的事件的类型体系;
(2)各类事件的重要角色,比如一段文本所含的各个字段,就是一个事件得以发展所依赖的重要角色。有时候,我们会设置一种特殊的角色,即“事件触发词”,用来辅助判断事件的发生。
3.信息抽取的方法
即信息抽取模型构建—换句话说, 我们需要构建一定的工具,让它从半结构化、非结构化数据中,把schema描述的信息抽取出来。
3.1事件抽取-触发词提取器
(1)模型框架:BERT + Feature
(2)原理:将标注数据中的所有Trigger作为知识库,类似于远程监督的方式,作为Trigger抽取的先验特征,抽取句子中与知识库内Trigger匹配的文本标注出来,将其映射到Extra-Feature Embedding中,与BERT的输出拼接。
(3)知识库构建:知识库构建(训练集内部交叉构建,测试集使用全体训练集作为知识库构建)。
3.2事件抽取-论元提取器
(1)模型框架:BERT-ConditionalLayerNorm
(2)原理:将原始文本+Trigger在文本中的位置输入模型,以文本中所有词到Trigger的相对距离,Trigger本身的相对距离为0为特征,模型利用ConditionalLayerNorm让文本融入Trigger的语义信息,直接标注出trigger的位置,帮助模型预测role。
3.3事件抽取-属性分类器
(1)模型框架:BERT-DynamicPooling
(2)原理:将原始文本+Trigger在文本中的位置输入模型,我们认为事件的属性只与Trigger本身和其左右窗口大小为N的词有关,故模型中mask多余部分,利用窗口内Pooling后的logits+Trigger Start Logits+Trigger End Logits 对 tense 和 polarity 进行分类。
三.样例数据
文本如下:
1.毛泽东(1893年12月26日1976年9月9日),字润之(原作咏芝,后改润芝),笔名子任。湖南湘潭人。中国人民的领袖,伟大的马克思主义者,无产阶级革命家、战略家和理论家,中国共产党、中国人民解放军和中华人民共和国的主要缔造者和领导人,政治家,军事家,诗人,书法家。
四.结果展示
1.{“markResult”: [{“trigger”: {“text”: “缔造”, “end”: 112, “start”: 110}, “arguments”: [{“role”: “object”, “text”: “中国共产党、中国人民解放军和中华人民共和国的主要缔造者和领导人,政治家,军事家,诗人,书法家”, “start”: 86, “end”: 132}, {“role”: “object”, “text”: “毛泽东”, “start”: 0, “end”: 3}], “eventClassify”: [{“task”: “polarity”, “res”: “肯定”}, {“task”: “tense”, “res”: “过去”}]}]