知识图谱旨在采用图结构来建模和记录世界万物之间的关联关系和只是,以便有效实现更加精准的对象级搜索。其相关技术可以应用在搜索引擎、语言理解、推荐计算、大数据决策分析等众多领域。如今,知识图谱已经是实现认知层面的人工智能不可或缺的重要技术之一。希望通过本文,能对知识图谱相关技术有初步了解。
什么是知识图谱
知识图谱是一种用图模型来描述只是和建模世间万物之间的关联关系的技术方法。知识图谱由节点和边组成,节点可以是实体,如一个人、一本书,或是抽象的概念,如人工智能、知识图谱等。边可以是实体的属性,如姓名、书名或者实体之间的关系,如朋友、配偶。
知识图谱旨在从数据中识别、发现和推断事物与概念之间的复杂关系,是事物关系的可计算模型。知识图谱的构建设计知识建模、关系抽取、图存储、关系推理、实体融合等多方面的技术。而知识图谱的应用则涉及语义搜索、智能问答、语言理解、决策分析等多个领域。构建并利用号知识图谱需要利用知识表示、图数据库、自然语言处理、机器学习扥多方面的技术。
国内外典型的知识图谱项目
早期的知识图谱项目
- Cyc是持续时间最久、影响范围较广、争议较多的知识库项目。其最初的目标是简历人类最大的常识知识库。
- WordNet是注明的词典知识库,由普林斯顿大学从1985年开始开发。主要定义了名词、动词、形容词和副词之间的语义关系。
- ConceptNet源于MIT媒体实验室的OMCS(Open Mind Common Sense)项目,类似于WordNet,但又比WordNet包含更多的关系类型。
互联网时代的知识图谱
- Freebase。一个开放共享、协同构建的大规模链接数据库。2010年谷歌受够了Freebase作为其知识图谱数据来源之一,2016年谷歌宣布将其数据和API服务全部迁移至Wikidata,并正式关闭Freebase。
- DBpedia。数据库版本的Wikipedia,是从Wikipedia中抽取出来的链接数据库。
- Schema.org。由Bing、Google、Yahoo和Yandex等公司共同支持的语义网项目。谷歌统计显示超过31%的网页和1200万家网站已经使用Wikipedia发布语义化的链接数据。
- Wikidata。其目的是构建一个免费开放、多语言、任何人或机器都可以编辑修改的大规模链接知识库。Wikidata继承了 Wikipedia的众包协作机制 , 但与 Wikipedia 不同的是, Wikidata 支持以三元组为基础的知识条目(Item) 的自由编辑。一个三元组代表一个关于该条目的陈述(Statement)。 例如,可以给 “地球”的条目增加”<地球,地表面积是, 五亿平方公里>”的三元组陈述。 截至 2018年 , WikidatWa 己经包含 超过 5000 万个知识条目。
- 此外还有BabeNet、NELL、Yago、Microsoft ConceptGraph和LOD等知识库
中文开放知识图谱
OpenKG是一个面向中文域开放的知识图谱社区项目,其主要目的是促进中文领域知识图谱数据的开放与互联。OpenKG.CN聚集了大量开放的中文知识图谱数据、工具及文献。典型的中文开放知识图谱数据包括百科类的Zhishi.me(狗尾草科技、 东南大学 )、CN-DBpedia (复旦大学)、 XLore(清华大学)、Belief-Engine (中科院自动化所)、PKUPie (北京大学)、ZhOnto(狗尾草科技)等。OpenKG对这些主要百科数据进行了链接计算和容和工作,并通过OpenKG提供开放的Dump或开放访问API,完成的链接数据库也免费向公众开放。此外,OpenKG还对一些重要的知识图谱开源工具进行了收集和整理,包括知识建模工具Protege、知识融合工具Limes、知识问答工具YodaQA、知识抽取工具DeepDive等。
垂直领域知识图谱
领域知识图谱是相对于DBPedia、 Yago、 Wikidata、百度和谷歌等搜索引擎在使用的知识图谱等通用知识图谱而言的,它是面向特定领域的知识图谱,如电商、 金融、医疗等。相比较而言,领域知识图谱的知识来源更多、规模化扩展要求更迅速 、知识结构更加复杂、知识质量要求更高、知识的应用形式也更加广泛 。
知识图谱的技术流程
知识图谱方法论涉及知识表示、知识获取、知识处理和知识利用等多个方面。一般流程为:首先确定知识表示模型,然后根据数据来源选择不同的知识获取手段导入知识,接着综合利用知识推理、 知识融合、知识挖掘等技术对构建的知识图谱进行质量提升,最后根据场景需求设计不同的知识访问与呈现方法,如语义搜索、问答交互 、图谱可视化分析等。下面简要概述这些技术流程的核心技术要素。
知识来源
从多种来源获取知识图谱数据,包括文本、结构化数据、多媒体数据、传感器数据和人工众包等。每一种数据源的知识化都需要综合各种不同的技术手段。
- 对于文本数据源,需要综合实体识别、实体链接、关系抽取、事件抽取等各种自然语言处理技术,实现从文本中抽取知识。
- 结构化数据库如各种关系数据库 ,也是最常用的数据来源之一。己有的结构化数据库通常不能直接作为知识图谱使用 , 而需要将结构化数据定义到本体模型之间的语义映射, 再通过编写语义翻译工具实现结构化数据到知识图谱的转化。此外,还需要综合采用实体消歧、数据融合、知识链接等技术,提升数据的规范化水平,增强数据之间的关联。
- 语义技术也被用来对传感器产生的数据进行语义化 。 这包括对物联设备进行抽象,定义符合语义标准 的数据接口;对传感数据进行语义封装和对传感数据增加上下文语义描述等 。
- 人工众包是获取高质量知识图谱的重要手段。例如,Wikidata和Schema.org都是较为典型的知识众包技术手段。此外,还可以开发针对文本、图像等多种媒体数据的语义标注工具 ,辅助人工进行知识获取。
知识表示与Schema工程
知识表示是指用计算机符号描述和表示人脑中的知识,以支持及其模拟人的心智进行推理的方法和技术。知识表示决定了图谱构建的产出目标,即知识图谱的语义描述框架(Description Framework)、Schema与本体(Ontology)、知识交换语法(Syntax)、实体命名及ID体系。
- 基本描述框架定义知识图谱的基本数据模型(Data Model)和逻辑结构(Structure)
- Schema与本体定义知识图谱的类集、属性集、关系集和词汇集
- 交换语法定义知识实际存在的物理格式
- 实体命名及ID体系定义实体的命名原则及唯一标识规范
按知识类型的不同,知识图谱包括词(Vocabulary)、实体(Entity)、关系(Relation)、事件(Event)、术语体系(Taxonomy)、规则(Rule)等。词一级的知识以词为中心,并定义词与词之间的关系,如WordNet、ConceptNet等。实体一级的知识以实体为中心,并定义实体之间的关系、描述实体的术语体系等。事件是一种复合的实体。
知识抽取
知识抽取按任务可以分为概念抽取、实体识别、关系抽取、事件抽取和规则抽取等 。 传统专家系统时代的知识主要依靠专家手工录入,难以扩大规模。现代知识图谱的构建通常大多依靠己有的结构化数据资源进行转化,形成基础数据集,再依靠自动化知识抽取和知识图谱补全技术,从多种数据来源进一步扩展知识图谱,并通过人工众包进一步提升知识图谱的质量。
结构化和文本数据是目前最主要的知识来源。从结构化数据库中获取知识一般使用现有的D2R工具,如Triplify、D2RServer、OpenLink、SparqlMap、Ontop 等。从文本中获取知识主要包括实体识别和关系抽取。
知识融合
多个知识图谱进行融合,或者将外部关系数据库合并到本体知识库时,需要处理两个层面的问题:通过模式层的融合,将新得到的本体融入己有的本体库中,以及新旧本体的融合:数据层的融合,包括实体的指称、属性、关系以及所属类别等,主要的问题是如何避免实例以及关系的冲突问题,造成不必要的冗余。
知识图谱补全与推理
常用的知识图谱补全方法包括:基于本体推理的补全方法,如基于描述逻辑的推理,以及相关的推理机实现,如RDFox、Pellet、RACER、HermiT、TrOWL等。这类推理主要针对TBox,即概念层进行推理,也可以用来对实体级的关系进行补全。
另外一类的知识补全算法实现基于图结构和关系路径特征的方法,如基于随机游走获取路径特征的PRA算法、基于子图结构的SFE算法、基于层次化随机游走模型的PRA算法。这类算法的共同特点是通过两个实体节点之间的路径,以及节点周围图的结构提取特征,并通过随机游走等算法降低特征抽取的复杂度,然后叠加线性的学习模型进行关系的预测。此类算法依赖于图结构和路径的丰富程度。
更为常见的补全实现是基于表示学习和知识图谱嵌入的链接预测叫,简单的如前面介绍最基本的翻译模型 、组合模型和神经元模型等。这类简单的嵌入模型一般只能实现单步的推理。 对于更为复杂的模型,如向量空间中引入随机游走模型的方法,在同一个向量空间中将路径与实体和关系一起表示出来再进行补全的模型。
文本信息也被用来辅助实现知识图谱的补全。 例如,Jointly(w)、Jointly(z)、DKRL、TEKE、SSP等方法将文本中的实体和结构化图谱中的实体对齐,然后利用双方的语义信息辅助实现关系预测或抽取。这类模型一般包含三个部分:三元组解码器、文本解码器和联合解码器。三元组解码器将知识图谱中的实体和关系转化为低维向量;文本解码器则要从文本语料库中学习实体(词)的向量表示;联合解码器的目的是要保证实体、关系和词的嵌入向量位于相同的空间中,并且集成实体向量和词向量 。
知识检索与知识分析
基于知识图谱的知识检索的实现形式主要包括语义检索和智能问答。传统搜索引擎依靠网页之间的超链接 实现网页的搜索,而语义搜索直接对事物进行搜索,如人物、机构、地点等。这些事物可能来自文本、图片、视频、音频、IoT设备等各种信息资源。而知识图谱和语义技术提供了关于这些事物的分类、属性和关系的描述,使得搜索引擎可以直接对事物进行索引和搜索。知识图谱和语义技术也被用来辅助做数据分析与决策 。
知识图谱的相关技术
知识图谱与数据库系统
知识图谱的主要数据模型有RDF图,属性图两种;知识图谱查询语言可以分为声明式(Declarative)和导航式(Navigational)。RDF三元组库的数据模型为RDF图,查询语言SPARQL。图数据库数据模型采用属性图,其上的声明式查询语言为Cypher、PGQL和G-Core。
目前,基于三元组库和图数据库能够提供的知识图谱数据存储方案可分为三类:
(1)基于关系的存储方案,包括三元组表、水平表、属性表、垂直划分、六重索引和DB2RDF等。
- 三元组表是将知识图谱中的每条三元组存储为一行具有三列的记录(主语、位于、宾语)。其优势是简单明了,但三元组表的行数与知识图谱的边数一样,其问题是将知识图谱翻译为SQL会产生大量三元组表的自连接操作,影响效率。
- 水平表的每行存储知识图谱中的一个主语的所有位于和宾语,相当于知识图谱的邻接表,但其缺点是所需要的列的数目过多,表中产生大量空值,无法存储多值宾语
- 垂直划分存储方案分为知识图谱中的每种谓语建立一张两列的表(主语宾语),表中存放由改谓语连接的主语和宾语,支持“主语-主语”作为连接条件的查询操作的快速执行。垂直划分有效解决控制问题和多值宾语问题,其缺点是大规模知识图谱的谓语表数目过多,复杂查询表连接过多,更新维护代价大。
- 六重索引存储方案是将三元组全部6中排列对应地建立为6张表。六重索引通过“空间交换时间”策略有效缓解了三元组表的自连接问题,但需要更多的存储空间开销和索引更新维护代价。
- DB2RDF存储方案是一种较新的基于关系的知识图谱数据库。三元组表的灵活性体现在“行维度”,无论多少行三元组数据,表模式只有3列固定不变;DB2RDF方案将这种灵活性推广到了“列维度”,列名称不再和谓语绑定,将同一主语的所有谓语和宾语动态分配到某列。
(2)面向RDF的三元组库。主要的三元组库包括商业系统Virtuoso,AllegroGraph,GraphDB,BlazeGraph,开源系统Jena,RDF-3X和gStore。
(3)原生图数据库。Neo4j是用Java实现的开源图数据库。不足之处在于其社区办是单机系统,虽然企业版支持高可用性集群,但其与分布式图存储系统的最大区别在于每个节点上存储图数据库的万正副本,而不是将图数据库划分为子图进行分布式存储,并非真正意义上的分布式数据库系统。如果图数据超过一定规模,系统性能就会因为磁盘、内存等限制而大幅度降低。
##