如何构建多快好省的“知识图谱即服务”?这里有独家的经验分享:知识图谱构建
梦到鞋原标题:如何构建多快好省的“知识图谱即服务”?这里有独家的经验分享
编者按:知识图谱作为一种特殊的图数据,不仅人类可以识别且对机器友好。信息检索、问答系统、推荐系统、电子商务、金融风控,这些生活中常见的应用场景都离不开知识图谱的支持。如何构建一个“多快好省”的知识服务系统?微软亚洲研究院机器学习组的研究员们基于自己的经验,给出了他们的建议。
近年来,随着人工智能技术在科研和实践中的广泛发展和应用,知识图谱作为人工智能的重要课题也得到迅速发展。包含上亿条事实的公开知识图谱已经非常常见,并且不同的数据源又互相联结相通,形成了数以百亿计的超大规模知识图谱。与此同时,随着自然语言处理、深度学习等技术的发展,知识图谱的抽取技术也在不断进步,增量的知识图谱数据不断汇入。
一方面,知识的普遍性和关联性等特点决定了知识图谱只有在到达一定的数量级和覆盖率时才能真正发挥其能量;另一方面,常用知识表示方法(比如三元组)的灵活性和碎片化等特
点,也让知识图谱数据的管理变得困难。在知识图谱数据已经成为一个不断快速生长的庞然大物的背景下,如何让海量知识变得可用且好用已经成为当前知识型应用的紧迫需求。
猫面鹰同一套知识图谱数据可以在不同应用中通用,同时对于用户而言,构建一套全新的数据系统是一项冗余和繁杂的工作。因此,为知识型应用提供在线可用或下载即可用的数据服务成为一种知识图谱的高效应用方式。本文中,我们将这种在线或离线提供知识图谱数据服务的方式称为“知识图谱即服务”。
本文将从数据、应用及挑战等角度详细阐述如何高效地管理和服务超大规模知识图谱数据,并分享作者所在团队在设计和实现百亿量级知识图谱实时服务中的一些案例经验。
知识图谱:图视角下的知识
英国哲学家弗朗西斯·培根有句名言:“知识就是力量”。Stuart J.Rusll 和 Peter Norvig 在《人工智能:一种现代方法》一书中指出,人工智能包括自然语言处理、知识表示、自动推理、机器学习、计算机视觉以及机器人技术。知识表示对于人工智能的重要性不言而喻。实际上,机器学习得到的模型也是一种用计算结构和数值表示的知识。
在众多知识表示方式中,知识图谱作为一种语义网络拥有极强的表达能力和建模灵活性:首先,知识图谱是一种语义表示,可以对现实世界中的实体、概念、属性以及它们之间的关系进行建模;其次,知识图谱是其衍生技术的数据交换标准,其本身是一种数据建模的“协议”,相关技术涵盖知识抽取、知识集成、知识管理和知识应用等各个环节。
知识图谱是一种特殊的图数据,它是语义的和可复用的:知识图谱数据一经获取即可被多领域应用重复使用,这也是知识图谱服务的构建动机。那么,知识图谱具体来说是什么呢?
保安制服首先,知识图谱是一种特殊的图数据。具体来说,知识图谱是一种带标记的有向属性图。知识图谱中每个结点都有若干个属性和属性值,实体与实体之间的边表示的是结点之间的关系,边的指向方向表示了关系的方向,而边上的标记表示了关系的类型。例如,“汤姆·克鲁斯”和“碟中谍”是两个实体,“出演”则是这两者之间的关系。两个实体分别对应着现实世界中的人和电影,而边则对应了他们所表示的人和电影之间的现实关联。前者是关系的起始结点,后者是关系的目标结点。实体“汤姆·克鲁斯”具有“出生日期”等属性,其属性值为“1962年7月3日”等。
其次,知识图谱是一种人类可识别且对机器友好的知识表示。知识图谱采用了人类容易识别的字符串来标识各元素;同时,图数据表示作为一种通用的数据结构,可以很容易地被计算机识别和处理。
再次,知识图谱自带语义,蕴涵逻辑含义和规则。知识图谱中的结点对应现实世界中的实体或者概念,每条边或属性也对应现实中的一条知识。在此之上,我们可以根据人类定义的规则,推导出知识图谱数据中没有明确给出的知识。比如,已知“张三是个人”,我们就可以根据“人都有父母,都有大脑,需要呼吸”等规则得到很多新知识,而无需在知识图谱中逐条给出。再比如,“外公”的“儿子”是“舅舅”,据此可以推导出很多实体之间的亲属等关系。
下面介绍一下广泛使用的知识图谱表示框架和查询语言:资源描述框架 (Resource Deion Framework, RDF) 和 SPARQL 查询语言 (SPARQL Protocol and Query Language, SPARQL) 。
资源描述框架中的基本元素格式为: 主, 谓, 宾 或 s, p, o 。它采用主语、谓词和宾语的方式来表示和陈述一条知识,这种表示方式简单且灵活。由于资源描述框架的英文缩写为 R
DF,知识图谱数据集也经常被称为RDF数据集,而其管理工具通常被称为RDF Store或Triple Store。在RDF中,我们可以用 Tom_Crui, Acting, Mission:Impossible 和 Tom_Crui, Date_Of_Birth, ”July 3, 1962” 等来表示实体“汤姆·克鲁斯”的关系和属性。一个 RDF 数据可以分为两个部分:
荷叶瘦身一:显式三元组。这部分由数据集直接给定。例如:
Sky, Color, blue
Alice, Friend, Bob
二:隐含三元组。这部分由推理规则隐含表示。规则可作用于显式三元组,其推导出的三元组数量可能巨大,甚至超过原始数据数倍。例如:
如果?x 是一种?y, 而?y是?z的子类型,那么?x 也是一种?z: (?x, IsA, ?y) (?y, SubclassOf, ?z) = (?x, IsA, ?z) 如果?y是?x的朋友,那么?x 是?y的朋友: (?x, Friend, ?y) = (?y, Friend, ?x)代表性的 RDF 数据集包括 Freeba、DBpedia、WikiData、Yago2、Cyc、PubChemRDF以及UniProt等。已有知识图谱数据中的数据量已达到空前规模,例如 Free
ba 包含大约19亿的三元组,DBpedia 包含大约30亿三元组,而 Bio2RDF 拥有约100亿三元组。这些数据集因为链接开放数据倡议 (Linked Open Data initiative, LOD) 而互相连通,形成了一个超过1490 亿三元组的超大知识图谱。如果算上它们遵循标准规则集 (如ρdf, RDFSPlus, RDFSFull, OWL DL 等) 可得的隐含三元组,实际的数据量将更为庞大。
SPARQL是一种广泛使用的知识图谱查询语言。它的主要功能是做声明式的子图匹配,即只描述最终需要的结果模式,而具体执行的过程由底层数据管理系统决定。一个 SPARQL 查询的主要组成部分是基本图模式,比如 (?s, p, ?o),三个元素分别对应主、谓、宾,其中需要匹配的元素用带问号的变量表示。通过集合交、并、差等操作符号实现组合逻辑。此外,其它的图查询语言比如 GraphQL 和Cypher 也可以用于查询知识图谱。
知识图谱应用
国内外各大公司、高校以及研究机构都对知识图谱进行了探索和构建,比如谷歌的 Google Knowledge Graph、微软的 Bing Knowledge Graph、搜狗的知立方、 百度知心、阿里巴巴的商品知识图谱、复旦大学的 CN-DBpedia、东南大学的 、清华大学的 Xlore 以及开放中文知识图谱社区 OpenKG 的 cnSchema 等。知识图谱的发展同时也得到了
政府的关注和支持,例如中国国务院在《新一代人工智能发展规划》 (国发〔2017〕35号) 一文中就明确提出了知识图谱相关的发展规划。
作为一种应用型技术,知识图谱支撑了很多行业中的具体应用。例如:
- 信息检索:搜索引擎中对实体信息的精准聚合和匹配、对关键词的理解以及对搜索意图的语义分析等;
- 自然语言理解:知识图谱中的知识作为理解自然语言中实体和关系的背景信息;
头疼英语怎么说- 问答系统:匹配问答模式和知识图谱中知识子图之间的映射;
- 电子商务:构建商品知识图谱来精准地匹配用户的购买意愿和商品候选集合;
- 金融风控:利用实体之间的关系来分析金融活动的风险以提供在风险触发后的补救措施(如联系人等);
- 公安刑侦:分析实体和实体之间的关系以获得线索等;
- 司法辅助:法律条文的结构化表示和查询来辅助案件的判决等;
- 教育医疗:提供可视化的知识表示,用于药物分析、疾病诊断等;
……
那么知识图谱在这些应用中是如何被访问的呢?知识图谱的服务场景按照其对响应时间的要求可以大体分为在线查询和离线分析两类。
啼啭在线查询任务包括:1) 针对实体的查询,如“作者为苏轼的诗”;2) 针对属性的查询,如“辛弃疾的生卒年”;3) 针对关系的查询,通过多跳关系搜索实现知识图谱中的关系发现,如“汤姆·克鲁斯和布拉德·皮特一起演的电影所获奖项”;4) 针对子图结构的查询,用于查询具有某种特定关系的一系列实体,如“参与演出过同一部电影并且具有夫妻关系的演员”;5) 针对查询的聚合,如“世界十大最高峰所在的国家列表”。这类查询的特点是:响应延迟敏感,但数据吞吐量低。
离线分析任务包括:1) 基于图结构的计算,如:知识图谱向量化表示、知识图谱数据补全和实体排序等;2) 基于规则的推理;3) 基于整体信息的统计分析等。这类任务对响应时间要求低,但要求高数据吞吐量。
知识图谱服务的挑战
那么,构建知识图谱服务有什么难点呢?主要包括以下三点:
圆滑什么意思一:并行图处理。作为一类特殊的图数据,知识图谱的存储、查询以及计算都需要处理和图结构相关的如下三方面挑战:
图数据的复杂性。从数据访问的角度看,无论图数据如何表示,对一个图结点邻居结点的访问都会涉及到在连续存储空间中的“跳转”,即大量的随机数据访问。大量程序优化技术依赖于数据的局部性和重用。大量随机数据访问会导致中央处理器的缓存在大部分时间里失效,进而导致系统性能急剧下降。从程序结构的角度看,图的非结构化特性使得并行处理十分困难。值得一提的是,切分图数据本身是一个 NP 难问题,这让分而治之方案的系统设计变得困难。
图结构和计算的多样性。图数据类型很多,图算法的性能会因为图特征不同而大相径庭。图计算的类型也有很多种,有针对性的系统优化适用面比较受限。
说明文章图数据规模越来越大。大规模的图数据让很多经典图算法因为低效而不可用。
二:隐含语义信息处理。例如,处理 (?x, Parent, ?y) = (?x, Father, ?y) UNION (?x, Mother, ?y) 和 (?x, Niece, ?y) = (?x, Niece, ?y) UNION (?x, Spou, ?z) AND (?z, Niece, ?y) 这类基于规则的推理将放大存储、查询代价。处理方法一般分为两类:一类是在查询之前就将所有隐含的三元组推导出来并作为正常三元组存储,这类方法会大量增加存储代价;另一类是在查询时,按照推理规则将一个查询重写成多个查询,最后汇总查询结果,这类方法会大大增加查询代价。而将两种方法融合的折中方法则会同时放大存储和查询代价。