知识图谱(Knowledge Graph)
历程发展
知识图谱的历程发展,可以追溯到20世纪70年代诞生的专家系统。
专家系统:一个有大量的专业知识和经验的程序系统,它会根据某领域一个或多个专家提供的知识和经验,进行推理和判断(比如,医学领域等等)。就是模拟人类专家的决策过程,来解决一些比较专业化的问题。
它的大概的发展历程
1984年
1984年,Douglas Lenat(道格拉斯·莱纳)设立了Cyc(赛科),是一个当时比较出色的项目。它就是一个本体知识库,目的就是:收集生活中的常识知识,并把它们编码集成到一个全面的本体知识库里面。
Cyc和其他专家系统一样,不仅包括知识,而且提供了非常多的推理引擎,归纳推理等等。
目前的Cyc知识库,涉及50万条概念的500万条常识知识。
OpenCyc是Cyc开放出来的,免费供大众使用的部分知识,包括24万条概念的约240万条常识知识。
1989年
1989年,Tim Berners-Lee(蒂姆·伯纳斯-李)发明了万维网(World Wide Web)。
更方便的获取知识。
1998年
1998年,Tim Berners-Lee再次提出语义网(Semantic Web)。
目的:让机器,也能像人类一样,可以很好地获取并使用知识。
它可以根据语义进行判断,想要实现人与电脑之间的无障碍沟通。
但是,语义网是一个较为宏观的设想,并且它的设计模型是“自顶向下”的,导致其很难落地。所以,学者们逐渐将焦点转向了数据本身。
给大家看一个语义网络,语义网络其实就是一个网络。
下图:
有各种不同的概念,比如:
中间的 Mammal 是哺乳动物,猫(cat) 是一种哺乳动物,猫有毛;
熊是哺乳动物,熊也有毛;
鲸是一种哺乳动物,鲸在水里面生活;
鱼也在水里面生活,也是一种动物;
哺乳动物是一种脊椎动物,也是动物的一种。
图里,所有的节点和边的总和,就构成了一个网络。每一条边上都有一些标识,用术语来说就是 “ 有类型的边 ”,这种 “ 有类型的边 ” 连在一起的节点叫 “ 语义网络 ”,概念是非常简单的。
2006年
2006年,Tim Berners-Lee提出链接数据(Linked Data)的概念。
鼓励大家把数据公开,并遵循一定的原则(2006年提出4条原则,2009年精简为3条原则)。
目的:数据不仅仅发布在语义网中,而要建立起数据之间的链接,从而形成一张巨大的链接数据网。
其中,最具代表性的就是:2007年开始运行的DBpedia项目,是目前已知的第一个,大规模开放域链接数据。
2012年
2012年,Google提出了知识图谱的概念。
简单地说:谷歌知识图里面,充满了关于不同人物、地点和事物的数十亿个事实(通常归类为“实体”)。涵盖了从小众话题,到医学和科学等专业话题的所有内容。
总体而言,谷歌有超过 50 亿个实体和超过 5000 亿个事实。
然后,谷歌会根据你的搜索查询,和存储在 Google 知识图谱中的信息相匹配,然后返回给你查询结果。
例如,您可以问 Google “美国的总统是谁?”。
Google 不仅可以回答你提出的问题,还可以为提供所有的「相关信息」。
谷歌使用了“知识图谱”之后,大幅度提高了Google搜索的最终效果:
1. 找到正确的结果。因为,很多关键词可能代表多重含义,所以知识图谱会把最全面的信息展现出来,让用户找到自己最想要的那种含义。
2. 最好的总结。有了知识图谱,Google可以更好的理解用户搜索的信息。比如,当你搜 “玛丽·居里” 时,你不仅可以获得这个关键词的所有相关内容,还能获得居里夫人的详细生平介绍。
3. 更深、更广。 “知识图谱”会给出搜索结果的「完整知识体系」。所以,用户往往会发现很多不知道的东西(知识)。比如:当你搜索一个即将去旅行的地方时,可能你会发现一个以此命名的餐馆,甚至还可能发现还有一本小说就叫这个名字,并且已经改编成了同名电影。
知识图谱相关概念
知识图谱相关概念:本体、知识库、链接数据、语义网络。
(1) 本体
本体:用于描述实体和实体间的关系。
举个例子,如果,我们要做图书领域的知识图谱。
首先,要对图书进行分类。这个分类就是本体。
比如说,图书分为计算机类和电子类,计算机类有分为网络、人工智能。有了这个分类后,我们就可以把图书都分到每个类别。
比如说,《Zero to One》是一本进口原版书。然后,这本书有各种属性-属性值。比如说书的作者是Peter Thiel,这些数据,就构成了一个图书知识图谱。
⚠️:这里分类和知识图谱一起,可以看成是一个图书知识库。
也就是说,本体是强调的是:概念关系。
知识图谱强调:实体关系和实体属性值。
知识库:是所有知识的集合。
最常用的本体描述语言: RDF 和 网络本体语言(Ontology Web Language,OWL)。
用 RDF举个例子:
RDF本质上是三元组:主语、谓语、宾语就是个三元组。
比如 “ 我是Tim ”,“ 我 ” 是主语,“ 是 ” 是谓语,“ Tim” 是宾语。在 RDF 这个框架下,所有的关系,最后都被拆分成三元组。
(2) 知识库(Knowledge Base)
本质上:是管理知识的数据库。最早作为专家系统(Expert System)的组成部分,用于实现决策推理。
知识库中的知识:有本体知识、关联性知识、规则库和案例知识等很多种不同的形式。
(3) 链接数据(Linked Data)
前面讲了:2006年,Tim Berners-Lee提出链接数据(Linked Data)的概念。
和语义网络相比,更关注建立数据之间的链接。
(4) 语义网络(Semantic Network)
更注重描述概念和他们之间的关系。
⚠️:和语义网不同。
其实是一种有向图:
- 顶点代表:概念;
- 边:这些概念之间的语义关系。
知识图谱的存储
知识图谱的存储可以分为:
- 基于表结构的存储
- 基于图结构的存储
其中,基于表结构的存储:用二维数据表来存储数据。例如:三元组表、类型表以及关系数据库。
基干图结构的存储:用图数据库。
1. 三元组表
SPO三元组。SPO分别是一个句子的主语(subject)、谓语(predicate)、宾语(object)。
优点:存储实现方式简单,易于理解。
缺点:把所有的知识,都存放在同一张表:过于庞大,执行插入、删除、修改、查询等操作时效率低。所以,在大型知识图谱系统中,很少采用这种方式。
2. 类型表(属性表)
类型表:每一类数据,单独建立一张数据表来存储。
例如:学生表、课程表、班级表等。同一类型的实例,存放在同一张表里面。
问题:查询时必须指定属性,没有办法做到不确定属性的查询。
3. 图结构
图数据库的优点:
可以直接表示知识图谱的结构。其中,图中的节点:表示知识图谱的对象;图中的边:表示知识图谱的对象关系。
优点:
1. 数据库本身就可以提供完善的图查询语言。
2. 在查询速度上,要优于关系型数据库。
缺点:
图数据库的更新比较复杂,数据更新速度慢,大节点的处理开销很高。
所以,一般使用以图数据库为主,结合其他系统的方式来存储知识图谱。
常见图数据库:neo4j。
知识图谱挖掘与计算
知识图谱的挖掘主要是基于图运算的理论,从海量结点中寻找权威节点(重要节点),与目标节点最近(路径最短)且最权威的节点。
1. 最短路径算法
最短路径算法可分为Dijkstra(迪杰斯特拉,读作:dyke - stra)算法和Floyd(弗洛伊德)算法。
Dijkstra(迪杰斯特拉)算法
Dijkstra算法:是典型的单源最短路径算法。用于计算:一个顶点,到其他所有顶点的最短路径。
核心思想:以起始点为中心,向外层层扩展,直到扩展到终点为止。
Dijkstra计算最短路径时,需要指定起点s(就是从顶点s,开始计算)。
此外,还要有两个集合S和U:
- S集合的作用:记录,已求出的最短路径的顶点(和相应的最短路径长度);
- 而U集合记录:还未求出最短路径的顶点(以及该顶点到起点s的距离)。
步骤:
初始状态时,S集合中只有起点s;U集合中是除s顶点之外的所有的顶点,并且U集合的路径是"起点s到每个顶点的路径"。
然后,从U集合中找出:路径最短的顶点,其加入到S集合中;
接着,更新U集合中的顶点。
然后,再从U集合中找出路径最短的顶点,并将其加入到S集合中。
一直重复这个操作,直到遍历完所有顶点。
2. 权威节点分析
权威节点就是重要节点
权威节点分析:主要采用「互投票」方法,它的思想来源 PageRank思想。
PageRank 的核心思想:越多的优质网页所指向的网页,那么它属于优质网页的概率就越高。
PageRank,是斯坦福大学研究项目的一部分。当时,它们做这个项目的目的:“提高网络搜索引擎的质量。”
它的大概思路就是:
假设页面 C 有两个链接:一个来自页面 A,一个来自页面 B。
页面 A 比页面 B 强,并且外向链接也更少。
然后,就可以把信息输入到 PageRank 算法中,就可以得到页面 C 的 PageRank。
3. 相似节点发现
相似节点发现:常常应用于企业中的客户分群。
比如,一个企业有一些客户,他想找到其他类似的客户,用相似节点发现的算法就可以实现。
也会使用到:改进的k-均值聚类算法。求出最终一个结构。
知识图谱的构建过程
知识图谱的逻辑结构:数据层和模式层
- 数据层:知识图谱的数据存储;
- 模式层:在数据层之上,存储的是经过提炼的知识。
知识图谱有2种构建方式:
- 自顶向下:需要专家,手工编辑形成数据模式
- 自底向上:借助一定的技术手段,从公开采集的数据中,提取出资源模式进行映射,经人工审核之后,加入到知识库中。
一般,步骤包含三个阶段
(1) 信息抽取:
从多种结构化、半结构化、非结构化数据源中,自动抽取信息,得到知识元。
(2) 知识融合:
对获得的知识,进行整合,消除矛盾和歧义。
(3) 知识加工:
对于收集的内容资源,进行融合处理。形成:结构化、系统化的内容。并且经过评估,只有合格的部分才加入到知识库中。
例子:电商领域的知识图谱构建
① 确定领域本体。例如,要描述的领域是“电商”。
② 列举领域内的术语集合。例如,要描述“电商”这个领域:可以列举出“商品”“卖家”“买家”“厂家”等概念。
③ 确认基本术语之间的关系:并列关系、包含关系和关联关系等。比如:“平台”与“卖家”是包含关系。
④ 添加约束规则。比如:只有卖家才可以发布商品等。
⑤ 定义实例。就是把具体的实例信息,导入到之前建立的结构中,形成知识库。
⑥ 检查和验证。进行一致性检查。
标签:知识库,KNOWLEDGE,GRAPH,知识,语义,文本处理,图谱,顶点,节点 From: https://blog.csdn.net/AveryHzzz/article/details/144184913