计算思维与人工智能 课件 第9章 知识图谱 从理论到应用_第1页
计算思维与人工智能 课件 第9章 知识图谱 从理论到应用_第2页
计算思维与人工智能 课件 第9章 知识图谱 从理论到应用_第3页
计算思维与人工智能 课件 第9章 知识图谱 从理论到应用_第4页
计算思维与人工智能 课件 第9章 知识图谱 从理论到应用_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章

知识图谱:

从理论到应用常熟理工学院·计算机科学与工程学院目录1知识图谱发展历史搜索引擎中的知识图谱23知识图谱的构建实体关系定义及抽取45Neo4j数据库6知识图谱典型下游应用1知识图谱发展历史

知识图谱发展历史

知识图谱的起源第一阶段(1955—1977年)是知识图谱的起源阶段,在这一阶段中引文网络分析开始成为一种研究当代科学发展脉络的常用方法;知识图谱的发展阶段第二阶段(1977—2012年)是知识图谱的发展阶段,在这一阶段语义网得到快速发展,“知识本体”的研究开始成为计算机科学的一个重要领域,知识图谱吸收了语义网、本体在知识组织和表达方面的理念,使得知识更易于在计算机之间和计算机与人之间交换、流通和加工;知识图谱的繁荣阶段第三阶段(2012—至今)是知识图谱繁荣阶段,2012年谷歌提出GoogleKnowledgeGraph,知识图谱正式得名,谷歌通过知识图谱技术改善了搜索引擎性能。在人工智能的蓬勃发展下,知识图谱涉及到的知识抽取、表示、融合、推理、问答等关键问题得到一定程度的解决和突破,知识图谱成为知识服务领域的一个新热点,受到国内外学者和工业界广泛关注。

知识图谱发展历史

知识图谱发展历程2搜索引擎中的知识图谱

搜索引擎中的知识图谱

未引入知识图谱方式搜索引擎查询“老舍先生的作品”返回结果2012年谷歌公司提出知识图谱概念,目的是借助知识图谱技术来优化搜索引擎的搜索效果。当没有知识图谱时,搜索服务提供商只能提供信息的检索,即当用户输入查询到搜索引擎,它会返回那些包含所输入语句中关键词的网页链接,用户如果想进一步了解所搜索问题的答案,那么需要进行二次检索,快速浏览该网页去寻找答案;搜索引擎无法直接告诉用户想要的结果,一是因为它可能无法理解用户搜索语句的具体语义,二是搜索引擎里面存储的只有离散的信息,而没有结构化的知识。为了保证让用户点击更少的网页来找到想要的答案,谷歌开发了一个叫pagerank的算法来计算网页的重要性,在返回搜索结果的时候,按照计算的网页重要性进行排序并进行展示。以百度为例,左图显示百度搜索引擎普通检索结果。搜索引擎先将用户所输入的查询语句进行了分词处理,然后在全网检索网页,查找哪些网页里包含查询语句中的关键词(左图链接中红色字体文本),然后按照网页权重得分显示给用户,如果用户想知道所有老舍先生的作品,需要点击所有网页链接,然后一一进行统计记录,最终确定老舍先生的作品都有哪些。当使用知识图谱的技术后,检索结果如右图所示,用户根本不需要点进某些网页链接去统计记录,搜索引擎直接便捷地给出答案,而且将这些作品汇总好呈现出来。引入知识图谱方式搜索引擎查询“老舍先生的作品”返回结果

搜索引擎中的知识图谱

未引入知识图谱方式搜索引擎查询“李清照丈夫的出生地”返回结果上述例子是信息检索,如果我们想搜索知识,那么情况会怎样呢?下面我们以搜索“李清照丈夫的出生地”为例,未使用知识图谱策略时示例如左图所示。显然也是对网页的检索、召回,虽然我们可以直接通过网页标题就能获知答案,但是还是不那么直接。接下来是知识图谱搜索出来的结果,如图右图所示。回答结果一目了然,除了直接告诉用户想要的结果之外,浏览器还告诉李清照丈夫赵明诚的姓名、身份等其他信息。知识图谱为什么能直接告诉用户结果呢?因为它理解了用户的查询请求,而且它具有结构化的语义知识库,这个知识库里正好是用户需要的知识,另外它还具有多步的推理能力。比如上例中,搜索引擎准确的理解了“李清照丈夫”这个人的“出生地”是哪里,所以它先找到了“李清照丈夫”是“赵明诚”这个事实,然后找到“赵明诚”的“出生地”属性值是“山东诸城”,于是它返回了搜索结果,这就是一个完整的推理过程。引入知识图谱方式搜索引擎查询“李清照丈夫的出生地”返回结果3知识图谱的构建

知识图谱的构建

01知识图谱表示02知识图谱分类

知识图谱表示

知识图谱以结构化的形式描述客观世界中概念、实体及其关系,将互联网的信息表达成更接近人类认知世界的形式,提供了一种更好地组织、管理和理解互联网海量信息的能力。知识图谱给互联网语义搜索带来了活力,同时也在智能问答中显示出强大威力,已经成为互联网知识驱动的智能应用的基础设施。目前,知识图谱与大数据和深度学习一起,成为推动互联网和人工智能发展的核心驱动力之一。

知识图谱表示

如图所描述的,在知识图谱中,各个节点(现实世界中的事件、数据、信息)不再是孤立的,它们是通过特定的关系(边)链接在一起,从而形成结构化的知识表示,这种图数据结构很容易被人们理解接受,并且也很容易被计算机识别和处理。节点和关系<丽江,属于,云南><大理,属于,云南><洱海,属于,大理><小秦,住在,丽江><小明,住在,大理><小明,朋友,小秦>

知识图谱表示

知识图谱的核心其实就是三元组,三元组是由实体、属性或关系组成的,形式为<实体,关系,实体>或<实体,属性,属性值>;而这样的三元组正好可以构建成图数据格式,如上图所示的示意图,可以拆分成三元组的形式如下:<丽江,属于,云南><大理,属于,云南><洱海,属于,大理><小秦,住在,丽江><小明,住在,大理><小明,朋友,小秦>同理,上述三元组也可以组成一个图结构。在上述三元组中我们只看到了<实体,关系,实体>类型的三元组,其实在上文中的知识问答搜索例子中我们已经见识过<实体,属性,属性值>类型的三元组了,比如<赵明诚,出生地,山东诸城>,其中“赵明诚”表示一个实体“人”,“出生地”就是实体“人”的一个属性,而“山东诸城”正是该属性的“属性值”。基于已有三元组可以推导出新的关系三元组,这对构建知识图谱非常重要,同时这也是知识图谱具有推理能力的基础。比如由两个三元组<翅膀,part-of,鸟>,<麻雀,kind-of,鸟>,可以推导出<翅膀,part-of,麻雀>这样一个事实。由庞大的知识三元组组成知识图谱网络,以结构化的方式将知识组织起来。

知识图谱分类‌通常情况下,知识图谱可以分成开放(通用)领域知识图谱和垂直(行业)领域知识图谱两大类:开放领域知识图谱面向的用户是全部的互联网用户,实际上是谷歌或者百度这样的搜索公司在构建,它的构建是以常识性的知识为主,包括结构化的百科知识,它更强调知识的广度,而对深度不做更多要求;垂直领域知识图谱的定位是面向特定的领域或者行业,比如医疗知识图谱、工业知识图谱等,他的数据来源是特定的行业语料,它强调知识的深度,而不是广度。通用知识图谱和行业知识图谱之间并不是相互独立的,他们是具有互补的关系,一方面前者会吸纳后者的知识来扩充它的知识面,增加知识广度;另一方面,构建行业知识图谱也可以从通用知识图谱里吸纳一些常识性的知识作为补充,以形成更完整的行业知识图谱。

4实体关系定义及抽取

实体关系定义及抽取

01schema定义02数据集来源途径03实体识别和关系抽取

schema定义知识图谱的schema定义是一种用于描述知识图谱中实体、关系及其属性的结构化描述。它定义了知识图谱的组织方式和内容规范,包括实体类型、关系类型、属性等。schema定义可以看作是构建和组织知识图谱的“蓝图”或“骨架”。它为知识图谱中的信息提供了结构和规则,决定了有哪些类型的东西(实体)和它们之间有哪些关联(关系)。通过schema,知识图谱能够表达出不同领域内的概念及其之间的关系,从而为知识的组织、存储、查询和推理提供基础。打个比方,假设我们在做一本百科全书,这本书需要有清晰的目录来告诉我们每一章介绍什么内容,内容之间有什么联系。知识图谱的schema就类似于这个目录,它规定了知识图谱里有哪些章节(实体类型,如人、公司、地点等),这些章节之间有什么联系(关系类型,如某人在哪里工作、谁是某人的朋友等),以及每个章节下面有哪些具体内容(属性,如人的名字、年龄等)。通过schema定义,知识图谱中的数据就能按照统一的结构进行组织和存储,确保信息可以被准确地查询、分析和使用。简单来说,schema定义就是知识图谱的定义实体、关系以及属性类型,让我们能更好地构建和理解这个复杂的知识体系。

schema定义‌假设我们要构建一个有关电影的知识图谱,那么它将包含电影、导演、演员等实体信息,如左1所示。在这个图谱中,每个实体(如电影、导演、演员)都有特定的属性和关系。例如,电影实体可能包含属性如“电影名称”、“上映日期”、“类型”等,而导演和演员实体可能包含属性如“姓名”、“出生日期”等,如右1所示。在知识图谱的schema定义中,我们还需要定义不同的实体类型(例如电影、导演、演员)之间的关系,如左2所示。左1电影知识图谱实体定义实体定义电影(Movie)表示一个电影实体导演(Director)表示一个导演实体演员(Actor)表示一个演员实体左2电影知识图谱关系定义关系定义导演关系(DirectedBy)定义了电影和导演之间的关系,表示某个导演执导了某部电影演员关系(ActedIn)定义了演员和电影之间的关系,表示某个演员出演了某部电影右1电影知识图谱属性定义属性定义电影属性电影名称(string)上映日期(date)类型(string)

导演属性姓名(string)出生日期(date)

演员属性姓名(string)出生日期(date)

schema定义基于这个schema定义,我们可以构建具体的知识图谱。例如:电影《盗梦空间》由导演克里斯托弗·诺兰执导,主演包括莱昂纳多·迪卡普里奥和和玛丽昂·歌迪亚等。电影《志愿军:存亡之战》由陈凯歌执导,主演包括朱一龙、辛柏青和张子枫等。在这个例子中,schema为我们提供了一个结构化的框架,用于定义知识图谱中的各种实体类型及其属性,以及它们之间的关系,如下图所示。schema确保了知识图谱的设计和数据管理具有一致性和可扩展性,使得我们能够方便地查询和分析图谱中的数据。总的来说,知识图谱的schema定义类似于数据库中的表结构设计,决定了数据的组织形式和各元素间的关系,是构建和维护知识图谱的基础。电影知识图谱schema定义

数据集来源途径

前面说到,知识图谱是由若干知识三元组构成,但是知识三元组需要人为构建,构建三元组的原始数据来源多种多样,主要分别结构化数据、非结构化数据,半结构化数据。针对不同需求或数据所需,选用不同的模方法或工具处理不同类型的数据。1.结构化数据结构化数据指的是严格按照预定义格式和规则组织的数据。这类文本具有明确的字段和数据类型,通常呈现为表格形式或数据库中的记录,每个字段都有特定的含义和数据类型(如字符串、数字、日期等),由于其高度的结构化和规则性,结构化文本易于存储、检索和分析。结构化文本示例(数据库表格)用户ID姓名年龄邮箱注册日期001张三25zhangsan@2023-06-15002李四30lisi@2022-12-05003王五28wangwu@2021-09-20

数据集来源途径

2.非结构化数据非结构化数据是指没有固定格式或特定数据结构的数据。这类文本通常以自然语言表达,不遵循严格的规则或字段,因此难以直接通过传统数据库进行存储和检索,如表9-6所示。相对于结构化数据,非结构化文本具有高度的自由性和灵活性。非结构化数据示例类型文本电子邮件内容小王,最近过得怎么样?想跟你确认一下下周的会议安排,是否需要提前准备什么材料?如果有需要,请随时告诉我。

祝好,

小李社交媒体帖子刚刚在路边的小吃摊吃了一碗超级好吃的牛肉面,汤头浓郁,面条劲道,强烈推荐!#美食分享#牛肉面客户评论这款手机的拍照功能非常强大,尤其是在弱光环境下表现也很出色。唯一的缺点是电池续航有点不够,希望下次升级能有所改善。新闻文章片段近日,北方多地出现大范围降温天气,部分地区甚至出现降雪。气象部门提醒市民做好防寒保暖措施,同时注意交通安全。专家表示,这次冷空气的影响将持续到下周。对话记录甲:今晚一起吃饭吗?

数据集来源途径

3.半结构化数据半结构化数据介于结构化和非结构化数据之间。它虽然不像结构化数据那样有严格的格式和字段,但通常包含一些标记、标签或分隔符,能够提供一定程度的组织和结构,如表9-7所示。这些标记或标签使得数据可以通过某些规则进行解析和处理,但整体上仍保留了自由度和灵活性。非结构化数据示例类型示例JSON文件<book><title>计算机科学导论</title><author>张三</author><year>2021</year><publisher>科技出版社</publisher></book>电子邮件头部信息From:alice@To:bob@Subject:会议安排Date:Mon,17Aug202409:00:00+0000

实体识别和关系抽取构建知识图谱三元组,其中实体关系抽取是一个关键步骤,实体关系抽取是一种自然语言处理技术,旨在从各种不同类型,如前一章节介绍的结构化、非结构化或半结构化文本中自动识别并提取实体及其之间的关系。通过这项技术,原本没有明确结构的文本数据可以转化为结构化的信息,方便进一步分析和应用。若构建知识图谱所需数据存储形式为CSV或Excel表格,如下图所示,由于此类数据为结构化文本,数据已经按照一定的格式和规则进行组织,所以实体关系抽取较为简单。excel表格存储的结构化文本

实体识别和关系抽取可以使用python的pandas库来解析CSV或Excel文件,首先选定头实体,本例中为姓名,其他列信息为尾实体,列名为实体间关系,由此可得下面所有知识三元组:

知识三元组

<张三,年龄,30>

<张三,性别,男>

<张三,学历,本科>

<张三,政治面貌,群众>

<张三,家庭住址,**省**>

实体识别和关系抽取上述介绍结构化数据事先需要人为整理,若没有成熟的结构化数据,可以使用爬虫技术获取如百度百科的等页面上的内容,从键值对形式的数据中获取实体和关系,如下图所示。百度百科中的半结构化文本

实体识别和关系抽取例如搜索电影《盗梦空间》,可得电影《盗梦空间》的百度百科信息,其中包括属性以及对应具体的属性值信息,我们选取“盗梦空间”为头实体,属性为实体间关系,属性值为尾实体。使用BeautifulSoup或lxml等库解析网页的HTML结构,提取出正文内容,通常从<div>标签中提取主要的段落、标题和表格信息。可得知识三元组,如下表所示。

知识三元组<盗梦空间,外文名,Inception><盗梦空间,其他译名,潜行凶间>…<盗梦空间,类型,剧情、科幻、悬疑、冒险><盗梦空间,片长,148分钟><盗梦空间,上映时间,2010年7月16日><盗梦空间,发行公司,华纳兄弟电影公司>…

实体识别和关系抽取有些我们所需的知识三元组存在于非结构化文本中,这里我们就无法使用上述两种方法,需要采用信息抽取技术对存在于非结构化文本中的实体关系进行抽取,实体关系抽取方法多种多样,有基于深度学习的方法,有依存句法方式,在这里介绍采用依存句法的方式来对预处理完成的非结构化文本进行关系抽取,句法依存是对目标句子进行分解,从而找出句子间各词语之间的依存关系。具体来说,首先将句子进行分词,然后确定“主”、“谓”、“宾”等词性,然后通过中文语法进行进一步的分析,基于词性确定各个词之间的依赖关系。常见的依存关系如下表所示。常用依存关系以及对应字符表示关系简称关系简称状中ADV定中ATT主谓SBV核心HED并列C00介宾POB兼语DBL动宾VOB间宾IOB前置宾语FOB独立结构IS动补CMP

实体识别和关系抽取例如有一个句子“瓦普尼克教授提出支持向量机。”,依存句法分析结果首先将句子分为“瓦普尼克”、“教授”、“提出”、“支持向量机”、“。”五部分。然后对各部分词语进行词性标注,如“瓦普尼克”被标注成人名“nh”,最后根据句子中的词语的词性确定词语之间的依存关系,如图中箭头所示,“提出”一词和“支持向量机”一词被划分为“VOB”(动宾)关系,又经句法分析可得“提出”是该句的核心动词,统辖整个句子,该句子为主谓关系,如下图所示。结合前一阶段获取的实体,可获取知识三元组<瓦普尼克,提出,支持向量机>。句法分析结果示例5Neo4j数据库9.Neo4j数据库

图数据库是一种特殊的数据库管理系统,它以图的形式存储数据,其中包含节点(表示实体)和边(表示实体之间的关系)。图数据库专注于关系的存储和查询,因此在处理关系密集型数据和复杂查询时非常高效。与传统的关系数据库不同,图数据库提供了一种更自然的方式来表示和处理实体之间的关系,它们允许高效地执行复杂的图形遍历和查询,例如查找与给定节点相关联的所有节点或查找特定类型的关系模式。我们在存储知识图谱时选用Neo4j数据库,它是一款领先的图数据库软件,采用了属性图数据模型,它具有高性能的图数据库引擎和灵活的数据模型,能够有效地处理复杂的图数据结构,支持Cypher查询语言,提供了丰富的图算法库和可视化工具,适用于社交网络分析、推荐系统、网络安全等领域。9.Neo4j数据库

Cypher是一种专为Neo4j图数据库设计的查询语言,类似于SQL。Cypher语言允许开发者以声明性的方式查询和操作图数据库中的节点(Nodes)、关系(Relationships)和属性(Properties)。它使用一种简洁且直观的语法来表达复杂的图形结构和关系,使得图数据库的操作变得更容易理解和使用。1.Cypher语句的基本构成在Cypher中,节点通常用圆括号()来表示,并可以为其添加标签和属性。以下表示一个标签为Person的节点,带有两个属性name和age。(n:Person{name:"张三",age:30})关系在Cypher中用方括号[]表示,通常用箭头-->或<-来表示方向(也可以省略方向表示双向关系)。以下表示两个节点n和m之间存在一个FRIENDS_WITH关系。(n)-[:FRIENDS_WITH]->(m)路径是一组连接在一起的节点和关系,通常用于描述从一个节点到另一个节点的整个关系链。以下表示节点n与节点o之间通过节点m和两个关系相连。(n)-[:FRIENDS_WITH]->(m)-[:LIKES]->(o)9.Neo4j数据库

2.常用Cypher语句这条语句创建一个标签为Person的节点n,并设置其name为"张三",age为30。CREATE(n:Person{name:"Alice",age:30})这条语句首先查找名为"Alice"和"Bob"的两个Person节点,然后在它们之间创建一个FRIENDS_WITH关系。MATCH(a:Person{name:"Alice"}),(b:Person{name:"Bob"})CREATE(a)-[:FRIENDS_WITH]->(b)这条语句查询所有Person节点之间的FRIENDS_WITH关系,并返回这些节点的name属性。MATCH(a:Person)-[:FRIENDS_WITH]->(b:Person)RETURN,这条语句查找名为"Alice"的Person节点,并将其age属性更新为31。MATCH(n:Person{name:"Alice"})SETn.age=31这条语句删除名为"Alice"的Person节点及其与另一个Person节点之间的FRIENDS_WITH关系。MATCH(n:Person{name:"Alice"})-[r:FRIENDS_WITH]->(m:Person)DELETEr,n9.Neo4j数据库

2.常用Cypher语句这条语句查询所有从一个Person节点到另一个Person节点的路径,并返回这些路径。MATCHp=(a:Person)-[:FRIENDS_WITH*]->(b:Person)RETURNp这条语句查询所有age大于25的Person节点,并返回这些节点的name和age。MATCH(n:Person)WHEREn.age>25RETURN,n.age这条语句返回数据库中Person节点的总数。MATCH(n:Person)RETURNcount(n)9.Neo4j数据库

下面进行实例展示,展示使用Cypher语句是如何进行Neo4j图数据库增删改查的。这里有红楼梦人物知识三元组,原始三元组有381个,下表仅展示部分,三元组有头实体、尾实体和关系。红楼梦人物关系知识三元组(部分)头实体尾实体关系标签贾代善贾源son子娄氏贾源daughter_in_law_of_grandson重孙媳妇贾母贾代善wife妻老姨奶奶贾代善concubine妾贾敏贾代善daughter女嫣红贾赦concubine妾翠云贾赦concubine妾娇红贾赦concubine妾9.Neo4j数据库

1.增加操作使用Cypher命令CREATE(n:Person{name:"贾源"})新建实体节点“贾源”,如图9-16所示。使用Cypher新建实体节点“贾代善”9Neo4j数据库

1.增加操作使用Cypher命令CREATE(n:Person{name:"贾代善"})新建实体节点“贾代善”,如下图所示。使用Cypher新建实体节点“贾源”9Neo4j数据库

1.增加操作使用Cypher命令MATCH(a:Person{name:"贾代善"}),(b:Person{name:"贾源"})CREATE(a)-[:子]->(b)新建“贾代善”和“贾源”之间的关系“子”,如下图所示。使用Cypher新建实体节点“贾代善”和“贾源”之间的关系“子”9Neo4j数据库

1.增加操作使用Cypher语句依次将表格中的三元组关系新建完毕,可以得到整个红楼梦人物的知识图谱,如下图所示。使用Cypher新建实体节点“贾代善”和“贾源”之间的关系“子”9Neo4j数据库

2.删除操作使用Cypher命令MATCH(n:Person{name:"张三"})-[r:无关系]->(m:Person)DELETEr,n删除节点“张三”及其关系“无关系”,下图是使用删除命令后的知识图谱。未使用删除命令之前知识图谱9Neo4j数据库

2.删除操作使用Cypher命令MATCH(n:Person{name:"张三"})-[r:无关系]->(m:Person)DELETEr,n删除节点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论