构建知识图谱技术:产品视角下的知识图谱构建流程与技术理解
构建知识图谱技术:产品视角下的知识图谱构建流程与技术理解目前,解决本体异构、消除应用系统间的互操作障碍是很多知识图谱应用面临的关键问题之一。构建一个大规模,高质量的知识图谱是需要很大工作量的,实际使用中,如果能够把已有的知识图谱和其他成熟的知识图谱联合使用,或者多个系统信息交互使用,将大大提升知识图谱的规模和效能。数据库的直接映射中,生成的RDF图的结构直接反映了数据库的结构,目标RDF词汇直接反映数据库模式元素的名称,结构和目标词汇都不能改变。而通过使用R2RML,用户可以在关系数据上灵活定制视图。已经有一些标准和工具支持将数据库数据转化为RDF数据、OWL本体等,如D2RQ、Mastro、Ultrawrap、Morph-RDB等。
半结构化数据抽取主要是从网页中提取,一般通过包装器实现,包装器是能够将数据从HTML网页中抽取出来,并将它们还原为结构化数据的软件程序。
结构化的数据抽取一般是按照规则映射,W3C的RDB2RDF工作组于2012年发布了两个推荐的RDB2RDF映射语言:DM(Direct Mapping,直接映射)和R2RML。
直接映射规范定义了一个从关系数据库到RDF图数据的简单转换,将关系数据库表结构和数据直接转换为RDF图,关系数据库的数据结构直接反映在RDF图中,基本规则包括:
- 数据库中的表映射为RDF类;
- 数据库中表的列映射为RDF属性;
- 数据库表中每一行映射为一个资源或实体,创建IRI;
- 数据库表中每个单元格的值映射为一个文字值(LiteralValue);
- 如果单元格的值对应一个外键,则将其替换为外键值指向的资源或实体的IRI。
R2RML映射是通过逻辑表(Logic Tables)从数据库中检索数据。
数据库的直接映射中,生成的RDF图的结构直接反映了数据库的结构,目标RDF词汇直接反映数据库模式元素的名称,结构和目标词汇都不能改变。
而通过使用R2RML,用户可以在关系数据上灵活定制视图。
已经有一些标准和工具支持将数据库数据转化为RDF数据、OWL本体等,如D2RQ、Mastro、Ultrawrap、Morph-RDB等。
七、知识融合构建一个大规模,高质量的知识图谱是需要很大工作量的,实际使用中,如果能够把已有的知识图谱和其他成熟的知识图谱联合使用,或者多个系统信息交互使用,将大大提升知识图谱的规模和效能。
目前,解决本体异构、消除应用系统间的互操作障碍是很多知识图谱应用面临的关键问题之一。
知识融合是指使来自不同知识源的知识在同一框架规范下进行异构数据整合、消歧、加工、推理验证、更新等步骤,将同一个概念或实体的描述信息关联起来。
简而言之,将多个知识图谱用一套规范联合使用起来,就叫知识图谱融合(也叫知识融合),虽然益处显而易见,但融合也存在很多问题,其中最主要的问题是异构问题。
其实异构就是不同图谱对于同一个事物的认识和表示存在冲突,没法把不同图谱中的本体和实例一一对应起来,从而造成使用出现错误。
造成异构的原因有很多,典型的如:
- 人类的知识体系非常复杂;
- 一些知识还受到个人主观看法的影响;
- 前沿知识会不停的发展变化;
- 同一领域有不同组织构建自己的知识库,交叉领域中的交叉知识往往是独立构建的等等。
由此导致的异构问题又包含本体异构和实例异构,具体表现为:
- 同一领域内往往存在着大量本体,且它们描述的内容在语义上往往有重叠或关联;
- 本体在表示语言和模型上具有差异;
- 同名的实例可能指代不同实体;
- 不同名的实例可能指代同一实体。
知识融合的目的就是解决知识图谱异构问题,建立起不同图谱内异构本体和异构实例之间的关系,要成功建立这样的关联,还需要先了解不能匹配的原因。
知识图谱中的异构形式主要可以划分为两个层次:
语言层不匹配和模型层不匹配。
具体如下:
语言层不匹配:
指的是用来描述知识的元语言是不匹配的,其中既包括描述知识语言的语法和所使用的语言原语上的不匹配,还包括定义类、关系和公理等知识成分机制上的匹配。
模型层不匹配:
指的是由于本体建模方式不同所造成的不匹配,包括不同建模者对事物的概念化抽象不匹配、对相同概念或关系的划分方式不匹配,以及对本体成分解释的不匹配。
目前,解决本体异构有两种思路:
1. 本体集成
本体集成,顾名思义,就是将多个本体合并为一个大本体,最直接的做法是将多个本体进行集成,变成一个统一的本体,提供统一的语义规范和共享词汇,这样就可以统一交互。
但这样操作容易使集成后的本体太大,不好修改与维护。
目前应用较多的是基于全局本体 – 局部本体的集成,通过抽取异构本体之间的共同知识,建立一个全局本体,这个全局本体代表了不同系统之间的共识,而每个系统可以保留自己的本体,称为局部本体。
局部本体既可以在全局本体的基础上扩充,也可以直接建立自己的本体。
全局本体与局部本体建立映射,局部本体侧重于特定的知识,全局本体保证不同系统异构间的部分能相互交互。
2. 本体映射
寻找本体间的映射规则,将不同本体间建立联系,如上边提到的局部本体和全局本体的映射。
第一步要明确本体映射分类,这是建立异构本体间映射的基础。
分类可以按照映射的对象、映射的功能、映射的复杂程度来进行。
- 映射的对象:明确映射应该建立在异构本体的哪些成分之间。
- 映射的功能:明确应该建立具有何种功能的本体映射。
- 映射的复杂程度:明确说明什么形式的映射是简单的,什么形式的映射是复杂的。
在确定本体映射的分类后,最重要也是最困难的任务在于如何发现异构本体间的映射。
手工建立关系非常耗时,目前的研究热点是采用合理的方法和工具进行自动或半自动的构建。
不同的本体映射的方法使用的技术不同,但过程基本是相似的。
- 导入待映射的本体:不一定统一本体语言,但映射成分需方便获取。
- 发现映射:利用一定的算法,如计算概念间的相似度等,寻找异构本体间的联系,然后根据这些联系建立异构本体间的映射规则。
- 表示映射:将这些映射合理地表示起来,根据映射的类型,借助工具将发现的映射合理表示和组织。
在进行实例层之间的相互融合时,计算数据量巨大,如何在降低计算的时间复杂度、空间复杂度的前提下提升匹配质量,是一个两难的问题,目前主要方法与简介如下:
八、知识图谱推理、知识统计与图挖掘通过知识表示,我们确定了知识以什么样的方式组织、表示和储存,使人类和计算机有了认识和使用知识图谱的基础;知识抽取则是从各种已有的数据库,专业知识和互联网上文本、表格等。
提取出我们关心的数据,并通过各种方法爬取,清洗,将原本结构化、半结构化、非结构化的各种非图谱数据变为图谱中可用的、结构化的图谱数据,相当于建成了基本的知识图谱。
建立了知识图谱后,为了实现不同系统间的的知识图谱的交互,让不同图谱对应到统一的本体和实例,需要进行知识图谱融合,知识融合极大的拓展了知识图谱的规模和应用场景。
通过以上三步,基本上就构建了有一定规模和实用性,可以实现不同系统间交互的知识图谱,即实现了数据的从无到有,从有到有用的过程。
下一步就是使用知识图谱,通过各种计算与分析从大数据中获取价值,进而进一步支持语义搜索,智能问答,辅助分析等应用场景。
从知识图谱构建到应用的中间一步,就是知识图谱推理、知识统计与图挖掘。
先说知识统计与图挖掘,其实就是传统意义上的数据统计与挖掘,只不过数据是知识图谱,而图相对树、链表等又是比较复杂的,尤其是知识图谱规模较大,有时寻找特定数据或关联数据要耗费大量的时间和算力。
查询又是知识图谱中最常见的计算,比如要查询某一个实例及其关联信息,RDF三元组中可以将其转变为对于关系型数据库的查询。
而对RDF图模型或者图数据库如Neo4J来说,这就是查询符合条件的一部分节点和关系,即子图查询,比如搜索“水泥是由什么组成的”,就是搜索“水泥”以及所有与其存在“组成”关系(或者与其他组成同义词,如“原材料”,“用于建造”等)的节点所构成的图,使用的算法如深度优先搜索或广度优先搜索等图算法。
同时还可以对图的特征进行统计,比如有向图中指向某个节点的边有多少(入度),该节点指向其他节点的边有多少(出度),节点在图中重要地位的中心度等等。
比如统计图谱中某一家公司与其他公司的到期未偿还债务关系多少(属于“到期未偿还”关系的边和节点的多少),按此来选择一批信用不良的公司,或者某些出入度离群的点,是否存在刷单情况等等,将图谱用于异常检测。
还有一种很常见的情况,就是对图谱中多个节点关系进行关联分析,比如侦破金融里的团队诈骗,往往一个诈骗团队有非常复杂的关系网,可以通过图谱查找多个账户之间的转账关系,或者与可以账户关系密切的账户。
其中常用的方法有路径查询、距离计算,输出结果为节点及节点间边 的距离和边的集合(路径)。
或者对某一个节点或事件做时序分析,观察事件发展中都涉及那些团体和事件,常见的方法如时序分析。
知识统计与图挖掘是对图谱中已有知识的查询、统计和展示,通过明细数据的展示,或者聚合成更高维度的数据来发掘价值,通常是得到新的结论,但不会拓展知识图谱中已有的数据,从知识图谱的角度来说是没有产生新的知识。
而知识推理则是根据已有的知识,按照某种规则或者策略,产生新的知识(新的三元组)。
举个前面提到的例子,知识图谱中存在<砂石,组成,水泥>和<水泥,组成,混凝土>两个三元组,通过知识推理,可以得到<砂石,组成,混凝土>,即通过一定的知识推理得到未知的事实与关系。
知识推理有很多应用,如知识问答就可以通过知识推理来实现,或者可以补全一部分知识图谱,检测与推理内容不一致的节点。这些一方面可以改正知识图谱的质量,修复一些明显的错误,另一方面在知识问答中可以推出一些新的结论和回答。
面向知识图谱的推理主要围绕关系的推理展开,即基于图谱中已有的事实或关系推断出未知的事实或关系,一般着重考察实体、关系和图谱结构三个方面的特征信息。
知识图谱的推理的主要技术手段主要可以分为两大类:
基于演绎的知识图谱推理和基于归纳的知识图谱推理。
演绎推理是一种自上而下的推理,在指在给定的一个或多个前提的情况下,推断出一个必然成立的结论的过程,我们熟悉的三段论就是典型的演绎推理。
演绎推理的过程需要明确定义的先验信息,比如在某某前提下,所以基于演绎的知识图谱推理大多围绕本体展开,比如某事物具备某一属性,则必然不存在于与该属性互斥的事物范围内。
演绎推理中的一个大类是基于描述逻辑的推理,描述逻辑(Description Logic)是基于对象的、一种形式化知识表示的逻辑。描述逻辑是OWL语言实现逻辑推理的基础,OWL语言重要的词语如互为逆关系,子类等就是实现逻辑推理的基础。
描述逻辑是一阶谓词逻辑的一个可判定子集,所谓可判定,就是保证了推理算法总是能够终止的,可以得出结论的。要理解描述逻辑就需要先理解一阶谓词逻辑。
人类的一条知识一般可以由具有完整意义的一句话或几句话表示出来,而这些话可以用一些谓词公式(用谓词联接符号将一些谓词联接起来所形成的公式)表示出来,比如张三是一个学生,可以表示为isStudent(张三),这里isStudent(x)是一个谓词,表示x是一个学生。
这样很贴近自然语言,也可以被计算机存储与识别,所以是一种很常用的知识表示方法。
一个描述逻辑系统由四个基本部分组成:
- 最基本的元素:概念、关系、个体
- TBox术语集:概念术语的公理集合
- Abox断言集:个体的断言集合
- TBox 和 ABox上的推理机制
概念即解释为一个领域的子集;关系解释为该领域上的二元关系,如<x y>|朋友(x y);个体解释为一个领域内的实例。 TBox为术语集,它是泛化的知识,是描述概念和关系的知识,被称之为公理。
ABox是断言集,指具体个体的信息,ABox 语言包含概念断言和关系断言,概念断言即表示一个对象是否属于某个概念,关系断言表示两个对象是否满足特定的关系。
描述逻辑的各种算子,对应到owl语言中就是各种词汇,如算子⊑对应subClassof;描述逻辑依据提供的构造算子 在简单的概念和关系上构造出复杂的概念和关系。
基于本体推理的方法常见的有基于 Tableaux 运算的方法、基于逻辑编程改写的方法、基于一阶查询重写的方法、基于产生式规则的方法等。
归纳推理是一种自下而上的推理,是指基于已有的部分观察得出一般结论的过程,典型的归纳推理有归纳泛化(指基于对个体的观察而得出可能适用于整体的结论)、统计推理(将整体的统计结论应用于个体)。
基于归纳的知识图谱推理主要是通过对知识图谱已有信息的分析和挖掘进行推理的,最常用的信息为已有的三元组。
按照推理要素的不同,基于归纳的知识图谱推理可以分为以下几类:基于图结构的推理、基于规则学习的推理和基于表示学习的推理。
九、知识检索与知识分析经历了知识建模与表示、知识抽取、知识图谱融合、知识图谱计算与推理之后,知识图谱已经是相对完善的数据库了,可以在其基础上创造应用,服务具体的场景。
在知识图谱的应用阶段已经简要说明了通用领域知识图谱和专用领域知识图谱的应用,这里只聚焦其中三项技术:搜素、问答系统、推荐系统。
1. 搜索
知识图谱依托庞大的数据和关系对,可以对搜索进行增强,不但针对搜索词展示出最接近的信息,还把相关的选项也展示出来,提高了查准率和查全率,另外可以通过图谱化的展现和互动让用户更加方便的了解信息。
具体来说,是通过语义搜索、关系搜索和结构化展现实现的。
万维网之父Tim Berners-Lee是这样定义语义搜索的:
“语义搜索的本质是通过数学来拜托当今搜索中使用的猜测和近似,并为词语的含义以及它们如何关联到我们在搜索引擎输入框中所找的东西引进一种清晰的理解方式”。
具体来说,首先将用户输入的问句进行解析,找出问句中的实体和关系,理解用户问句的含义,然后在知识图谱中匹配查询语句,找出答案,最后通过一定的形式将结果呈现到用户面前。
知识图谱本身是一个具有属性的实体通过关系链接而成的网状知识库,同时知识图谱本身可以和网页上的内容建立概念间的联系,将网络上的信息、数据、资源关联为语义知识,也就是实现了 WEB 从网页链接向概念链接的转变。
同时,相对于原来的按字符串模糊匹配的模式而言,语义搜索对用户的问句进行分析,找到实体和关系,通过NLP和知识推理理解用户的问句,并在知识图谱中尽可能多的找到相关信息,对回答进行相关度排序,实现了用户的按主题检索而不是传统的按字符串检索。
一个语义搜索系统的基本框架包括查询构建、查询处理、结果展示、查询优化、语义模型、资源及文档等。
具体的应用中,如搜索“混凝土”,不仅搜索混凝土,还会找到其在知识图谱中的上位词,下位词,同义词等词集合,比如砼(同义词)、轻质混凝土(下位词)等等。
返回的检索结果中也会包含这些信息,从而提高了查全率,如果用户检索的本意是查找混凝土中的一个子类,那么实际上还提高了查准率。
再比如搜索“同方集团股价”,会以大写的形式展示实时股价,而不是返回一个网页,这就是从文本中检索答案。另外还可以以图谱化的形式展现,将在可视化部分有限展开。
关系搜索和结构化展示其实属于知识推理、知识统计与图计算部分,在用NLP技术理解了用户的实体和关系要求后,就可以找到两个或多个对应的实体,直接在图谱中查询其互相关系,或者通过知识推理得出其相互关系。
或者是明确了某一实体,找到与其有对应关系的其他实体,比如找到与“混凝土”有“组成”关系的实体,并将其以图谱或表格的形式展示出来,即为结构化表示。
2. 问答系统
知识问答是用自然语言的方式与机器进行交互并得到答案,是知识图谱的重要应用。
问答是一种典型的智能行为,图灵测试就是看机器能否做到人一样的问答效果。
问答系统不但要求系统本身能够理解提问者的语义,还要求根据知识图谱进行知识搜索或知识推理以形成答案。
可以说问答系统是信息检索系统的一种高级形式,因为问答系统中同样有查询式理解和知识检索这两个重要过程,且与智能搜索中相应过程中的相关细节是一致的。
多数问答系统更倾向于将给定的问题分解为多个小的问题,然后逐一去知识库中抽取匹配的答案,并自动检测其在时间与空间上的吻合度等,最后将答案进行合并,以直观的方式展现给用户。
一个问答系统应具备的四大要素:
(1)问题
是问答系统的输入,通常以问句的形式出现(问答题),也会采用选择题、多选题、列举答案题和填空题等形式。
(2)答案
是问答系统的输出,除了文本表示的答案(问答题或填空题),有时也需要输出一组答案(列举问答题)、候选答案的选择(选择题)、甚至是多媒体信息。
(3)智能体
是问答系统的执行者,需要理解问题的语义,掌握并使用知识库解答问题,并最终生成人可读的答案;
(4)知识库
存储了问答系统的知识,其形态可以是文本、数据库或知识图谱。
也有工作将知识库编码到计算模型中,例如逻辑规则、机器学习模型和深度学习模型。
智能体利用知识库实现推理。根据知识库表示形式的不同,当前知识问答可以分为传统问答方法(符号表示)以及基于深度学习的问答方法(分布式表示)两种类型。
传统问答方法使用的主要技术包括关键词检索、文本蕴涵推理以及逻辑表达式等,深度学习方法使用的技术主要是LSTM、注意力模型与记忆网络(Memory Network)。
KBQA(knowledge base question answering,基于知识库的问答系统)采用了相对统一的基于RDF表示的知识图谱作为存储基础,并且把语义理解的结果映射到知识图谱的本体后生成SPARQL查询解答问题。
通过本体可以将用户问题映射到基于概念拓扑图表示的查询表达式,也就对应了知识图谱中某种子图。KBQA的核心问题Question2Query是找到从用户问题到知识图谱子图的最合理映射。
除了KBQA外,问答系统还有 CommunityQA/FAQ-QA(基于问答对匹配的问答系统)、 Hybrid QA Framework(混合问答系统框架)、基于深度学习的传统问答模块优化、基于深度学习的端到端问答模型,感兴趣的可自行查阅。