知识图谱(knowledge graph)⼀度被专家称为“AI皇冠上的明珠”,因为知识图谱技术是⼈⼯智能技术⽅向中的重要⼀环。它不仅可以为其他⼈⼯智能应⽤提供⽀持,如⾃然语⾔处理、推荐系统等,更可以帮助⼈⼯智能系统⾃主构建和增⻓知识库,提升计算机的理解和分析能⼒,实现“认知智能”的⽬标。Gartner预测,到2025年,知识图谱技术将应⽤于80%的数据分析,⽽2021年这⼀⽐例仅为10%。
最近爆⽕的ChatGPT也是⾃然语⾔处理和理解领域的⼀个重要应⽤,虽然ChatGPT在⽣成和理解⾃然语⾔⽅⾯表现出⾊,但它的知识表⽰和推理能⼒有限,⽆法直接获取和处理结构化知识。因此,知识图谱可以为ChatGPT提供丰富的结构化知识,以增强其对话⽣成和理解的能⼒,进⽽提升对话系统的智能⽔平。
通⽤知识图谱的构建⼀般包含以下内容:本体、概念、属性、关系、实体、属性值。
上图简单描述了知识图谱中各个概念的关系。
本体指的是⾯向某⼀领域概念的集合;
概念指的是具有同种特性的实体的抽象,例如国家、⺠族、⾃然⼈、电脑、汽⻋等;
属性指的是概念所拥有的特性,例如国家的属性有⾯积、⼈⼝、⾸都等;
关系指的是两个概念或实体之间的相互关系,例如⼀个城市和国家的关系可以是⾸都关系、经济中⼼关系等,⽽具体到实例时北京和中国的关系是⾸都关系;
实体指的是概念的实例,例如国家的实例有中国、美国等;
属性值指的是针对某个实例其具体的某个属性的取值,例如中国的⾯积属性其取值为960万平⽅公⾥等。
对于通⽤领域知识图谱,通常只需要宽泛的定义schema或者直接使⽤OpenKG等开放知识图谱的结构,甚⾄采⽤⽆schema模式,直接将数据结构化为SPO的三元组结构即可。
但特定领域的应⽤,对知识的精确性要求较⾼。因此需要构建领域数据的Schema模式,包括定义数据的概念、类别、关联、属性约束等。
如上所述,基于领域知识本⾝的内在关联定义良好的,能够帮助梳理业务逻辑,为数据分析准备关联稠密、特征清晰的结构化数据。此外,还能为未来打破领域内外的知识壁垒,促进知识共享,知识融合和知识重⽤奠定基础。
领域本体建模(即schema构建),可以认为有“⾃上⽽下”和“⾃下⽽上”两种⽅法。
“⾃上⽽下”即先对领域所具备的知识点、概念、术语进⾏ high-level 的认知和抽象,提炼出最具⼴泛性的概念,然后在此基础上逐步细化,定义更多的属性和关系来约束更为具体的类别。本⽅法适⽤于对领域知识体系已有深刻的洞察和全⾯了解的情况,例如对领域业务场景熟悉的业务专家,从专业⻆度去层层分解、细化出概念模型。
例如针对武器领域,定义⾼层概念“武器领域实体”。并从“武器领域实体”继承出“冷武器”、“热武器”;从“冷武器”扩展出“⼑”、“剑”、“⼸弩”、“⼔⾸”、“棍棒”等;从“热武器”扩展出“轻武器”、“重武器”、“⼤规模杀伤性武器”等,基于“轻武器”再细化出“步枪”、“⼿枪”等单兵武器,基于“重武器”再细化出“⽕炮”、“坦克”、“坦克⻋”、“⽕箭”、“⻜机”、“军舰”等。
⽽“⾃下⽽上”则是反向的认知路径。在已有⼤量数据表、⽂本时,先基于业务分析数据,根据数据定义具体的概念及其属性、关系。再对拥有⾼重叠属性/关系的概念进⾏聚类,抽象出共同的上级概念。这种⽅法对应数据和聚类算法要求较⾼,聚类后的概念、关系准确度需要⼈⼯检验。
可以根据实际场景选择合适的本体构建⽅法,在有条件的情况下建议还是第⼀种⽅式。
特定领域,构建schema的通⽤流程:
概念定义:
领域schema的构建原则是:
1、功能描述
本体抽取⽀持从结构化数据中⾃动抽取实体,同时提供从⽂本中抽取实体、实体属性、实体关系,⽀持⼿⼯的⽅式进⾏⽂本实体标注,提供实体融合和实体消歧能⼒。
2、功能分析
对于实体关系抽取任务,按照模型结构划分,⼀共有两种⽅式如下:
(1) 管道模型
先抽取句⼦中的实体,然后在对实体对进⾏关系分类,从⽽找出SPO三元组,这种思想被称作管道模型(Pipeline)。管道模型把实体关系抽取分成了两个⼦任务,实体识别和关系分类,两个⼦任务按照顺序依次执⾏,它们之间没有交互。
(2) 联合模型
同时进⾏实体识别和关系分类的是联合模型,此模型实现了两个⼦任务之间的信息交互,⼤⼤提升了实体关系抽取的效果,⽬前针对实体关系抽取任务⼤多采⽤联合模型。⽽联合模型⼜可以细分为基于参数共享的联合模型和基于联合解码的联合模型。
参数共享⽅法和联合解码⽅法的对⽐:
① 参数共享的经典模型
⼀种联合实体关系识别,基于参数共享的关系抽取模型,模型中有两个双向的LSTM-RNN,⼀个基于word sequence,主要⽤于实体检测;⼀个基于Tree Structures ,主要⽤于关系抽取;后者堆在前者上,前者的输出和隐含层作为后者输⼊的⼀部分。
这是⼀种典型的基于参数共享的联合模型,两个双向LSTM-RNN结构分别⽤于检测实体和分类关系,它们是单独训练的,但是loss是加在⼀起同时进⾏反向传播和更新的。
② 联合解码的经典模型
将实体识别和关系分类转化为序列标注问题,然后提出了⼀个端到端模型,通过编码层对句⼦进⾏编码,将隐藏层向量输⼊解码层然后直接得到SPO三元组,没有将抽取过程分为实体识别和关系分类两个⼦过程。
对输⼊的句⼦,⾸先,编码层使⽤Bi-LSTM来进⾏编码;之后,解码层再使⽤基于LSTM的改进型进⾏解码;最终,输出模型标注好的实体、关系三元组。
参数共享⽅法和联合解码⽅法的优缺点对⽐,通过如下对⽐,参数共享⽅式在模型选择中会相对有优势。
除了从模型结构上分析管道模型和联合抽取模型外,同样对于实体关系抽取任务,也需要考虑解码⽅式,解码⽅式对实体关系抽取性能的影响也很⼤,按照解码⽅式划分,⼀共有三种⽅式如下:
(1) 序列标注
基于序列标注的解码⽅式通常会使⽤CRF作为解码器,使⽤结合BIO或者BIOES标签的联合标签,每个token标记⼀个tag标签。解码层的任务就是确定每个token的tag,CRF能够进⾏标签约束,解码效果⽐直接使⽤Softmax更好。
(2) 指针⽹络
使⽤MRC机器阅读理解中⼤量使⽤的指针⽹络来对关系抽取中的输⼊句⼦进⾏标注,使⽤多个标签序列(多层label⽹络)来表⽰⼀个句⼦。该指针⽹络采⽤了两个标签序列,⼀个表⽰实体的起始位置,另⼀个表⽰实体的结束位置。在解码时使⽤Sigmoid代替Softmax,预测每个token对应的标签是0还是1。
(3) ⽚段分类
⽚段分类⽅法找出所有可能的⽚段组合,然后针对每⼀个⽚段组合求其是否是实体的概率。针对⼀个句⼦,⽚段排序⽅法从开始位置起依次选取⼀个token,两个token组成实体可能的⽚段,然后求该⽚段是否是实体的概率。在确定所有的实体之后,对所有实体两两配对,然后求每⼀对实体对之间存在关系的概率。例如,如果有N个实体,M种关系,那么存在N × N个实体对(实体对是有序的),需要求N × N × M个概率,来判断每个实体对之间的关系。如果⽂本过⻓,⽚段分类会产⽣⼤量的负样本,在实际中需要限制span⻓度并合理削减负样本。
三种解码⽅式的对⽐如下:
对不同模型结构和解码⽅式的分析对⽐,以及业界的经验推荐,可以选择如下⼏种实体关系抽取任务的最佳模型,对⽐如下:
(1) ETL-span
该模型的抽取⽅案借鉴了 seq2seq 的概率图思路。在 seq2seq 解码器的解码过程是层次递归进⾏的,其实际上是在建模
P(y1,y2,…,yn∣x)=P(y1∣x)P(y2∣x,y1)…P(yn∣x,y1,y2,R,yn−1)
⽽对于信息抽取任务,三元组的抽取过程也能够转化为上述层次递归的⽅式进⾏抽取,对于三元组(s, o, p),其抽取过程可以建模为:
P(s,p,o)=P(s)P(o∣s)P(p∣s,o)
整个模型可以分为三⼤部分,第⼀部分Shared Encoder,是模型的编码层,将输⼊的每个字编码为字向量。第⼆部分HE Extractor使⽤Shared Encoder的结果抽取(s,o,p)三元组中的主体s,第三部分TER Extractor也使⽤Shared Encoder的结果作为输⼊,同时还要使⽤HE Extractor抽取出的s作为触发词,抽取o和p。模型的loss是HE Extractor和TER Extractor两部分的loss之和,通过共享参数的⽅式训练。
HE Extractor和TER Extractor都使⽤了⼀种新的结构来抽取结果,这个新结构由两个双向LSTM组成,分别⽤来预测⽬标实体的开始位置和结束位置,预测结束位置的LSTM会使⽤预测开始位置的LSTM的结果作为特征,通过增加约束来避免不合理的预测结果,⽐如预测的结束位置在开始位置前⾯。
(2) HBT
该模型设计了⼀种 Hierarchical Binary Tagging 的框架,这个框架将三元组的抽取任务建模为三个级别的问题,从⽽能够更好解决三元组重叠的问题。其核⼼观点就是不再将关系抽取的过程看作实体对的离散标签,⽽是将其看作两个实体的映射关系,即f(s,o)−>r,整个三元组的过程可以概括为:
① 抽取三元组中的subject
② 针对每⼀个f(s,o)−>r,抽取其对应的object
这种思想和上⾯的ETL-span模型的思想极为相似,HBT模型也是先抽取出主体,然后使⽤主体作为触发词来抽取主体对应的客体和关系。
模型的整体结构主要包括如下⼏个部分:
BERT Encoder:通过 BERT 得到每个词的词表征,把BERT的输出当作词向量使⽤。
Subject Tagger:该部分⽤于识别所有可能的subject对象。其通过对每⼀个位置的编码结果⽤两个分类器(全连接层)进⾏分类,来判断其是否是实体的开始或结束位置,激活函数为 sigmoid,计算公式如下:
pistart_s=σ(Wstartxi+bstart)
piend_s=σ(Wendxi+bend)
Relation-specific Object Taggers:针对每⼀个 subject,都需要对其进⾏之后的 object 进⾏预测。由图中可知,其与 Subject Tagger 基本⼀致,主要区别在于每⼀个关系类别独享⼀组 object 分类器,同时还要将subject作为特征和BERT词向量拼接后作为输⼊,计算公式如下:
pistart_o=σ(Wstartr(xi+vsubk)+bstartr)
piend_o=σ(Wendr(xi+vsubk)+bendr)
(3) SpERT
SpERT是⼀个使⽤⽚段分类作为解码⽅式的联合模型,SpERT分为span classification 、SpanFiltering和relation classification三层结构。span classification 和 Span Filtering层对实体进⾏筛选和识别,relation classification 进⾏关系抽取。
SpERT使⽤Bert获取⽂本的向量表⽰。之后,使⽤⽚段分类的⽅法,⽤枚举的⽅式将所有可能的⽂本⽚段列举出来,然后计算⽂本⽚段是实体的概率,计算实体概率时⽤到了token的向量、⽂本⽚段⻓度和特殊标记cls作为特征,拼接后作为span分类阶段的输⼊。为了减⼩计算量,模式设置了⽂本⽚段的最⼤⻓度。
在获得实体表⽰后,SpERT通过将实体两两配对然后对每⼀对实体对求它们之间关系的概率。考虑到需要分类的关系太多,SpERT在关系分类过程中还使⽤了负采样。
(4) DYGIE
DYGIE是⼀个多任务的信息抽取框架,该框架可以在不经过修改的情况下,同时完成命名实体识别、关系抽取和共指消解三个不同的NLP任务。DYGIE构建了⼀个可以更新的动态图,以实体span作为图中的节点,⽤关系信息和共指信息来构建边,span的表⽰可以通过从关系信息和共指信息获得的上下⽂信息进⾏更新优化。
(5) 属性抽取
属性抽取主要是针对实体⽽⾔的,通过属性可形成对实体的完整勾画。由于实体的属性可以看成是实体与属性值之间的⼀种名称性关系,因此可以将实体属性的抽取问题转换为关系抽取问题。
知识融合,即合并两个知识图谱(本体),⽬的是将来⾃多个来源的关于同⼀个实体或概念的描述信息融合起来。
知识融合包括以下⼏个部分
本体匹配(ontology matching)
侧重发现模式层等价或相似的类、属性或关系,也成为本体映射(mapping)、本体对⻬(alignment)。
实体对⻬(entity alignment)
侧重发现指称真实世界相同对象的不同实例,也称为实体消解(resolution)、实例匹配(instancematching)。
知识融合(knowledge fusion)
⼀般通过冲突检测、真值发现等技术消解知识图谱融合过程中的冲突,再对知识进⾏关联与合并,最终形成⼀个⼀致的结果。
⽬前在知识融合⽅⾯,实体对⻬是研究的热点。实体对⻬(Entity Alignment)也被称作实体匹配(Entity Matching),是指对于异构数据源知识库中的各个实体,找出属于现实世界中的同⼀实体。
实体对⻬常⽤的⽅法是利⽤实体的属性信息判定不同源实体是否可进⾏对⻬。传统的实体对⻬⽅法主要通过属性相似度匹配的⽅式实现,利⽤有监督学习的机器学习模型,如:决策树、⽀持向量机、集成学习等。依赖实体的属性信息,通过属性相似度,进⾏跨平台实体对⻬关系的推断。基于知识表⽰学习的⽅法通过将知识图谱中的实体和关系都映射低维空间向量,直接⽤数学表达式来计算各个实体之间相似度,下⾯介绍IPTransE(Iterative Entity Alignment via Joint Knowledge Embeddings)。
⼤多数现有的⽅法通常依赖于诸如维基百科之类的实体外部信息,并且需要⼤量的⼈⼯标注特征来完成对⻬。本⽂提出了⼀种基于联合知识表⽰的实体对⻬⽅法。算法分为三部分:知识表⽰,联合表⽰,实体对⻬迭代。知识表⽰部分采⽤了经典的TransE模型。⽽在联合表⽰部分,为将不同KG的实体和关系映射到⼀个统⼀的低维语义空间,基于⼀组已对⻬的实体⼦集,设计了三种模型: (1) 受到基于翻译的KRL⽅法启发,将对⻬视为实体之间的⼀种特殊关系,在需要对⻬的实体之间执⾏特定的翻译模型来学习联合表⽰。 (2) 线性变换模型,即学习两实体之间的线性变化矩阵。 (3) 参数共享模型:利⽤变量之间依赖性的先验知识替代正则化变量。最终通过实体迭代对⻬⽅式,缩⼩联合语义空间中的语义距离,提⾼实体对⻬性能。
模型总体架构如下:
该图表明了该⽅法通过TransE与参数共享和软对⻬实现。蓝⾊和红⾊的点分别表⽰来⾃和的实体,灰⾊箭头在和中都表⽰关系。KG之间的实线和虚线表⽰迭代学习中的对⻬种⼦和新对⻬的实体对。使⽤KG和score函数之间的链接来表⽰嵌⼊源和相应的⽬的地。相同的颜⾊表⽰相同的实体/关系和相应的嵌⼊。
对于知识图谱⽽⾔,其最为常⻅的表⽰⽅式是采⽤三元组的表⽰⽅式,通过三元组,我们可以表⽰不同事物之间的语义关系,以及事物与属性之间的属性关系在获取知识图谱的表⽰之后,我们就拥有了⼀部分的事实,⽽知识图谱的知识推理就是在基于已有的知识图谱的事实的基础上,推理出新的知识或者识别出知识图谱上已有知识的错误。
主要的⽅法包含基于逻辑规则的推理、基于图结构的推理、基于分布式表⽰学习的推理、基于神经⽹络的推理以及混合推理等,这⾥重点介绍基于神经⽹络推理模型R-GCN和混合推理模型ConMask。
R-GCN
这个算法是来⾃阿姆斯特丹⼤学 Michael Schlichtkrull ⼤佬和 Thomas N. Kipf ⼤佬于 2017 年合作的⼀篇论⽂《Modeling Relational Data with Graph Convolutional Networks》。主要有两⼤突破:
证明了 GCN 可以应⽤于关系⽹络中,特别是关系预测和实体分类中;引⼊权值共享和系数约束的⽅法使得 R-GCN 可以应⽤于关系众多的⽹络中。
模型整体结构⻓这样,与常规GCN不同,它引⼊了由边的类型与⽅向决定的关系转换,+的后⼀项表⽰节点的⾃连接。红⾊部分为实体,与蓝⾊的邻居节点进⾏矩阵运算,再对每种关系的边类型进⾏转换,得到绿⾊部分的已做归⼀化处理的结果和,累加后经过激活函数传出,并更新模型的节点参数。
针对实体分类来说,只使⽤了堆叠的 R-GCN 并在最后⼀层叠加了⼀个 Softmax 层⽤于分类;针对关系预测(链接预测)作者考虑使⽤ DistMult 分解作为评分函数,并使⽤负采样的训练⽅式:对于观测样本,考虑ω 个负样本,并利⽤交叉熵损失进⾏优化。结构分别如下图:
关系预测的准确性⽐较:
ConMask
通过利⽤知识库中已存在的实体和关系进⾏知识图谱补全, 我们定义为“Closed-World KGC”,即“封闭世界知识图谱补全”:此类知识图谱补全⽅法严重依赖现有知识图谱连接,难以处理知识图谱
外部加⼊的新实体。
为了能够应对知识图谱外部的未知新实体, Shi 等⼈于2018年《Open world Knowledge GraphCompletion》论⽂中进⼀步定义了“开放世界知识图谱补全”,该类⽅法可以接收知识库外部实体并将其链接到知识图谱。基于上述思想提出 ConMask 模型,该模型主要分为三部分操作:
依赖于关系的内容遮蔽(Relationship-dependent content masking):筛选⽂本信息,删去⽆关信息,仅留下与任务有关的内容,其中模型采⽤attention机制基于相似度得到上下⽂的词和给定关系的词的权重矩阵,通过观察发现⽬标实体有时候在权重⾼的词(indicator words)附近,提出 MCRW 考虑了上下⽂的权重求解⽅法。
⽬标融合(Target fusion):使⽤全卷积神经⽹络从相关⽂本抽取⽬标实体的embedding(⽤FCN即全卷积神经⽹络的⽅法);这个部分输⼊是masked content matrix,每层先有两个 1-D 卷积操作,再是sigmoid激活函数,然后是 batch normalization,再是最⼤池化。FCN的最后⼀层接的是均值池化⽽不是最⼤池化,以确保⽬标融合层的输出始终返回单个k维嵌⼊。
⽬标实体解析(Target entity resolution):⽣成候选实体和抽取实体嵌⼊之间的相似度排名,通过计算KG中候选实体和抽取实体embedding的相似度,结合其他⽂本特征得到⼀个ranked list,rank最⾼的认为是最佳结果。并设计了⼀个损失函数list-wise rankign,采样时按50%的⽐例替换head和tail⽣成负样本以增强模型鲁棒性。
综上,整体ConMask的模型结构如下:
链接预测任务上的实验结果:
该模型能够应对知识图谱外部的未知新实体,适⽤于动态知识图谱的知识推理。
知识图谱分析是指通过对知识图谱中的实体、属性和关系进⾏统计、挖掘和分析,来提取知识和信息的过程。知识图谱分析可以为各个领域提供有价值的信息和洞⻅,并在实践中发挥重要的作⽤。
常⻅的知识图谱可视化分析⼯具有以下⼏种:
将概念实体的数据结构映射到数据图书馆中:
将关系实体的数据结构映射到数据图书馆中:
• 步骤3:创建图谱数据库连接
点击左上⻆菜单,选中数据源进⼊:
选中neo4j数据库:
将图谱数据库的连接信息填⼊并进⾏测试,测试成功后保存:
• 步骤4:实体创建
在数据图书馆中,创建⼀个客⼾个⼈信息实体,以及两个关系实体,并将属性进⾏填写完整。
新建数据资产:
选中neo4j数据库,进⼊后选择刚创建的图谱数据库连接名:
开始在此库中设计实体并创建:
设计客⼾个⼈信息实体和属性如下:
另外的关系实体也⽤同样⽅式创建完毕。
• 步骤5:实体关系创建
选中概念实体客⼾个⼈信息打开:
将关系实体亲戚关系和同事关系添加到图谱关系中:
• 步骤6:实体和关系加载
点击左上⻆菜单,选中数据交换机进⼊:
将输⼊数据源图元拖⼊画布中,在图书馆中选择客⼾个⼈信息,将此表作为输⼊。同时拖⼊neo4j加载图元到画布中,完成字段到属性的⼀⼀映射,在关系建⽴中是否更新选择是,⾄此实体加载流程配置完成。点击左上⻆执⾏按钮,完成实体数据加载(此处可配置定制任务)。
同理,完成另外两个关系实体的加载。
• 步骤7:图谱分析
点击左上⻆菜单,选中数据分析仪进⼊:
点击新增,图谱分析:
选中需要分析的图谱概念实体,选择添加概念和实体后就出现了图谱关系图:
利⽤平台⾃带的操作选项即可进⾏图谱关系探索分析:
⾄此,图谱分析就构建完毕了,是不是很简单呀?!
知识图谱已在很多⾏业和领域都有⼴泛的应⽤场景,如: