简单理解就是一个图,节点是各类各样的现实当中的实体,如人、物、组织等,线是反应节点之间的关系或者属性。如图所示。 算法
现在知识图谱普遍应用于聊天机器人,推荐系统等方面,而在金融、农业、电商、医疗健康、环境保护、工业制造场景等各类不一样的垂直领域,得益于知识图谱的先验知识的特性,均获得了普遍的应用。说的抽象点,知识图谱就是把离散的符号表述,变成了连续的向量表示的巨大的知识网络图。数据库
目前有两种方法,一种是 RDF ,它是由不少三元组组成的,优势是易于发布分享,缺点是不支持实体或者关系拥有属性,若是非要加属性则须要作特殊的修改,目前多用于学术场景,常见的有 Jena 。另外一种方法是图数据库,主要是由高校的查询和搜索,,如 Neo4j 应用最普遍,界面比较清晰,更容易表达现实的业务场景中的关系,数据量在不过亿级的状况下效果仍是能够的,惟一的缺点就是不支持分布式。markdown
构建知识图谱的数据无非就两个来源:一个是公司内部的业务数据,通常都存在结构化的数据库中,能够直接拿来用。另外一种是须要经过爬虫从网上抓取的网页,或者外部提供的数据,此类数据比较杂乱无结构,须要进行必要的处理。因此难点主要来源于后者。主要涉及到天然语言的相关技术,如实体命名识别,关系抽取,实体统一,指代消解。以下图使用非结构化的文本构建知识图谱。网络
上面的涉及的几项 NLP 技术都用到了 分布式
常见误区:在不涉及数据的重要性状况下,不少人认为搭建一个知识图谱系统的重点在于算法和开发。但事实并非想象中的那样,其实最重要的核心在于对业务的理解以及对知识图谱自己的设计,而且还要对将来业务有必定的预估,这就相似于对于一个业务系统,数据库表的设计尤为关键,并且这种设计绝对离不开对业务的深刻理解以及对将来业务场景变化的预估。oop
主要的步骤:学习
明确自身业务需不须要知识图谱的支持人工智能
定义具体的业务问题spa
数据的收集和预处理.net
常见问题:
1. 咱们已经有哪些数据?
2. 虽然如今没有,但有可能拿到哪些数据?
3. 其中哪部分数据能够用来下降风险?
4. 哪部分数据能够用来构建知识图谱?
5. 注意并非全部跟目标相关的数据都要进入知识图谱
复制代码
知识图谱的设计
常见问题:
1. 须要哪些实体、关系和属性?
2. 哪些属性能够作为实体,哪些实体能够做为属性?
3. 哪些信息不须要放在知识图谱中?
复制代码
设计原则:
业务原则:一切要从业务逻辑出发,而且经过观察知识图谱的设计也很容易推测其背后业务的逻辑,并且设计时也要想好将来业务可能的变化。好的设计很容易让人从图谱中看到业务自己的逻辑。
分析原则:不须要把跟关系分析无关的实体放在图谱当中。
效率原则:在于把知识图谱设计成小而轻的存储载体,对关系分析可有可无的信息放在传统的关系型数据库当中。
冗余原则:有些重复性信息、高频信息能够放到传统数据库当中。
复制代码
知识图谱的存储
存储上咱们要面临存储系统的选择,但因为咱们设计的知识图谱带有属性,图数据库能够做为首选。但至于选择哪一个图数据库也要看业务量以及对效率的要求。若是数据量特别庞大,则 Neo4j 极可能知足不了业务的需求,这时候不得不去选择支持准分布式的系统好比 OrientDB , JanusGraph(原 Titan) 等,或者经过效率、冗余原则把信息存放在传统数据库中,从而减小知识图谱所承载的信息量。 一般来说 Neo4j 已经足够了。
上层应用的开发以及系统的评估
构建好知识图谱,根据需求,从图谱中挖掘有价值的信息。从算法的角度来说,有下面三种不一样的场景:一种是基于规则的,常见的应用分别是不一致性验证、基于规则的特征提取、基于模式的判断;另外一种是基于几率的,常见的应用有社区挖掘、聚类等;还有一种是基于动态网络的,常见的应用有 T 时刻到 T+1 时刻风险变化等。
相比规则的方法论,基于几率的方法的缺点在于:须要足够多的数据。若是数据量不多,并且整个图谱比较稀疏(Sparse),基于规则的方法能够成为咱们的首选。尤为是对于金融领域来讲,数据标签会比较少,这也是为何基于规则的方法论仍是更广泛地应用在金融领域中的主要缘由。
鉴于目前 AI 技术的现状,基于规则的方法论仍是在垂直领域的应用中占据主导地位,但随着数据量的增长以及方法论的提高,基于几率的模型也将会逐步带来更大的价值。
首先,知识图谱的主要做用仍是在于分析关系,尤为是深度的关系。因此在业务上,首先要确保它的必要性,其实不少问题能够用非知识图谱的方式来解决。
知识图谱领域一个最重要的话题是知识的推理。 并且知识的推理是走向强人工智能的必经之路。但很遗憾的,目前不少语义网络的角度讨论的推理技术(好比基于深度学习,几率统计)很难在实际的垂直应用中落地。其实目前最有效的方式仍是基于一些规则的方法论,除非咱们有很是庞大的数据集。
最后,仍是要强调一点,知识图谱工程自己仍是业务为重心,以数据为中心。不要低估业务和数据的重要性。