首页 > 编程知识 正文

知识谱的构建包含4个步骤,知识谱 概念

时间:2023-05-06 17:50:38 阅读:185800 作者:4100

以前了解会话系统时,发现其实是一个有应用价值的会话系统,需要引入外部知识辅助决策分析,所以最近想学习知识图谱,结合知识图谱构建会话系统。

知识图谱是谷歌提出的概念,从定义上讲,知识图谱是结构化的语义知识库,是用于描述物理世界概念及其相互关系的图谱库数据结构。

既然是图,就有边和节点,边是指事物的关系,节点在这里简单地分为两部分。 第一个是实体,实体是指现实世界中的一些具体事物。 例如,一个人、一个城市、一家公司等属于实体范畴。 此外,笔者认为,在现实世界中,除了说明事物之间的关系外,还需要说明事物本身所具有的特点,比如“贪玩冷风是大学生”、“贪玩冷风发表了10篇论文”、“贪玩冷风有两辆汽车”等等在这种情况下,可以考虑其他类型的节点,也就是属性,将属性划分为对象属性。在“玩冷风是大学生”中,“大学生”是对象属性节点,边可以是“现在的学历”,“玩冷风发表10篇论文当然概念性的东西简单理解就可以了,但实际上看图更容易理解。

接下来,我们将讨论如何保存或如何表达知识。 目前比较前沿的研究方向是稠密的低维向量对实体和关系的方差表示,这里还是从最简单的三元组说起。

三元组是header entity,relation,tail entity,比如“一个大学生想玩”可以用“一个大学生”来形容,现在的学历,大学生,“今年十岁的冷风”想玩

接下来介绍使用Neo4j构建知识图的方法。

Neo4j作为图数据库,在设计逻辑上与知识图有一些差异,为了更合理、更高效地进行数据的存储、读写等操作,这里介绍一下Neo4j的概念。 为了便于支持Neo4j的官方文档,以下概念一律使用英语。

node是Neo4j的基本概念,以下是Neo4j的单个节点。

Neo4j的node与上述知识地图的节点不同,不仅仅是实体和属性,还包含label和property。 其中,label是Neo4j引入的新概念,其作用是基于label将node划分为一个个集合。 例如,“学生”可以是标签,“国家”可以是标签。 label具体是由我们设计的,我们可以通过指定label对该数据进行特定的操作。

此外,一个节点可以有多个标签。 为node设计哪些标签,主要取决于具体情况,让我们看一下如何更方便地进行数据查询和修改等操作。

第三个概念是relationship。 relationship是连接两个节点的边缘,这是有向边缘。 relationship包含relationship类型。 例如,' acted_in '表示Tom Hanks是psdtd中的一个

第四个概念是属性。 property是一对键值。 正如以前的node介绍中所述,node由标签和属性组成。 需要注意的是,node和relationship都有属性。 例如,上面的ACTED_IN允许通过属性

在property中,特别是name,经过测试后发现一个node没有name的话,可视化界面就不会显示这个node的名称,但是从Neo4j的逻辑来看,一个node中name这个property是必须的。

经过以上介绍,主要是Neo4j的主要目的也是构建知识地图,但在实现中多从数据库的角度引入label等结构,为用户查询、增删数据提供了方便。 还有其他几个概念,在此不再继续。 感兴趣的人请参阅Neo4j的官方文档。

还有就是实操环节。 关于安装,请参考本教程。 假设安装了Neo4j,就可以从localhost:7474进行访问。

我们可以用Cypher或python操作Neo4j。 Cypher相当于类似mysql的数据库操作语言。 这里有详细的教程,可以将Cypher和python组合使用,所以可以全部了解。

以下是利用python的py2neo库创建简单的知识地图:

from py2neo import Graph,Node,Relationship#连接neo4jg=graph(host='127.0.0.1 ',http_port=7474,user=' ner ) name='DA VINCI ) Mona_Lisa=node ) art ), name='monci ) )的name=' louvre ' (g.create (da _ Vinci ) g.create ) Mona _ Lisa (g.create ) Louvre ) relate ) isa,' is_in ',louvre ) g.create ) relation1) g.create ) relation1) g.create ) relation

这里根据文章的第一张图简单写了几个节点。 当你在代码中奔跑时,你会看到页面上的知识地图已经更新了。 虽然实现没有什么难点,但是是一个很好的入门例子。

总之,本文简要介绍了知识图的基本概念,并通过Neo4j简单构建了知识图。

KnowledgeGraphBeginner这个项目的目的是从零开始实现基于知识地图的对话系统,并随着这个系列的文章不断更新。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。