【事件图谱】事件表示

事件有两方面特点:一方面,目前缺乏标准的定义来定义事件;另一方面,事件在知识上有动态性、领域性、概率性和复杂性等多个特点。

事件表示有两种方法,分别是形式化表示分布式表示

形式化表示指运用形式化数据结构表示事件,分布式表示就是一种能够刻画语义之间的相似度并且维度较低的稠密向量表示事件。形式化事件表示可以让人一目了然的看到事件是如何表示的,但计算机无法直接处理,而分布式表示计算机处理则容易的多。

事件表示构建的目标是构建一个高准确、高覆盖的事件知识表示体系,以支持后面事件抽取任务。

事件表示是事件图谱构建中一项重要技术,本文介绍了四种常用的形式化事件表示方法。


基于自然文本的形式化表示 

这种表示方法指的是以自然语言形式复述结构化事件。复述的自言语句片段可以是短语、短句或者是长句、段落等。实际处理时,可以采用短句、短语、词序列、核心动词等多种形式进行事件表示。

短句最大程度的保留了原始信息,通过特定的中文符号(如:逗号、分号、顿号)将句子切分即可。

短语是参与核心动词的一个序列,比较简洁,具有更广义的信息,提取时常需要借助词法分析和句法分析来识别代表性的主谓宾短语、动宾短语以及主谓短语。

词序列就是对短句分词、词性标注之后形成的一个个词的序列

核心动词通常需要对句子中的动词、形容词或名词进行提取,语义十分抽象,其表征就是描述事件的核心词。

下面是这几种表示的对比:

表示形式含义举例优点缺点
短句以中文标点符号为分割边界形成的短句这几天非洲闹猪瘟&国内猪肉涨价简单、方便噪声多、不易融合
短语语义角色标注/依存句法分析,形成主谓短语、动宾短语、主谓宾短语非洲闹猪瘟&猪肉涨价语义简洁受限于依存、语义角色性能
词序列对短句进行分词、词性标注、停用词形成的词序列非洲闹猪瘟&国内猪肉涨价语义丰富停用词规则难控制
核心动词提取句子中的核心动词或形容词作为事件表示闹猪瘟&涨价语义抽象难确定核心动词

基于结构元组的脚本形式化表示

这种表示方法将一个事件形式化为一组元素的组合形式,可分为二元组、三元组、多元组等多种事件形式。

       1. 二元组形式

Chambers将叙事性事件链中的事件event定义为二元组形式<event,dependency>,其中event通常为一个动词,dependency通常表示与该event或者主角在句法语义上的依存关系。

        2.三元组形式

  • Kim将事件形式化表示为三元组(O_i,P,T),其中O_i表示一组对象,P表示对象之间的关系,T表示时间间隔
  • Balasubramanian提出三元组(arg1,relation,arg2)的表示方式,其中relation通常指动词,arg1和arg2通常指与动词具有句法语义关系的主语成分和受事成分。

        3.四元组形式

  • Ding将事件表示为四元组E=(O_1,P,O_2,T),其中P表示动作,O_1表示参与者,O_2表示对象,T表示时间戳
  • Pichotta、Modi将事件表示为四元组E=(V,es,eo,ep),其中V是一个动词,es表示在依存句法上与动词相连的主语成分,eo表示与动词相连的宾语成分,ep表示在依存句法上与动词相关的介宾成分。es、eo、ep称为事件参数。

        4.多元组形式

zhao描述事件的句子中,采用高频词对的形式,用动词和名词的集合来表示具体事件,并将高频词对中的动词通过Verbnet进行动词类别替换,将名词通过WordNet用上位词和高频同义词进行替换来表示抽象事件。

基于框架模板的形式化表示

采用框架模板进行事件表示通常是针对特定事件制定相应的描述框架,这种方法比结构化元组事件表示描述的语义更加全面。代表工作有ACE、FrameNet、VerbNet、PropBank、WordNet、TimeBank等表示方法。

        1.ACE表示法

ACE将事件形式化为<事件描述,触发词,时间范围,事件类型和子类型,事件论元>

ACE是一个典型的事件抽取评测任务,并为此定义出了8个大类事件,33种子类事件,35种论元角色,ACE还为每个事件标注了极性、时态、指属、形态等四种属性类型。

        2.FrameNet表示法

Framenet将事件形式化为<事件类型,触发词,事件具体要素>

FrameNet语料库是一个人读和机读的英语词汇数据库,它基于对实际文本中单词用法的注释示例。其基本思想很简单:大多数单词的含义都可以通过语义框架(对事件、关系或实体及其参与者的描述)得到最佳理解。

例如,烹饪的概念通常涉及到一个人做饭(Cook),即将被烹饪的食物(food),做饭时用来盛食物的东西(容器)和热源(加热设备)。在FrameNet项目中,这被表示为一个名为Apply heat的框架,而Cook、Food、Heating instrument和Container被称为frame elements (FEs)。

        3.VerbNet表示法

VerbNet将事件形式化为<一组动词,动词所支配或相关的论元角色,动词具有的句法格式>

VerbNet2.0一共定义了237个动词类别,每个动词类别下由一组动词、动词所能支配或相关的论元角色、动词具有的句法格式组成。

        4.PropBank表示法

PropBank将事件形式化为<论元,一组语义角色或论元集合>

PropBank是一个动词词库和动词语义角色标注语料库,每个动词由一个框架来表示,每个框架由多个框架集合构成,每个框架集合由一组语义角色或论元集合构成,并与论元标记严格对应。

        5.TimeBank表示法

TimeBank将事件形式化为<事件表达,事件ID,事件类型,属性信息>

主要应用于识别和抽取事件的时间元素以及事件之间的时序关系

        6.TAC-KBP表示法

TAC-KBP将事件形式化为<事件块,事件类型和子类型,Realis值>

TAC-KBP表示法是ACE事件抽取的延续,其中,事件块指的是与事件类型相关的文字,Realis值是指对事件的描述

基于通用本体的形式化表示

基于本体的事件表示和基于框架式事件表示很类似,但框架式表示的是一个个实例事件,而本体式表示的事件不止一个。

        1.SEM Ontology

本体表示<Type,Actor,Object,Role,Temporary,Event,Place,Time,hasSubEvent(Event,Event)>旨在描述一个跨领域的事件本体通用表示模型,使用RDF语言定义核心概念即事件表示,该事件本体可以实现概念重用,描述不同领域之间的数据。

        2.Storytelling Ontology

本体表示<Concept,Event,Relation,Act,Scene,Agent,Role>

该本体利用修辞结构理论(RST)提出的关系,提出了一种基于事件组织的通用叙事本体模型,考虑了本体中最重要的故事组件和叙事规则,只适用于文本类数据

        3.WikiTimes Ontology

本体用于组织维基百科中的事件,对Event和Story,Event进行了区分,Story由一系列Event构成时间线(timeline),并持续多个时间跨度

例:<Story,Event,Entity,Storyline,Location,subEvent(NewsEvent,NewsStory),superEvent (NewsEvent,NewsStory),belongstoStory(NewsEvent,NewsStory)> 


参考文献 

https://blog.csdn.net/qq_36771895/article/details/91355166

https://blog.csdn.net/muumian123/article/details/85616401

https://verbs.colorado.edu/verbnet/

http://www.cqvip.com//QK/90051A/200711/25915338.html

https://www.modb.pro/db/220582

### 事件图谱框架的概念 事件图谱框架旨在通过构建维护一个动态的知识网络来捕捉现实世界中的各种事件及其相互关系。该框架不仅能够识别并分类不同类型的事件,还能揭示这些事件之间的因果关联发展脉络[^1]。 ### 实现方式 #### 数据收集与预处理 为了建立有效的事件图谱,首先需要从多种渠道获取原始数据源,包括但不限于新闻报道、社交媒体帖子以及官方公告等非结构化文本资料。接着对采集到的数据执行清洗、分词、去停用词等一系列自然语言处理操作,以便后续分析使用。 #### 事件检测与分类 采用机器学习算法或者基于规则的方法来进行事件实例的发现工作;对于每一个疑似事件项,则依据预先定义好的模式库对其进行类别归属判断——这一步骤区分出了特定领域内的限定域事件抽取任务其他更为广泛的开放域场景下的同类作业。 #### 关系提取 一旦确认了各个独立发生的事实单元之后,就需要进一步挖掘它们之间可能存在的逻辑联系(如时间顺序上的先后次序或是空间位置上的邻近程度),从而形成一张完整的语义网状结构图表。 #### 图数据库存储 最后,所有经过加工整理后的高质量信息会被存入专门设计用来高效管理复杂查询请求的图形型数据库系统之中,例如Neo4j或ArangoDB,在这里不仅可以轻松实现节点间多层嵌套式的检索需求,同时也支持可视化界面展示功能方便用户直观理解整个体系架构全貌。 ```python from neo4j import GraphDatabase def create_event_relationship(tx, event_id_1, event_id_2, relation_type): query = ( "MATCH (a:Event), (b:Event)" "WHERE a.id = $event_id_1 AND b.id = $event_id_2" "CREATE (a)-[:RELATIONSHIP {type:$relation_type}]->(b)" ) tx.run(query, event_id_1=event_id_1, event_id_2=event_id_2, relation_type=relation_type) ``` ### 工具推荐 目前市面上已经存在一些成熟的开源项目可以帮助开发者快速搭建起自己的专属版本事件图谱平台: - **OpenKE**: 提供了一系列用于训练知识表示模型的基础件; - **Graphviz**: 支持创建静态图片形式的关系图表达; - **Gephi**: 可视化探索大型网络数据集的强大桌面应用程序; - **DGL(Dynamic Graph Library)**: 面向深度学习优化过的高性能计算引擎,特别适合做复杂的时空序列预测建模任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值