首页 > 其他分享 >在常见的文本处理技术中,知识图谱(KNOWLEDGE GRAPH)到底是什么?用简单的例子来理解

在常见的文本处理技术中,知识图谱(KNOWLEDGE GRAPH)到底是什么?用简单的例子来理解

时间:2024-12-02 12:57:49浏览次数:8  
标签:知识库 KNOWLEDGE GRAPH 知识 语义 文本处理 图谱 顶点 节点

知识图谱(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. 基于表结构的存储
  2. 基于图结构的存储

 

其中,基于表结构的存储:用二维数据表来存储数据。例如:三元组表、类型表以及关系数据库。

基干图结构的存储:用图数据库。

 

1. 三元组表

SPO三元组。SPO分别是一个句子的主语(subject)、谓语(predicate)、宾语(object)。

优点:存储实现方式简单,易于理解。

缺点:把所有的知识,都存放在同一张表:过于庞大,执行插入、删除、修改、查询等操作时效率低。所以,在大型知识图谱系统中,很少采用这种方式。

 

 

2. 类型表(属性表)

类型表:每一类数据,单独建立一张数据表来存储。

例如:学生表、课程表、班级表等。同一类型的实例,存放在同一张表里面。

 

问题:查询时必须指定属性,没有办法做到不确定属性的查询。

 

 

3. 图结构

图数据库的优点

可以直接表示知识图谱的结构。其中,图中的节点:表示知识图谱的对象;图中的边:表示知识图谱的对象关系。

 

优点:

1. 数据库本身就可以提供完善的图查询语言。

2. 在查询速度上,要优于关系型数据库。

 

缺点:

图数据库的更新比较复杂,数据更新速度慢,大节点的处理开销很高。

所以,一般使用以图数据库为主,结合其他系统的方式来存储知识图谱。

常见图数据库:neo4j。


 

 

知识图谱挖掘与计算

知识图谱的挖掘主要是基于图运算的理论,从海量结点中寻找权威节点(重要节点),与目标节点最近(路径最短)且最权威的节点。

 

1. 最短路径算法

最短路径算法可分为Dijkstra(迪杰斯特拉,读作:dyke - stra)算法和Floyd(弗洛伊德)算法。

 

Dijkstra(迪杰斯特拉)算法

Dijkstra算法:是典型的单源最短路径算法。用于计算:一个顶点,到其他所有顶点的最短路径。

核心思想:以起始点为中心,向外层层扩展,直到扩展到终点为止。

 

Dijkstra计算最短路径时,需要指定起点s(就是从顶点s,开始计算)。

此外,还要有两个集合S和U:

  1. S集合的作用:记录,已求出的最短路径的顶点(和相应的最短路径长度);
  2. 而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-均值聚类算法。求出最终一个结构。

 


 

知识图谱的构建过程

知识图谱的逻辑结构:数据层和模式层

  1. 数据层:知识图谱的数据存储;
  2. 模式层:在数据层之上,存储的是经过提炼的知识。

 

知识图谱有2种构建方式:

  1. 自顶向下:需要专家,手工编辑形成数据模式
  2. 自底向上:借助一定的技术手段,从公开采集的数据中,提取出资源模式进行映射,经人工审核之后,加入到知识库中。

 

一般,步骤包含三个阶段

(1) 信息抽取:
从多种结构化、半结构化、非结构化数据源中,自动抽取信息,得到知识元。

 

(2) 知识融合:  

对获得的知识,进行整合,消除矛盾和歧义。

 

(3) 知识加工:

对于收集的内容资源,进行融合处理。形成:结构化、系统化的内容。并且经过评估,只有合格的部分才加入到知识库中。

 

例子:电商领域的知识图谱构建

① 确定领域本体。例如,要描述的领域是“电商”。

 

② 列举领域内的术语集合。例如,要描述“电商”这个领域:可以列举出“商品”“卖家”“买家”“厂家”等概念。

 

③ 确认基本术语之间的关系:并列关系、包含关系和关联关系等。比如:“平台”与“卖家”是包含关系。

 

④ 添加约束规则。比如:只有卖家才可以发布商品等。

 

⑤ 定义实例。就是把具体的实例信息,导入到之前建立的结构中,形成知识库。

 

⑥ 检查和验证。进行一致性检查。

 

标签:知识库,KNOWLEDGE,GRAPH,知识,语义,文本处理,图谱,顶点,节点
From: https://blog.csdn.net/AveryHzzz/article/details/144184913

相关文章

  • 在常见的文本处理技术中,文本特征选取和表示是什么?都有哪些方法?
    文本特征提取&表示概念:文本的特征表示是文本分析的基本问题,将文本中抽取出的特征词进行向量化表示,将非结构化的文本转化为结构化的计算机可以识别处理的信息,然后才可以建立文本的数学模型,从而实现对文本的计算、识别、分类等操作。简单说,就是把文本中抽取出的「特征词」......
  • 4. langgraph实现高级RAG (Corrective RAG)
    数据准备fromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain_community.document_loadersimportWebBaseLoaderfromlangchain_community.vectorstoresimportChromaurls=["https://lilianweng.github.io/posts/2023-06-23-a......
  • C# 一分钟浅谈:GraphQL 中的订阅与发布
    引言随着Web技术的发展,GraphQL已经成为一种流行的API查询语言,它允许客户端精确地请求所需的数据,从而提高数据加载效率。除了查询和变更操作外,GraphQL还支持订阅功能,使得客户端能够实时接收服务器端的数据更新。本文将从C#的角度出发,浅谈GraphQL中的订阅与发布机制,包......
  • AutoHotkey (AHK) 是一款开源的自动化脚本语言,AutoHotkey(AHK)具备广泛的应用场景,适用于
    AutoHotkey(AHK)是一款开源的自动化脚本语言,主要用于Windows平台上的桌面应用程序自动化、键盘鼠标操作模拟、热键设置、窗口管理等任务。它的简单性和强大的灵活性使得AHK成为许多用户进行日常自动化和重复性任务的首选工具。1. AutoHotkey是什么?AutoHotkey是一种脚本......
  • ULID(Universally Unique Lexicographically Sortable Identifier,通用唯一词典分类标识
    ULID(UniversallyUniqueLexicographicallySortableIdentifier,通用唯一词典分类标识符)是一种用于生成全局唯一且可以lexicographically(字典顺序)排序的标识符。它设计的目标是能够同时满足以下几个特点:全局唯一性:ULID生成的标识符具有足够的唯一性,能够在分布式系统中广泛应用......
  • 大模型实操六、基于华为盘古大模型的基础文本处理(文本摘要、情感分析、关键词提取)
    以下是基于华为盘古大模型API使用Python完成基础文本处理任务(文本摘要生成、情感分析、关键词提取)的练习方案。一、准备工作1.注册与获取API凭证登录华为云AI平台注册账号。开通华为盘古大模型API服务。获取AccessKeyID和SecretAccessKey,这些信息将用于......
  • 使用HttpClient获取Graph API Token
    前言最近,在使用GraphAPI,然后,用HttpClient调用。可能,很多人讲不是有Net版本的API么,为什么要用Http去请求?对于这个,我只想说,好玩而已。正文下面是核心的代码,使用HttpClient发送请求tokenpublicasyncstaticTask<string>GetGraphToken(stringbody,stringt......
  • 解读Graph+AI白皮书:LLM浪潮下,Graph尚有何为?
    历时半年,由蚂蚁集团和之江实验室牵头,联合北京邮电大学、浙江大学、西湖大学、东北大学、杭州悦数科技、浙江创邻科技、北京大学、北京交通大学、复旦大学、北京海致星图科技、腾讯、信雅达科技、北京枫清科技等单位编写的《Graph+AI:大模型浪潮下的图计算》白皮书,在11月2日全国智......
  • cryptography与zlib系列:数据压缩与加密
    cryptography与zlib系列:数据压缩与加密这里采用对称加密方法进行加密,首先创建一个Fernet加密器,这里的key,通过密钥派生函数与设定的密码进行创建,具有更强的保密功能。创建Fernet加密器函数importosfrombase64importurlsafe_b64encodefromcryptography.fernetimpor......
  • Perf Linux性能事件(性能计数)器 与 Flame Graph
    fromふぃーる冬コミ2日目西ふ15Perf性能采样和计数原理首先要清楚perf是一个面向事件的可观察性工具fromjyyperf在中断来临时,获取OS在中断之前所记录的关键性能指标PerfStat(性能计数)stat(statistics)有统计,计数,获取信息等含义perfstat<command>对程序运行时所......