PART
00
引言
传统的实体知识图谱Knowledge Graph(KG)以实体为中心,关注名词性的实体及其关系,其描述的知识是静态的、确定性的事实,更聚焦于实体查询、知识问答、实体预测、实体画像等业务。但是,在舆情监测和文本分析、预测与推理,尤其是在情报分析场景中在诸如“怎么了”,“怎么办”,“为什么”等一些涉及推理和思考的问题上,传统的实体知识图谱显得有些乏力。
世界上存在着大量的事件信息,传递着动态的程序性知识。因此,以事件为中心的知识表示形式也很重要,它将实体和事件结合在一起,它促进了许多下游应用:事件预测,常识推理,消费意图挖掘,对话生成等。
实体知识图谱和事件(事理)知识图谱(Event Knowledge Graph (EKG)),都属于知识图谱,其不同点在于实体的规范性表达、本体模型的定义、知识的描述等。其构建流程都基于下图,本文以此为基准,着重阐述事件知识图谱中涉及的概念和关键技术。
图1 知识图谱的基本构建流程
PART
01
事件知识图谱关键概念和技术
1.1 关键概念
事件知识图谱根据本体节点和关系的规范不同有不同的表现形式,比如:事件演化图谱EEG(event eventionary graph)、抽象事理图谱ELG(event logic graph)等。本文涉及的是广义上的事件(事理)知识图谱。
事件是什么,不同的领域和学科有着不同的定义。在知识图谱中的本体领域,事件则是在指在某个特定时间和环境下发生的由若干角色参与并表现出若干动作特征的一类事情。一个事件应该其特有的触发词(用于事件识别和抽取)和事件元素。触发词是能够触动事件发生的词,是决定事件类型的最重要特征,触发词可能有多级多个,比如针对黑客攻击事件的一级触发词有:攻击、攻入等;二级触发词:篡改、劫持、访问、注入等,这些触发词可用于事件的识别。事件元素(也称为事件论元)是指该类型事件涉及的元素,黑客攻击事件涉及的元素有:攻击的组织、被攻击的组织,攻击使用的技术、攻击的系统、软件、组件、版本、时间、地点等信息。
事件知识图谱以事件为中心,有两种类型的节点:事件节点和实体节点;三种有向边:即事件-事件关系(其包括事件之间的各种关系,如时序关系、条件关系、因果关系、子事件关系等)、事件-实体关系(这种关系表示事件的论元(元素),某个类型事件包含了哪些元素)、实体-实体关系(类似于实体知识图谱中的关系,比如某个组件从属于某个软件)。EKG是更精准的知识图谱的定义,实体知识图谱KG可以看做EKG的一个特例,二者的区别和联系如下表所示:
1.2 事件抽取
事件抽取是是事件知识图谱最基本的技术,其主要研究如何从非结构化自然语言文本中抽取出事件的基本信息,例如:什么人(或者组织),在什么时间,什么地点,做了什么类型的事情。并以结构化的形式呈现出来。其主要的技术有两个:事件发现和事件元素抽取。
事件发现:主要的技术是触发词识别,触发词是决定事件类别的重要特征。一般是动词或是名词。事件元素抽取:事件元素指事件中的参与者,是组成事件的核心部分,它与事件触发词构成了事件的整个框架。比如,这样一个事件:黑客组织A利用SQL注入技术,攻击了公司B的Mysql数据库。事件抽取后结果应该是:事件类型:攻击。涉及的事件元素(或者称为事件论元):组织A、公司B、SQL注入、Mysql数据库。每个事件元素都有自己对应的实体标签,比如:攻击者,被攻击者 ,使用的技术,攻击的组件等信息。
事件类型和事件元素构成了事件的框架。事件抽取任务根据其是否预先设定了事件的框架(模式)可以分为:基于模式的事件抽取(限定域事件抽取)和无模式的事件抽取(开放域事件抽取)。基于模式的事件抽取可以进一步分为句子级和文档级事件抽取,而句子级事件抽占据了绝大多数的事件抽取任务。
(1)句子级事件抽取任务需要从一个文本句中抽出具体的事件和涉及该事件的元素,目前的实现方案主要有三种:
Ø 模式匹配方法:模式是对信息表述的一种描述性抽取规则,此方案需要人工构建大量的词典数据,对触发词和事件元素进行获取和匹配。
Ø 机器学习方法:随着各大企业对信息产业的迫切需求,大力推动了相关领域语料库的构建。研究人员将研究重点转向基于统计和机器学习的方法进行信息抽取。一些经典的统计模型被引入,这些模型有隐马尔科夫模型(Hidden Markov Model,HMM)、朴素贝叶斯模型(Naïve Bayes Model, NBC)、最大熵模型(Maximum Entropy Model,ME)、支持向量机模型(Support Vector Machine,SVM)等。这种基于统计模型的机器学习方法将信息抽取看成是分类问题,其重点在于挑选合适的特征使得分类器更加准确。
Ø 深度学习方法:深度学习将事件抽取看成是端到端的系统,利用不同的网络结构来用来捕获词与词之间的关系。常用的网络结构有CNN、RNN、LSTM、TextRCNN、Bi-LSTM等。利用一些基本的语言模型比如TF-IDF、Glove,Word2Vectort等将文本进行向量化,结合条件随机场模型(CRF)实现抽取任务。本质上是一个实体识别(NER)任务,得益于Bert、GPT等添加了Attention机制的预训练模型的出现。目前效果比较好的主流网络结构是:Bert、GPT等预训练模型+Bi-LSTM+CRF。关于Bert和CRF的介绍,网上有很多介绍,这里不展开。Bi-LSTM的网络结构如下图所示,通过将词向量正向和方向输入长短是记忆网络,使其能捕获正反两个方向的词与词之间的关联信息。
(2)文档级事件抽取:句子级事件抽取需要假设事件触发词和事件元素都在同一个句文本中,而实际上一个事件可能是由多条句文本组成,一条句文本也可能包含多个事件。早期的做法是对事件和涉及的元素进行十分明确的建模,基于统计和概率进行抽取。对于一个句子级的抽取结果不仅要考虑当前的置信度,还要考虑与这个待抽取文本相关的文本对它的影响。随着深度学习的发展,可以使用图神经网络GNN捕获实体和句文本的文档感知嵌入,使用BiLSTM、BiRNN和FCN对句子内的事件相互依赖性进行建模,整合不同句文本之间的依赖性。
(3)无模式的事件抽取:在该场景下没有预先标注好的好事件和涉及的论元信息。其主要抽取的是事件三元组(施事,事件词,受事),利用启发式规则从语料库中获取句法特征,然后训练分类器判断两个元组之间是否存在某种语义关系,再利用海量互联网数据帮助评估抽取到的三元组是否正确。
综上,事件抽取最核心的是句子级事件抽取,受限于场景、噪声信息等因素,尤其是在网络安全领域,不能只考虑简单的事件元素主谓宾等信息,还需要考虑比较复杂的事件范式,为此基于网络安全领域的ATTCK架构,我们将其纳入到知识图谱中,作为攻击事件知识图谱的一个基准范式,构建好的效果图如下所示,涉及了攻击策略、技术、组织、软件等事件信息。
1.3 事件关系抽取
事件关系用来描述两个事件间的关联逻辑,事件关系抽取以事件为主题元素,通过分析事件文本的结构信息及语义特征,挖掘事件之间深层的逻辑关系,进而辅助事件的衍生、发展以及信息的推理与预测。其通常被形式化为给定事件对和上下文的简单文本分类任务。比较重要的事件关系有事件共指关系、子事件关系、事件时序关系和事件因果关系。
Ø 共指关系:两个事件指向的是同一个事件,则表面二者是共指关系。比如:1、黑客组织A利用SQL注入技术,攻击了公司B的Mysql数据库。2、公司B的Mysql数据库遭到了黑客组织A的攻击。二者指向的是同一个事件,一般可以采用对事件触发词和事件元素之间的相似度或者事件文本句之间的相似度进行计算,文本相似度的计算方式有:欧氏距离、曼哈顿距离、余弦距离、皮尔逊相关系数和杰卡德系数等,通过设定阈值的方式来判断二者是否存在共指关系。
Ø 子事件关系:反映了两个事件的包含关系,比如给定事件(A,B),B是A的子事件,可能需要满足一些先验条件:A是一系列活动事件序列,B是A中的一项;二者有一致的时间和地点元素等。常用的方案有:基于概率的贝叶斯网络结构、端到端的上下文相关的层次LSTM模型等。
Ø 事件时序关系:事件时序关系是指在时间上的先后顺序。可以辅助其他事件关系的发现,一般该任务分为两个独立的子任务,即事件抽取和事件时序关系分类。事件时序关系的判断,就变成了一项文本分类任务,可以借助于Transformer、Bert、GPT等预训练模型根据实际任务需求设定网络结构,对于分类任务的评价指标一般有:精确率、准确率、召回率、F1得分以及时序意识得分等。
Ø 事件因果关系:因果关系反应了事件的由因果的继承关系,有一定的时序性。除了利用时间提取器对事件的时序进行相关性排序,还可利用外部知识来对事件缺少元素进行补充,通过引入Bert等预训练模型对事件的文本句进行特征捕获,将词嵌入信息传递给基于FCN和软max的分类器,实现因果关系的捕获。
综上,在NLP领域中,Bert预训练模型确实取得了比较好的效果(很多文本任务需要捕获词的真实含义),得到了广泛的应用。Bert以Transformer结构为基准,Transformer的网络结构如下图所示,包含一个编码器和解码器,Bert可以简单理解为Transformer的编码器部分。如下图所示,编码器和解码器都包含多个Multi-head Attention(用来捕获词词之间的语义信息) 结构,这里不展开,感兴趣的同学可以参考原始论文:Attention Is All You Need。
论文链接:https://arxiv.org/pdf/1706.03762.pdf
1.4 其它相关技术
在事件提取以后,有很多事件实际上描述的是相同或者相似的实际,这就需要将它们归并到一个事件集合中,这就是事件共指消除。基本的任务描述是:将事件抽取的结果以及事件的上下文作为输入,采用一定的算法或者规则,比如一些聚类算法或者一些分类算法,或者利用一些特征增强的技术:引入外部知识、对事件触发词和事件元素进行扩展等达到效果。根据不同情境的处理方法有:无监督方法(构建事件的特征表示进行模式匹配)、半监督方法(通过标注数据和未标注数据相结合捕获事件的不同维度的特征实现)、监督方法等。
在事件提取任务中,可能原始数据存在文本不完整的情况,导致事件有一定的元素缺失,其主要的任务一般是针对特定规则的事件,比如一个黑客攻击事件,没有其对应的攻击技术、组织、软件等信息,需要结合事件的元素角色进行补全。一般可以将事件论元补全任务分为预测任务或者分类任务。预测任务,可能需要利用一些NLP中的文本生成技术,或者词词、句句之间的相似度计算计算。文本分类任务需要结合具体的任务需求,来决定需要的语言模型、词嵌入方式、网络结构等。
2.1 数据集
国际上的主流会议和数据集有:1、消息理解会议(MUC)。2、自动内容抽取会议:ACE2005数据集,该数据集定义了生命、冲突、交易、司法等8大类事件类型以及33中子事件类型。比如商务事件包括机构合并、破产声明、机构成立、机构终止等事件类。3、知识库填充(KBP)。
对于中文数据集而言,CCKS、NEC中国研究院开放了一系列的数据集和数据科学竞赛,比如:CCKS2022-开放知识图谱问答,CCKS2022-面向金融领域的FEW-SHOT事件抽取、CCKS2022-跨语言知识图谱问答、CCKS2022-开源多模态军事装备数据的事件要素抽取等,数据集的详情可以参考此链接:https://www.biendata.xyz/competition/。
2.2 应用
事件知识图谱得到了越来越多的关注和应用,目前其主要的应用在金融领域,用来支持智能投顾、风险管控等众多业务场景。比如:金融风险事件监控、基于事理图谱的金融标的物预测、基于事件图谱的情报推荐等等。
而在网络安全领域,通过将网络攻击和防御事件纳入到动态图谱中,结合网络安全行业的一些特有的实体静态图谱,可以对网络攻击的检测和预防提供良好的支撑。如下图我们将ATTCK框架的结构作为事理图谱的基准,用来捕获攻击事件,并结合具体的攻击技术实体、组件、攻击、系统实体等,对攻击事件迅速做出响应和捕获;同时结合事理知识图谱的动态性,对一些未知的安全隐患进行预测。
综上可以看出,在事件知识图谱的各种任务中均或多或少用到了Bert、GPT等预训练模型,究其原因是预训练模型由于其良好的注意力机制,能够很好地捕获文本的语义信息。我们从互联网上抓取了大量的漏洞分析文章,对这些文章进行标注,可以作为一个很好的网络安全领域的语料库,后续我们会以此为基准,结合NLP中的预训练模型,可以捕获出网络安全领域中的动态的渗透和攻击逻辑,并预先对此采取措施。比如:某个组织经常半夜对某个mongodb数据库进行攻击,在事件知识图谱中可以看到此事件原因是:半夜无人值班,而且启用了mongodb默认的27017端口。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...