本章将详细讲解知识图谱的构建技术。首先介绍知识表示与建模的基本概念和方法,包括实体、关系和属性的表示方式。读者将了解如何将现实世界的知识抽象成结构化的形式,并为后续的知识图谱构建奠定基础。
此外,本章还会介绍知识抽取的技术,包括基于规则的抽取、基于机器学习的抽取和基于深度学习的抽取。读者将了解如何从非结构化文本、半结构化数据和结构化数据中提取实体、关系和属性信息,并将其转换为知识图谱中的结构化数据。接着,将探讨知识存储的方法,包括图数据库、关系数据库和图文件格式等。读者将了解如何有效地组织和存储知识图谱的数据,以支持高效的查询和推理。此外,本章还将介绍知识融合的技术,包括实体链接、关系抽取和实体对齐等。读者将了解如何将来自不同数据源的知识进行融合,构建更加完整和一致的知识图谱。最后,将探讨知识推理的方法,包括基于规则的推理、基于逻辑的推理和基于图神经网络的推理等。读者将了解如何利用推理技术从知识图谱中推断出新的知识和关联关系。
对现有知识进行表示和建模是构建知识图谱的基础和准备工作,知识表示与知识建模是知识图谱构建的第一步,其目的是将现实世界中的各种实体、概念、关系等抽象为计算机可处理的形式。知识表示与知识建模是知识图谱构建的基础,能够支持后续的知识抽取、知识存储、知识融合、知识推理等步骤的实现。
知识表示可以看作成用计算机可理解的方式对世界上的一切所想要表示的事物进行翻译表达。这种计算机的表示将我们所理解的一切事物进行转换,以供我们更好地理解和使用。
知识表示是认知科学和人工智能中的一个常见问题。在认知科学中,它涉及人类如何存储和处理数据。在人工智能中,它的主要目标是存储知识,让程序可以处理,实现人类智能。目前,该领域还没有完美的答案。
知识表示主要分为3类:经典知识表示、语义网中的知识表示和知识图谱中的知识表示。其中,经典知识图谱涉及大量传统人工智能内容,包括逻辑、框架系统和语义网络3种方式。此外,经典知识表示还有其他的表示方法,如产生式规则表示法、分布式知识表示、概率图模型、马尔可夫链(马尔可夫逻辑网络)等多种表示方法。
谓词逻辑表示法是指各种基于形式逻辑的知识表示方式,适合于表示事物的状态、属性、概念等事实性知识,也可以用来表示事物间具有确定因果关系的规则性知识。它是人工智能领域中使用较早和较广泛的知识表示方法之一。其根本目的在于把教学中的逻辑论证符号化,根据对象和对象上的谓词(即对象的属性和对象之间的关系),通过使用连接词和量词来表示世界。 [1]
逻辑语句,更具体地说,一阶谓词演算(first order predicate calculus)是一种形式语言,其根本目的在于把数学中的逻辑论证符号化。如果能够采用数学演绎的方式证明一个新语句是从哪些已知正确的语句导出的,那么也就能断定这个新语句也是正确的。
产生式表示法,又称规则表示法,有时被称为IF-THEN表示,它表示一种条件-结果形式,是一种比较简单的表示知识的方法。IF后面的部分描述了规则的先决条件,而THEN后面的部分描述了规则的结论。规则表示法主要用于描述知识和陈述各种过程知识之间的控制,及其相互作用的机制。
例如,MYCIN系统中有下列产生式知识(其中,置信度称为规则强度)。IF本生物的染色斑是革兰性阴性,本微生物的形状呈杆状,病人是中间宿主,THEN该微生物是绿脓杆菌,置信度为0.6。
框架(frame)是把某一个特殊事件或对象的所有知识存储在一起的一种复杂的数据结构。其主体是固定的,表示某个固定的概念、对象或事件,其下层由一些槽(slot)组成,表示主体每个方面的属性。框架是一种层次的数据结构,框架下层的槽可以看成一种子框架,子框架本身还可以进一步分层次为侧面。槽和侧面所具有的属性值分别称为槽值和侧面值。槽值可以是逻辑型或数字型的,具体的值可以是程序、条件、默认值或是一个子框架。相互关联的框架连接起来组成框架系统,或称框架网络。
例如,用框架表示下述地震事件:[虚拟新华社3月15日电]昨日,在云南玉溪地区发生地震,造成财产损失约10万元,统计部门如果需要详细的损失数字可电询62332931。另据专家认为震级不会超过4级,并认为地处无人区,不会造成人员伤亡。
面向对象的知识表示法是按照面向对象的程序设计原则组成一种混合知识表示形式,就是以对象为中心,把对象的属性、动态行为、领域知识和处理方法等有关知识封装在表达对象的结构中。在这种方法中,知识的基本单位就是对象,每一个对象由一组属性、关系和方法的集合组成。一个对象的属性集和关系集的值描述了该对象所具有的知识;该对象通过操作在属性集和关系集上的值作用于知识上的知识处理方法,其中包括知识的获取方法、推理方法、消息传递方法以及知识的更新方法。
语义网络表示法是知识表示中最重要的方法之一,是一种表达能力强而且灵活的知识表示方法。它是通过概念及其语义关系来表达知识的一种网络图。从图论的观点看,它是一个“带标识的有向图”。语义网络利用节点和带标记的边构成的有向图描述事件、概念、状况、动作及客体之间的关系。带标记的有向图能十分自然地描述客体之间的关系。
例如,用语义网络表示下列知识:中南大学湘雅医学院是一所大学,位于长沙市,建立时间是1914年。
在XML中,数据对象使用元素描述,而数据对象的属性可以描述为元素的子元素或元素的属性。XML文档由若干个元素构成,数据间的关系通过父元素与子元素的嵌套形式体现。在基于XML的知识表示过程中,采用XML的文档类型定义(document type definition,DTD)来定义一个知识表示方法的语法系统。通过定制XML应用来解释实例化的知识表示文档。在知识利用过程中,通过维护数据字典和XML解析程序把特定标签所标注的内容解析出来,以“标签+内容”的格式表示具体的知识内容。知识表示是构建知识库的关键,知识表示方法选取得合适与否不仅关系到知识库中知识的有效存储,而且直接影响系统的知识推理效率和对新知识的获取能力。
本体是一个形式化的、共享的、明确化的、概念化规范。本体论能够以一种显式、形式化的方式来表示语义,提高异构系统之间的互操作性,促进知识共享。因此,最近几年,本体论被广泛用于知识表示领域。用本体来表示知识的目的是统一应用领域的概念,同时构建本体层级体系表示概念之间的语义关系,实现人类、计算机对知识的共享和重用。5个基本的建模元语是本体层级体系的基本组成部分,这些元语分别为类、关系、函数、公理和实例。通常也把classes(类)写成concepts。将本体引入知识库的知识建模,建立领域本体知识库,可以用概念对知识进行表示,同时揭示这些知识之间内在的关系。领域本体知识库中的知识,不仅通过纵向类属分类,而且通过本体的语义关联进行组织和关联,推理机再利用这些知识进行推理,从而提高检索的查全率和查准率。 [2]
知识图谱的知识建模是指将现实世界中的实体和概念抽象成计算机可理解的形式,以便于知识的存储、共享和利用。常见的知识建模方法包括本体建模和实体关系建模。
(1)本体建模是指对现实世界中的概念进行抽象和形式化,以便于计算机能够理解和处理。本体描述了现实世界中实体和概念之间的关系和属性,并提供了一个统一的语言和模型,用于在不同应用领域中共享和重用知识。本体建模的主要技术包括本体语言的设计和本体编辑工具的使用。
(2)实体关系建模是指对现实世界中的实体及其关系进行建模,以便于计算机能够对实体和关系进行有效的存储和查询。实体关系建模的主要技术包括实体关系模型的设计和数据库建模工具的使用。
知识图谱的建模可以根据具体领域和应用需求进行扩展和定制。扩展知识图谱的建模可以包括引入新的实体类型和关系类型,定义领域特定的属性和约束,以及结合领域知识进行模型调整和扩展。通过合理的知识建模和扩展,可以建立丰富、准确和可表达的知识图谱,为各种应用场景提供更全面和精准的知识支持。
在知识图谱中,知识建模不局限于本体建模和实体关系建模,还包括对实体和关系的语义建模、事件建模、时间建模等方面。通过对知识建模的不断优化和扩展,可以更加准确地表达现实世界中的知识,从而提高知识图谱的质量和应用效果。
以下是一些对知识建模进行扩展和优化的方向。
语义建模:除了定义实体和关系的基本属性,还可以通过语义建模描述它们的语义含义和语义关联。例如,使用语义标签、词汇表、词义消歧等技术,可以更准确地表达实体和关系之间的语义关联,提高知识图谱的语义一致性和理解能力。
事件建模:在某些应用场景中,需要对事件进行建模和描述。事件建模可以包括定义事件类型、事件发生时间、事件参与者,以及事件与实体、关系之间的关联等。通过事件建模,可以更好地捕捉现实世界中的事件信息,并将其与其他知识元素进行关联。
时间建模:时间是知识图谱中一个重要的维度,可以对时间进行建模和描述。时间建模可以包括定义时间点、时间段、时间序列等概念,以及时间与实体、关系之间的关系。通过时间建模,可以实现对知识的时序分析、趋势推断等功能,进一步丰富知识图谱的表达能力。
属性建模:除基本属性外,可以考虑对属性进行更细粒度的建模和扩展。例如,可以引入属性的数据类型、单位、可选值域等约束,以提供更丰富的属性描述和数据校验能力。同时,还可以探索属性之间的关系,如属性的依赖关系、互斥关系等,以增强知识图谱对属性之间关联的建模能力。
通过对知识建模的不断扩展和优化,可以更好地捕捉和表达现实世界的知识,提高知识图谱的表达能力和应用效果。这些扩展和优化可以根据具体领域和应用需求进行,使知识图谱更加贴近实际应用场景,并为各种知识驱动的应用提供更强大的支持。
知识抽取是知识图谱构建中重要的一个环节,知识抽取是指从不同来源、不同结构的数据中进行知识的提取。知识抽取的数据源可以是结构化、半结构化、非结构化的数据,不同类型的数据源需要采用不同的策略来进行知识抽取。知识图谱的目的是进行知识抽取并存储到知识库中,往往需要将不规则的数据结构化成三元组进行存储。通过知识抽取,我们可以从新闻中提取出关键信息,进行数据挖掘等操作,或者针对对话文本进行知识抽取,常见应用于AI机器人领域。谷歌搜索通过知识抽取提取重点信息,提高了搜索的效率。
知识抽取任务主要由三个子任务构成。
(1)实体抽取,抽取文本中的命名实体,并分类。例如,中国的首都是北京。北京、中国、首都均可称为实体,地点则称为分类。
(2)关系抽取,是指从文本中抽取实体与实体之间的关系。例如,从句子“邓超与孙俪于2015年结婚”中识别出邓超与孙俪是夫妻关系,即具有关系“夫妻”。
(3)事件抽取,识别文本中关于事件的信息并结构化。例如,从斯大林格勒战役中识别事件发生的地点、时间、军事目标、军事成果等信息。
实体抽取又被称为命名实体识别(named entity recognition,NER),从文本中识别出实体信息并加以归类,如时间、地点等。
NER的发展历程如图2.1所示。
图2.1 NER的发展历程
基于模型划分,NER可以分为基于规则的方法、基于统计的学习方法、基于深度学习的方法。从输入的层面,NER可以分为基于字的方法、基于词的方法、两者结合的方法。NER基于模型划分可以分为以下三种方法。
(1)基于规则的方法:依赖人工制定的规则,一般由领域学家或者语言学家编写抽取规则,规则的设计一般基于句法、语法、词汇的模式,以及特定领域的知识。当词典的大小有限时,基于规则的方法可以达到很好的效果。基于规则的抽取方法通常具有高精确率和低召回率的特点。这种方法往往只能针对特定领域,无法匹配到其他领域,对于新的领域需要重新制定规则,且系统会过于依赖知识库和词典的建立,系统建设周期长。
(2)基于统计的学习方法:基于统计机器学习的方法主要包括隐马尔可夫模型(hidden Markov model,HMM)、最大熵(maximum entropy)、支持向量机(support vector machine,SVM)、条件随机场(conditional random fields,CRF)。
(3)基于深度学习的方法:目前实体抽取的主流方法是将机器学习模型与深度学习相结合。
接下来介绍BiLSTM-CRF模型和BERT-BILSTM-CRF模型。
BiLSTM-CRF(Bidirectional Long Short-Term Memory - Conditional Random Field)模型是一种常用于序列标注任务的深度学习模型。在该模型中,每个句子按照词序逐个输入双向LSTM(long short-term memory)中进行处理。双向LSTM由两个LSTM网络组成,一个按照正向顺序处理输入序列,另一个按照反向顺序处理输入序列。这样可以同时利用正向和反向的上下文信息,提供更全面的语境理解。
在BiLSTM-CRF的输出中,将正向和反向LSTM的隐层状态进行结合,得到每个词属于每个实体类别标签的概率。这些概率值将作为输入传递给CRF,用于对标签序列进行建模和优化。CRF通过建模相邻标签之间的转移概率和当前标签的输出概率,可以对整个标签序列进行全局一致性约束,从而得到最优的标签序列输出。
BiLSTM-CRF模型的结构如图2.2所示。该模型的训练目标是优化一个目标函数,通常是最大化标注序列的对数似然函数。通过使用大量标注好的数据进行训练,模型可以学习到词与实体类别之间的关联关系,并能够对未标注的数据进行准确的序列标注。
图2.2 BiLSTM-CRF模型的结构
BiLSTM-CRF模型在序列标注任务中具有广泛的应用,特别适用于命名实体识别等需要对文本序列中的实体进行识别和分类的任务。它在自然语言处理领域的许多任务中取得了显著的成果,如实体抽取、关系抽取、情感分析等。其优势在于能够处理长期依赖关系和上下文信息,并通过CRF层对标签序列进行全局优化,提高标注的准确性和一致性。
进一步的研究和发展可以包括对BiLSTM-CRF模型的改进和扩展。例如,引入注意力机制以更好地捕捉关键信息,结合外部知识库进行联合训练,探索更复杂的网络结构和预训练技术等。此外,将BiLSTM-CRF模型与其他深度学习模型结合,如BERT(bidirectional encoder representations from transformers)等,可以进一步提升序列标注任务的性能和效果。
BERT-BiLSTM-CRF模型是指在LSTM-CRF的基础上,将embedding向量替换为BERT预训练模型输出的词表征,并将LSTM替换为双向LSTM,然后再输入给CRF模型。BERT-BiLSTM-CRF模型如图2.3所示。
图2.3 BERT-BiLSTM-CRF模型
BERT-BiLSTM-CRF模型的基本原理和步骤如下。
BERT预训练模型:BERT是一种基于Transformer架构的深度双向编码器,通过在大规模文本语料上进行无监督预训练,学习到了丰富的词表征。BERT模型能够通过上下文理解词语的语义和语境信息,生成更具表达能力的词向量。
序列特征提取:与LSTM-CRF模型不同,BERT-BiLSTM-CRF模型的输入采用BERT预训练模型输出的词表征作为词向量。这些词向量已经经过预训练,能够更好地捕捉上下文信息和语义关联。然后,将这些词向量作为输入传递给双向LSTM网络。
双向LSTM(BiLSTM):与LSTM-CRF模型相同,双向LSTM由两个LSTM网络组成,一个按照正向顺序处理输入序列,另一个按照反向顺序处理输入序列。这样可以同时捕捉到当前词的前后上下文信息。
CRF层:与LSTM-CRF模型相同,CRF层用于对标签序列进行建模和优化。通过考虑当前标签的输出概率和相邻标签之间的转移概率,通过全局一致性约束,对标签序列进行优化,得到最优的标签序列输出。
损失函数和训练:与LSTM-CRF模型相同,BERT-BiLSTM-CRF模型的训练目标是最大化标注序列的对数似然函数。通过优化算法(如随机梯度下降)最小化损失函数,模型可以学习到词与标签之间的关系。
通过引入BERT预训练模型,BERT-BiLSTM-CRF模型能充分利用大规模预训练数据中的丰富语义和语境信息,从而提升词语表示的表达能力。这有助于提高序列标注任务的准确性和泛化能力。
除了BERT预训练模型,还可以结合其他预训练模型(如GPT、XLNet等)进行改进和扩展,进一步提升模型的表达能力和性能。同时,还可以探索其他神经网络结构、注意力机制等技术。
关系抽取是指从语义中抽取关系,语义关系存在于两个实体或者多个实体之间。语义关系通常联系两个实体,并与实体一起表达文本的主要含义。常见的关系抽取结果可以用SPO结构的三元组来表示,即(Subject, Predication,Object)。“中国首都北京”表示中国与北京的首都关系,这可以用三元组(中国,首都,北京)来表示。
主流的关系抽取的方法可以分为基于规则的关系抽取方法、基于监督学习的关系抽取方法、基于弱监督学习的关系抽取方法、基于无监督学习的关系抽取方法。监督学习最适用于预测、分类、性能比较、预测分析、定价和风险评估等任务。半监督学习往往对一般数据创建和自然语言处理有意义。至于无监督学习,它在性能监测、销售功能、搜索意图以及潜在的更多方面有一定的地位。
早期的实体抽取通常是由模板匹配实现,基于规则抽取的方法匹配准确率高,但是只能在小规模和特定领域的关系抽取问题上取得比较好的效果,覆盖率不高,且切换其他领域场景难度较高。基于模板规则的方法常见的有基于触发词的模板、基于依词分析的模板。
1)基于触发词的模板
定义一套模板,如x的首都y,根据触发词首都,从“中国首都北京”提取出关系,同时通过NER给出关系的参与方。
2)基于依词分析的模板
以动词为起点构建规则,对节点上的词性和边上的依存关系进行限定。一般情况下包括形容词+名字或动宾短语等情况,因此相当于以动词为中心结构做的模板。执行流程为:①先进行分析、词性标注、命名实体识别;②依词分析等处理,对句子根据依词分析语法树匹配规则,符合规则的生成相应的三元组;③对抽取出的三元组根据扩展规则进行扩展;④对相应的三元组实体和触发词进一步处理,取出语义关系。
基于监督学习的关系抽取方法将关系抽取转换为分类问题,在大量标注数据的基础上,训练有监督学习模型进行关系抽取。执行流程为:①预先定义好关系的类别;②人工标注数据;③设计特征表示;④选择一个分类模型(SVM、NN、朴素贝叶斯),基于标注数据进行训练;⑤评估模型方法。
基于监督学习的抽取方法准确率高,标注的数据越多就越准确。但缺点是标注成本过高,不方便扩展。基于监督学习的方法主要有流水线(pipeline)训练和联合学习。
(1)流水线训练。即识别实体和关系分类是完全分离的两个过程,不会相互影响,关系的识别依赖于实体识别的效果,这样做的好处是各模型相互独立,设计上较为容易,但误差会逐层传递,步骤太多有可能导致后续不可用。
(2)联合学习。与流水线训练相比,联合学习方法同时抽取实体和实体之间的关系,联合学习方法通过实体识别和关系分类联合模型,直接得到存在关系的实体三元组,主要是基于RNN、CNN、LSTM及其改进模型的网络结构。
弱监督学习介于监督学习和无监督学习之间,弱监督学习对少量的数据进行标注,只利用少量的标注数据进行模型训练,在不足的条件下提高模型在标记样本中的泛化能力。主要方法包括远程监督学习和Bootstrapping。
1)远程监督学习
远程监督学习方法就是将知识库和非结构化文本数据对齐,自动构建大规模训练数据,减少模型对人工标注数据的依赖,增强模型的跨领域适应能力。如果两个实体在知识库中存在某种关系,那么远程监督方法将会认为包含这两个实体的句子中均存在这种关系。远程监督可以利用知识库减少一定的人工标注,但是因为假设太过肯定,引入大量噪声,存在语义漂移。在没有高质量的标注数据时,可以采用这种方法短时间内生成大量标注数据。
远程监督的流程是:①从知识库中抽取存在关系的实体对;②从非结构化文本中抽取含有实体对的句子作为训练样例;③训练模型进行关系抽取。
2)Bootstrapping
Bootstrapping通过在文本中匹配实体对和表达关系短语模式寻找新的关系三元组,该方法构建成本低,适合大规模的构建,同时还可以发现新的关系。缺点是初始种子集比较敏感,存在语义漂移,准确率较低。
从文本中提取关系,无监督学习不需要标注任何训练数据,提供一组种子元组或编写规则来提取文本中的关系。
聚类(clustering)是无监督学习中常见的过程。聚类寻找数据点的相似点并将类似的数据分类,对类似数据进行聚类也可以对数据进行更准确的分析。在有大量数据的情况下,聚类也可以用来降低数据的维度。
降维(dimension reduction)就是在保证数据所具有的代表性特性或者分布的情况下,将高维数据转换为低维数据的过程。它减少了数据集中的属性数量,从而使生成的数据与正在解决的问题更加相关。
事件抽取是知识图谱中的重要任务,它涉及从自然语言文本中提取出用户感兴趣的事件信息,并将其以结构化的形式展现出来。除了时间、地点和参与者等属性,事件通常还包括其他重要信息,如事件类型、事件描述等。事件的发生通常是由于某个动作的产生或系统状态的改变。
为了完成事件抽取任务,需要进行多个阶段的分类工作。首先,需要识别文本中的事件触发词和确定事件类型,这可以通过使用分类器来判断特定词汇是不是事件触发词。接下来,需要抽取出事件元素,即与事件直接相关的实体或概念。这可以借助分类器来判断词组或句子是不是事件元素。同时,对于每个事件元素,还需要确定其角色类别,如事件的主体、客体或其他关系。为此,需要使用分类器来判定元素的角色类别。
通过以上的分类工作,可以逐步完成事件抽取任务,将自然语言文本中的事件信息转换为结构化的形式,以丰富和完善知识图谱中的实体和关系。这样的事件抽取过程可以提供更准确和精细的事件描述,使知识图谱更具表达能力,支持更多的知识驱动应用,如事件推理、时间线分析等。进一步的研究和发展还可以涉及对事件的时间顺序关系的建模和处理,以及对事件描述的语义解析和推理等方面,以进一步提升事件抽取的效果和应用能力。
知识图谱以图结构对知识进行建模和表示,所以常将知识图谱中的知识作为图数据进行存储。实验阶段的小规模知识图谱多使用文件对知识进行存储。在面对大规模知识图谱的查询、修改、推理等需求时,可以考虑使用数据库管理系统对知识进行存储。
知识存储主要有3种选择:基于表结构的关系型数据库、RDF存储系统和原生图数据库。原生图数据库和RDF存储系统可以直接用于知识图谱的存储,关系型数据库通常不会被直接用于知识存储。由于关系型数据库使用广泛、技术成熟,有不少RDF存储系统使用关系型数据库作为底层存储方案,对RDF数据进行存储。
当今主流的数据库是关系型数据库。基于表结构的关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解。关系型数据库依托于关系数据模型创建数据库,关系模型利用二维表格来存储数据,二维表也被称为关系。二维表是一列二维数组的集合,由行和列组成,非常方便于查询和读取,代表与存储对象之间的关系。
在数据库技术发展的历史上,1970年6月,IBM圣约瑟研究实验室的高级研究员埃德加·考特(Edgar Frank Codd)在 Communications of The ACM 上发表了《大型共享数据库数据的关系模型》这一划时代的关于数据库的论文。经过几十年的发展,随着关系型数据库的理论基础与相关技术产品的丰富完善,也出现了众多稳定、高性能的数据库产品:商业数据库包括Oracle、DB2和SQL Server等;开源数据库包括PostgreSQL和MySQL等。关系型数据库具有原子性、一致性、持久性、隔离性4种特性,除了便于使用和维护,还具备很强的安全性和事物保证性,所以被广泛使用。
基于关系数据库的存储方案是目前知识图谱采用的一种主要存储方法。基于表结构的知识存储利用二维数据表对知识图谱中的数据进行存储,典型的有关系型数据库、三元组表、类型表。
(1)关系型数据库:表中每一列称为一个属性,也称字段,用来描述实体集的某个特征。元组(tuple)以表中每一行表示,由一组相关属性的取值构成,相对完整地描述了一个实体。
(2)三元组表:知识图谱中的事实是一个个的三元组,一种最简单直接的存储方式是设计一张三元组表存储知识图谱中所有的事实。
(3)类型表:在构建数据表时,考虑了知识图谱的类别体系,为每种类型构建一张表,同一类型的实例存放在同一张表中。表的每一列表示该类实体的属性,表的每一行存储该类的每一个实例,不同类别的公共属性存储在上一级类别对应的数据表中,下级表继承上级表的所有属性。类型表解决了三元组表过大和结构简单的问题,但多表连接操作开销大,并且大量的数据表难以进行管理 [3] 。
RDF存储系统是构建知识图谱的重要基础设施之一。知识图谱是一个由实体、属性和它们之间的关系组成的大规模图形数据集合,其中的实体、属性和关系可以通过RDF三元组进行描述和存储。RDF存储系统通过将RDF三元组存储为图中的节点和边的方式,实现对知识图谱的存储和管理。RDF存储系统提供了标准的RDF数据查询语言(SPARQL)和RDF数据模型(RDF Schema和OWL),可以帮助用户更加高效地检索和理解知识图谱中的数据。此外,RDF存储系统还具有可扩展性和可配置性等优点,可以方便地处理和管理不断增长和变化的知识图谱数据,为知识图谱提供了可靠的数据存储和管理能力,同时也为知识图谱的查询、推理、可视化等功能提供了支持。
RDF用三元组的结构来描述资源,每个三元组由主语、谓词、宾语3个元素构成。根据RDF标准,每一个三元组称为陈述,多个语句的集合称为描述。可以将RDF三元组的集合看作图数据的一种表示,所以可以认为RDF存储系统是一种严格遵循语义网标准的图数据库。
常见的三元组存储系统有gStore、RDF4J、Virtuoso、AllegroGraph、BlazeGraph、GraphDB、Jena等,下面进行详细介绍。
1)开源RDF三元组数据库gStore
gStore是一款面向RDF知识图谱的开源图数据库系统,是由北京大学计算机所数据管理实验室研发的面向RDF知识图谱的开源图数据库系统(通常称为Triple Store),采用原生的图数据模型(native graph model)来管理RDF数据,保留了原始RDF知识图谱的图结构。其数据模型是有标签、有向的多边图,每个顶点对应一个主体或客体。该系统使用基于图结构的索引(VS-tree)来加速SPARQL查询,将查询转换为面向RDF图的子图匹配查询。gStore的单机存储容量可达50亿条边,分布式系统在标准百亿边规模测试集上达到秒级查询响应延迟。此外,gStore图数据库的更新性能可以达到十万条边每秒。
gStore已经作为开源项目发布,源代码和文档可以在GitHub(https://github.com/pkumod/gStore)项目网站下载。gStore只能在Linux系统上运行。
2)开源RDF三元组数据库RDF4J
RDF4J是由荷兰软件公司Aduna作为On-To-Knowledge的一部分创建的,这是一个从1999年到2002年运行的语义网络项目。RDF4J是一个功能强大的数据库,用于处理RDF数据。这包括使用RDF和关联数据创建、解析、可扩展存储、推理和查询。它提供了一个易于使用的API,可以连接到所有领先的RDF数据库解决方案。它允许用户连接SPARQL端点并创建利用链接数据和语义Web的强大功能的应用程序。
RDF4J完全支持用于表达查询的SPARQL 1.1查询和更新语言,并使用与本地访问完全相同的API提供对远程RDF存储库的透明访问。RDF4J支持所有主流RDF文件格式,包括RDF/XML、Turtle、N-Triples、N-Quads、JSON-LD、TriG和TriX。图2.4所示为RDF4J的模块化架构,来源自RDF4J官方网站。
图2.4 RDF4J的模块化架构
3)商业RDF三元组数据库Virtuoso
Virtuoso数据库是一个商业付费的图数据库,Virtuoso Universal Server是一个建立在现有开放标准之上的现代平台,它利用超链接(充当超级密钥)的力量来打破阻碍用户和企业能力的数据孤岛。Virtuoso是一个高性能的对象关系SQL数据库。作为数据库,它提供事务、智能SQL编译器、强大的存储过程语言以及可选的Java和.Net服务器端托管、热备份、SQL-99支持等。它具有所有主要的数据访问接口,如ODBC、JDBC、ADO .Net和OLE/DB。OpenLink Virtuoso支持嵌入SQL的SPARQL,用于查询存储在Virtuoso数据库中的RDF数据。SPARQL受益于引擎本身的低级支持,如SPARQL感知的类型转换规则和专用的IRI数据类型。例如,Virtuoso的核心SQL和SPARQL为许多企业知识图计划提供支持,就像它们为DBpedia和链接开放数据云(世界上最大的可公开访问的知识图)中的大多数节点提供支持一样(Virtuoso的网址为https://virtuoso.openlinksw.com/)。图2.5是Virtuoso数据库示例,为Virtuoso部署成功后Web展示页面。Virtuoso同时发布了商业版本Virtuoso Universal Server(Virtuoso统一服务器)和开源版本OpenLink Virtuoso。开源版本可以在GitHub(https://github.com/openlink/virtuoso-opensource)找到,在sourceforge上同时也提供免费版本(https://sourceforge.net/projects/virtuoso/files/virtuoso/)。
图2.5 Virtuoso数据库
4)商业RDF三元组数据库AllegroGraph
AllegroGraph是一个数据库和应用程序框架,用于构建基于高性能三重存储的企业知识图谱解决方案。可以使用Java、Python、Lisp和HTTP接口管理数据和元数据,并使用SPARQL和Prolog进行查询。AllegroGraph带有社交网络分析、地理空间、时间和推理能力。AllegroGraph FedShard™是目前最新的功能(截至笔者结稿),可提供大规模的横向可扩展性。图2.6显示了AllegroGraph架构(来源为AllegroGraph官方网站)。
5)商业RDF三元组数据库Blazegraph
Blazegraph在1.5版本之前叫作Bigdata,改名Blazegraph之后,其开发理念也有所调整。原来仅仅是支持RDF三元组存储和SPARQL,现在已经定位为全面支持Blueprints标准的图数据库。Blazegraph是基于标准的、高性能、可扩展的开源图数据库。该平台完全用Java编写,支持SPARQL 1.1系列规范,包括查询、更新、基本联合查询和服务描述。大数据支持持久命名解决方案集的新颖扩展、高效存储和查询具体语句模型,以及可扩展的图形分析。数据库支持多租户,可以部署为嵌入式数据库、独立服务器、高度可用的复制集群,并且作为类似的服务水平分片联合到Google的bigtable、Apache Accumulo或Cassandra。Blazegraph的官方网站为https://blazegraph.com/,GitHub项目代码地址为https://github.com/blazegraph/blazegraph-samples。图2.7是Blazegraph的服务架构(来源为Blazegraph官方网站)。
图2.6 AllegroGraph架构
图2.7 Blazegraph架构
原生图存储模式专门为存储和处理图而设计,可支持各类图算法的快速遍历;非原生图存储则采用关系数据库、面向对象数据库或其他通用数据存储策略存储数据,未专门优化存储方式。
原生图存储的特点和优势如下。
图数据模型:原生图存储采用图数据模型来表示和存储数据,其中节点和边是图的基本元素。这种模型直观地反映了数据之间的关系和连接,使图算法和图查询能够以更自然的方式进行。
快速遍历:原生图存储采用了高效的数据结构和索引技术,可以实现快速的图遍历。这对于许多图算法(如最短路径、图聚类、社区检测等)是非常重要的,因为它们需要在图中进行大规模的遍历和探索。
图算法支持:原生图存储针对各类图算法进行了优化,提供了丰富的图算法库和函数,使图分析和挖掘任务更加高效和灵活。这些图算法可以直接在原生图存储上执行,无须数据的转换或迁移。
相比之下,非原生图存储采用了关系数据库、面向对象数据库或其他通用数据存储策略来存储图数据。这些存储方式并没有针对图数据的特点进行专门优化,因此在图遍历和图算法执行方面可能会存在性能瓶颈。虽然非原生图存储在一些场景下可以满足基本需求,但对于大规模图数据和复杂图算法来说,通常无法提供高效的处理能力。随着图数据应用的不断增长,原生图存储在图数据库和图计算领域得到了广泛应用。它为用户提供了更好的图数据管理和处理能力,使图分析成为可能,并在社交网络分析、推荐系统、生物信息学、物联网等领域发挥着重要的作用。
Neo4j是世界上目前最流行的图数据库之一。其架构旨在优化管理、存储和遍历节点及关系。图数据库采用属性图方式,对遍历性能和操作运行时间都有好处。与大多RDF三元组数据库采用SPARQL语言不同的是,Neo4j采用专用的查询语言Cypher。Cypher语言允许用户从图形数据库存储和检索数据。它是一种声明性的、受SQL启发的语言,用于使用ASCII艺术语法描述图形中的视觉模式。该语法提供了一种视觉和逻辑方式来匹配图中节点和关系的模式。Cypher的设计易于所有人学习、理解和使用,同时也融合了其他标准数据访问语言的强大功能。Neo4j社区版目前只支持单机部署,如果想要实现分布式部署,则需要购买商业版。图2.8是Neo4j图数据的浏览器界面。
与Neo4j不同的是,JanusGraph开源免费,适合个人开发使用,可以让用户更方便地不计成本地扩展图数据的处理,并支持实时图遍历和分析查询。JanusGraph的架构如图2.9所示(来源为JanusGraph官方网站)。
图2.8 Neo4j图数据库
图2.9 JanusGraph架构
因为JanusGraph是分布式的,可以自由地扩展集群节点,因此,它可以利用很大的集群,也就可以存储很大的包含数千亿个节点和边的图。此外,它还支持实时、数千用户并发遍历图和分析查询图的功能。JanusGraph的这两个特点是它的显著优势。
知识融合是指将不同来源的知识进行整合和合并,以形成更全面、一致和准确的知识表示。在知识图谱中,知识融合是一个重要的任务,它可以帮助消除数据的冗余和不一致性,提高知识的质量和准确性。
知识融合描述的是多个来源的、关于同一个实体或概念的描述信息融合。知识图谱的知识来源广泛,不同来源的数据会造成知识重复,系统需要同时处理不同领域知识库和不同领域的知识,将数据合并融合构建统一的知识库。知识融合合并实体时,需要确认等价实例、等价类/子类、等价属性/子属性,除了实体对齐,还存在概念层的融合、跨语言的融合等工作。
知识图谱包含描述知识的本体层和描述具体事实的实例层。
(1)本体层是指描述特定领域的抽象概念、属性、公理。在本体层,通过定义本体,可以对领域中的概念进行建模。本体包括实体类、属性和关系的定义,以及它们之间的层次结构、约束条件和推理规则。本体的设计可以帮助理解和组织领域知识,使知识图谱能够更好地表示和推理领域内的概念和关系。
(2)实例层是指描述具体的实体对象和实体间存在的关系。实例是指领域中具体的个体或事物,可以是人、地点、事件、产品等。实例层的数据可以从不同的来源获取,包括文本、数据库、网络等。通过将这些实例与本体层中定义的概念和关系进行关联,可以构建起一个丰富的知识图谱。
知识融合通常由本体匹配和实体对齐组成。本体匹配和实体对齐是知识融合的重要组成部分。本体匹配是指将不同本体中相似的概念进行匹配和对应,以建立概念间的对应关系。实体对齐则是将不同数据源中描述同一实体的信息进行匹配,以建立实体间的对应关系。通过本体匹配和实体对齐,可以将来自不同数据源的知识整合到一个一致的知识图谱中,提供更全面和准确的知识表示。
知识融合的目标是实现跨数据源的知识互操作性,使不同领域的知识可以相互补充和利用。这对于知识图谱的应用和推理具有重要意义,可以提供更丰富的知识支持和智能决策。
知识融合的异构可以划分为两个层次,即语义层异构和模型层异构。
语义层异构指的是语法、逻辑、元语、表达能力等不相匹配。语法异构指的是采用不同的描述语言,导致语法不匹配,涉及的描述语言有RDF、OWL、JSON、XML;逻辑异构指的是逻辑表示不匹配,如disjointWith、A NOT B AND B NOT A;元语异构指的是元语语义差别,如Class在OWL DL和OWL FULL上;表达能力异构指不同语言表达能力差异,一些语言具有表示概念全集和概念空集的概念,如OWL: Thing、OWL:Nothing。
模型层异构指的是概念化、解释不匹配,是指由于本体建模方式不同所造成的不匹配,包括不同的建模者对事物的概念化抽象不匹配、对相同概念或关系的划分方式不匹配,以及对本体成分解释的不匹配。
概念化不匹配示例:动物既可以按照食性分为食肉、食草、腐食、杂食动物,也可以按照哺乳方式分为哺乳和非哺乳动物。
解释不匹配示例:“算账”在不同场景有不同意思,既可以表示会计计算,也可以表示吃亏或失败后和人进行争执较量,有报复的意思。
本体匹配(ontology matching)指发现建立不同本体的实体之间的关系,也可以称为本体对齐、本体映射。本体匹配系统一般包括预处理、匹配器匹配、匹配抽取、结果输出等过程。下面介绍基于术语和基于结构的匹配方法。
该方法基于本体的术语,依据本体相关的名称注释等信息比较异构本体,同时又分为基于字符串和基于语言的方法。基于术语的匹配方法的核心在于本体的概念和属性的文本向量化,通过向量相似度实现文档匹配。
(1)基于字符串的方法:将术语字符串结构化比较,在字符串比较之前进行字符串规范化,有利于结果比较。相似度计算可以采用Levenshtein距离、汉明距离、Dice系数、TF-IDF来计算。
(2)基于语言的方法:是指采用自然语言处理技术来发现关系,又分为内部方法和外部方法。内部方法通过语言的内部属性寻找同一字符串的不同语言形态;外部方法通过外部的资源来发现关系。
结构匹配法使用本体结构的信息弥补文本信息不足,本体中的概念属性通常具备大量的其他概念和属性,可以看成一种图结构。Anchor-PROMPT算法 [4] :如果两对术语相似且有连接路径,那么路径中的元素也通常相似,如图2.10所示。(A,B)(H,G)两对配对术语,A、H的距离为3,B、G的距离为3,C与D相似,D与F相似。生成一对小于一定长度L的路径连接两个本体的anchor,且路径相等,对于路径中间的节点,增加相似度得分。Anchor-PROMPT算法如图2.10所示(图片来源于Anchor-PROMPT算法 [4] )。
图2.10 Anchor-PROMPT算法
实体对齐(entity alignment)是指发现对齐相同对象的不同实例,也可以称为实体消解、实例匹配。实体对齐可以划分为成对实体对齐和集体实体对齐。
成对实体对齐的方法有基于传统概率模型的实体对齐方法和基于机器学习的实体对齐方法。
(1)基于传统概率模型的实体对齐方法主要是考虑实体属性之间的相似性,而不考虑实体之间的关系,通过属性相似度评分来评判实体匹配程度,建立模型提高匹配精确度。
(2)基于机器学习的实体对齐方法将实体转换为二分类问题,根据是否标注数据又可以分为有监督学习和无监督学习。有监督学习方法主要是通过标注数据建立模型训练进行实体对齐;无监督学习方法主要是通过聚类算法的方式进行实体对齐。
集体实体对齐经典的方法有SiGMa算法 [5] ,SiGMa是一种迭代传播算法,它利用关系图中的结构信息以及贪婪局部搜索中实体属性之间的灵活相似性度量,从而使其具有可扩展性。经典的还有基于概率模型的CRF模型等。
知识推理是指在已有知识的基础上,推理并发现隐藏、未知知识的过程。推理作为知识图谱中重要的一环,可进一步完善、扩展知识库。就知识推理而言,主要包括两种:一种是已知知识中的发现,另一种是利用现有知识推导归纳得出新知识。常见的推理方式有基于规则的推理、基于表示学习的推理、基于图结构的推理。
基于规则的推理主要是通过运用简单的规则、约束条件或者统计方法进行推理。
基于规则的推理方法可解释性强,例如:A属于B、B属于C,可以得出A属于C。该方法经常需要提前编写规则或者通过统计的方法归纳出规则进行推理,大规模数据推荐通过统计的方法生成规则。基于规则的推理方法还可以将规则与各种概率图模型结合,在构建好的逻辑网络基础上进行推理得出事实。ProbKB [6] 是一个概率知识库,项目旨在通过可扩展的学习和推理来构建网络规模的概率知识库,由Web规模提取的实体、事实和表示为马尔可夫逻辑网络(MLN)的规则构建而成。ProbKB允许一种高效的基于SQL的推理算法来完成知识,并批量应用MLN推理规则。
基于表示学习的推理的核心是将实体、属性、关系映射到向量空间中,将其作为机器学习算法的输入。
分布式表示学习的推理方法包括了张量分解、距离模型和语义匹配模型。张量分解中典型的有RESCAL [7] 模型,是张量因子分解模型的代表性方法,该模型的主要思想是三阶张量分解,三元组→实体*关系矩阵。知识图谱中基于距离模型,经典的有TransE模型 [8] ,作者提出了一种将实体和关系嵌入到低维向量空间中进行计算的建模方法,通过将关系解释为在实体的低维嵌入上操作的翻译来对关系进行建模,该方法较为简单、参数较少,是基于距离建模的开山之作。广泛的实验也表明TransE在两个知识库上的链接预测中明显优于当时最先进的方法。基于语义匹配模型,经典的有语义匹配能量SME模型。首先将实体和关系投映到输入层中的嵌入向量,然后将关系r与头尾实体分别组合至隐藏层,输出则是评分函数。SME有线性和双线性两个版本。
基于图结构的推理方法最经典的有路径排序方法,它基于路径排序算法(path ranking algorithm,PRA)。该方法使用实体之间的路径作为特征进行链接预测推理,PRA是图谱路径推理早期的经典作品,PRA算法处理的推理问题是关系推理,在推理过程中包含两个任务:第一个任务是给定头实体h和关系r来预测尾实体t,叫作尾实体链接预测;第二个任务是利用尾实体t和关系r来预测头实体h,叫作头实体链接预测。PRA算法主要是自底向上构建的知识图谱,这种方法构建的图谱含有较多噪声。
[1]莫宏伟,徐立芳.人工智能导论[M].北京:人民邮电出版社,2020.
[2]刘建炜,燕路峰.知识表示方法比较[J].计算机系统应用,2010,20(3):242-246.
[3]闫树,魏凯,洪万福.知识图谱技术与应用[M].北京:人民邮电出版社,2019.
[4]NOY N F, MUSEN M A. Anchor-PROMPT: using non-local context for semantic matching[J]. In Proceedings of the workshop on Ontologies and Information Sharing at the International Joint Conference on Artificial Intelligence, 2001, 63-70.
[5]LACOSTE-JULIEN S, PALLA K, DAVIES A, et al. Sigma: simple greedy matching for aligning large knowledge bases[J]. the 19th ACM SIGKDD international conference on Knowledge discovery and data mining, 2013, 572-580.
[6]WANG D Z, YANG C. Web-scale knowledge inference using markov logic networks[J]. ICML workshop on Structured Learning: Inferring Graphs from Structured and Unstructured Inputs, 2013.
[7]NICKEL M, Tresp V, KRIEGEL H P. A three-way model for collective learning on multi-relational data[J]. ICML'11: Proceedings of the 28th International Conference on International Conference on Machine Learning, 2011, 809-816.
[8]BORDES A, USUNIER N, GARCIA-DURAN A, et al. Translating Embeddings for Modeling Multi-relational Data[J]. Proceedings of NIPS, 2013, 1-9.