导航:首页 > 编程语言 > python三元组知识图谱

python三元组知识图谱

发布时间:2023-01-05 10:21:22

‘壹’ 知识图谱中的 三元组 是什么意思

举个例子,盐湖-矿藏-氯化钠(盐)XYZ,也就是盐湖是个拥有氯化钠的矿藏,三个要素穿插关联。

‘贰’ 知识图谱基础(一)-什么是知识图谱

笔者是一只已经离职的AI产品经理,主要擅长的方向是知识图谱与自然语言处理,写这些文章是为了总结归纳目前已经搭建的知识体系,也在于科普。如有不对,请指正。

知识图谱在国内属于一个比较新兴的概念,国内目前paper都比较少,应用方主要集中在BAT这类手握海量数据的企业,这个概念是google在2012年提出的,当时主要是为了将传统的keyword-base搜索模型向基于语义的搜索升级。知识图谱可以用来更好的查询复杂的关联信息,从语义层面理解用户意图,改进搜索质量。

个人认为,知识图谱最大的优势是在于对数据的描述能力非常强大,各种机器学习算法虽然在预测能力上很不错,但是在描述能力上非常弱,知识图谱刚好填补了这部分空缺。

知识图谱的定义非常多,我这里提供一部分我自己的理解:

1.知识图谱主要目标是用来描述真实世界中存在的各种实体和概念,以及他们之间的强关系,我们用关系去描述两个实体之间的关联,例如姚明和火箭队之间的关系,他们的属性,我们就用“属性--值对“来刻画它的内在特性,比如说我们的人物,他有年龄、身高、体重属性。

2.知识图谱可以通过人为构建与定义,去描述各种概念之间的弱关系,例如:“忘了订单号”和“找回订单号”之间的关系

知识库目前可以分为两种类型:Curated KBs 和 Extracted KBs

Curated KBs :以yago2和freebase为代表,他们从维基网络和WordNet等知识库抽取了大量的实体及实体关系,可以把它理解城一种结构化的维基网络。

Extracted KBs :主要是以Open Information Extraction (Open IE),  Never-Ending Language Learning (NELL)为代表,他们直接从上亿个网页中抽取实体关系三元组。与freebase相比,这样得到的实体知识更具有多样性,而它们的实体关系和实体更多的则是自然语言的形式,如“姚明出生于上海。” 可以被表示为(“Yao Ming”, “was also born in”, “Shanghai”)。直接从网页中抽取出来的知识,也会存在一定的噪声,其精确度低于Curated KBs。

a)“姚明出生于上海”

b)“姚明是篮球运动员”

c)“姚明是现任中国篮协主席”

以上就是一条条知识,把大量的知识汇聚起来就成为了知识库(Knowledge Base)。我们可以从wikipedia,网络等网络全书获取到大量的知识。但是,这些网络全书的知识是由非结构化的自然语言组建而成的,这样的组织方式很适合人们阅读但并不适合计算机处理。

为了方便计算机的处理和理解,我们需要更加形式化、简洁化的方式去表示知识,那就是三元组(triple)。

“姚明出生于中国上海” 可以用三元组表示为(Yao Ming, PlaceOfBirth, Shanghai)[1]。这里我们可以简单的把三元组理解为(实体entity,实体关系relation,实体entity)。如果我们把实体看作是结点,把实体关系(包括属性,类别等等)看作是一条边,那么包含了大量三元组的知识库就成为了一个庞大的知识图。

有些时候会将实体称为topic,如Justin Bieber。实体关系也可分为两种,一种是属性property,一种是关系relation。如下图所示,属性和关系的最大区别在于,属性所在的三元组对应的两个实体,常常是一个topic和一个字符串,如属性Type/Gender,对应的三元组(Justin Bieber, Type, Person),而关系所在的三元组所对应的两个实体,常常是两个topic。如关系PlaceOfBrith,对应的三元组(Justin Bieber, PlaceOfBrith, London)。

(图中蓝色方块表示topic,橙色椭圆包括属性值,它们都属于知识库的实体;蓝色直线表示关系,橙色直线表示属性,它们都统称为知识库的实体关系,都可以用三元组刻画实体和实体关系)

这里只是简单介绍一下数据结构,知识表达这一块会在《知识图谱基础(二)-知识图谱的知识表达系统》中详细讲解。

读者只要记住,freebase的基础知识表达形式:(实体)-[关系]-(实体),(实体)-[关系]-(值)即可,参考图3,姚明和叶莉的关系。

通过知识图谱,不仅可以将互联网的信息表达成更接近人类认知世界的形式,而且提供了一种更好的组织、管理和利用海量信息的方式。下图是笔者整理的知识图谱有关的应用,接下来的一些文章笔者会对下面的应用进行剖析。

从图4上看,知识图谱的应用主要集中在搜索与推荐领域,robot(客服机器人,私人助理)是问答系统,本质上也是搜索与推荐的延伸。可能是因为知识图谱这项技术(特指freebase)诞生之初就是为了解决搜索问题的。知识存储这一块可能是企查查和启信宝这些企业发现使用图结构的数据比较好清洗加工。

在语义搜索这一块,知识图谱的搜索不同于常规的搜索,常规的搜索是根据keyword找到对应的网页集合,然后通过page rank等算法去给网页集合内的网页进行排名,然后展示给用户;基于知识图谱的搜索是在已有的图谱知识库中遍历知识,然后将查询到的知识返回给用户,通常如果路径正确,查询出来的知识只有1个或几个,相当精准。

问答系统这一块,系统同样会首先在知识图谱的帮助下对用户使用自然语言提出的问题进行语义分析和语法分析,进而将其转化成结构化形式的查询语句,然后在知识图谱中查询答案。

‘叁’ 浅谈知识图谱技术及其应用补全

前言及背景:在构建知识图谱的过程中,大量知识信息来源于文档和网页信息,在从文档提取知识的过程中往往会有偏差,这些偏差来自于看两方面:

(1)文档中会有很多噪声信息,即无用信息,它的产生可能来自于知识抽取算法本身,也可能和语言文字本身的有效性有关;

(2)文档信息量有限,不会把所有知识都涵盖进去,尤其是很多常识性知识。


以上都会导致知识图谱是不完整的,所以 知识图谱补全 在构建知识图谱中日益重要。
通过 已获取的知识 来对实体间进行关系预测,以达到对实体间关系的补全,也可以是实体类型信息的补全。该过程可以利用本知识库内部的知识,也可以引入第三方知识库的知识来帮助完成。
整理了一份200G的AI资料包:
①人工智能课程及项目【含课件源码
②超详解人工智能学习路线图
③人工智能必看优质书籍电子书汇总
④国内外知名精华资源
⑤优质人工智能资源网站整理(找前辈、找代码、找论文都有)
⑥人工智能行业报告
⑦人工智能论文合集
/p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/","uri":"","width":31,"height":27,"darkImgUrl":"https://p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/","darkImgUri":"","formulaImgStatus":"succeed"}" class="syl-plugin-formula">
资料在网盘里排列的非常整齐干净!希望对大家的学习有所帮助, 私信备注【05】添加领取


知识图谱补全分为两个层次: 概念层次的知识补全 实例层次的知识补全
往往提到知识图谱构建过程中只是提及了实体和关系的抽取,然后就可以生成实体和关系组成的RDF了。
但是,仅仅获取三元组是不够的,还要考虑这些,因为三元组中的实体除了具有属性和关系之外,还可以 映射关联到知识概念层次的类型(type),而且一个实体的类型可以有很多

例如:实体奥巴马的类型在不同关系中是有变化的。
在出生信息描述中,类型为人;在创作回忆录的描述中其类型还可以是作家;在任职描述中还可以是政治家。

实体类型的概念层次模型
在这里:人、作家、政治家这些概念之间是有层次的,也就是所说的概念的层次模型。

1、概念层次的知识补全——主要是要解决实体的类型信息缺失问题
正如前面的例子所描述,一旦一个实体被判别为人这个类型,那么在以构建好的知识模式中,该实体除了人的类型外仍需要向下层概念搜索,以发现更多的类别描述信息。
(1)基于描述逻辑的规则推理机制。
本体论和模式 :实体都可以归结为一种本体,而这种本体会具有一组模式来保证其独特性,这组模式可以用规则来描述,因此,对于本体而言,其可以由这组规则来描述。
例如,奥巴马是个实体,他的本体可以归为人,而人的模式就是可以使用语言和工具、可以改造其他事务等等,这些模式可以通过规则来描述,于是基于描述逻辑的规则推理方法就出现了。
描述逻辑 是一种常见的知识表示方式,它建立在概念和关系之上。
比如,可以将关于人的实体实例(可以是文本)收集起来,从中提取出其中模式并以规则的形式记录下来,这样一来,只要遇到一个新的实体实例 ,只需将其代入到之前记录下的规则中进行比较即可做出判断,如果符合规则,就说明该实例可以归类为人的概念类型,否则就判定为非此概念类型。
(2)基于机器学习类型推理机制
经过基于描述逻辑的规则推理的发展阶段后,机器学习相关研究开始占据主流,此时 不是单纯地利用实例产生的规则等内部线索来进行判断,同时也要利用外部的特征和线索来学习类型的预测
对一个未知类型实体e1而言,如果能找到一个与其类似的且已知类型的实体e2的话,那么就可以据此推知实体e1的类型应该与e2的类型一致或至少相似。
此类方法主要可以分为:基于内容的类型推理、基于链接的类型推理和基于统计关系学习的类型推理(如,Markov逻辑网)几个方向。
(3)基于表示学习类型推理机制
将嵌入式学习和深度学习引入到类型推理,基于机器学习的类型推理方法大多假设数据中没有噪声,且其特征仍然需要认为选择和设计,引入深度学习可以避免特征工程。而类型推理要依据文本内容,也需要链接结构等其他特征的支持,此时嵌入式方法可以发挥其自身优势。

2、实例层次的知识补全
可以理解为:对于一个实例三元组(SPO,主谓宾),其中可能缺失情况为(?,P,O),(S,?,O)或者(S,P,?),这就如同知识库中不存在这个三元组,此时需要预测缺失的实体或者关系是什么。
事实上, 很多缺失的知识是可以通过已经获得的知识来推知的 ,有时这个过程也被称为 链接预测

注意 :有时知识不是缺失的,而是 新出现 的,即出现了新的三元组,且这个三元组不是原知识库所已知的知识,此时需要将其作为新知识补充道知识库中,但此种情形 不是传统意义的补全
(1)基于随机游走的概率补全方法
(2)基于表示学习的补全方法

知识图谱嵌入流程:
①结构嵌入表示法
②张量神经网络法
③矩阵分解法
④翻译法


(3)其他补全方法
跨知识库补全方法、基于信息检索技术的知识库补全方法、知识库中的常识知识补全

面临的挑战和主要发展方向:
(1)解决长尾实体及关系的稀疏性。
知名的明星的关系实例会很多,而对于普通民众的实例就很少,但是他们数量却众多,导致其相关的关系实例也是十分稀疏,而且在数量不断增加的情况下,这种情况会更加明显。
(2)实体的一对多、多对一和多对多问题。
对于大规模数据,不是一对十几或者几十数量级那么简单,而是成百上千的数量级,传统的解决方案无法有效深圳根本无法解决此种数量级别的关系学习问题。
(3)三元组的动态增加和变化导致KG的动态变化加剧。
新知识源源不断的产生,而之前的知识可能被后面证明是错误的,或者需要修正的。这些都会使得知识补全的过程也需修正改变,如何使得知识图谱补全技术适应KG的动态变化变得越来越重要,而这方面的技术还未引起足够的重视。
(4)KG中关系预测路径长度会不断增长。
关系预测能推理的长度是有限的,但在大规模知识图谱闪光,实体间的关系路径序列会变得越来越长,这就需要更高效的模型来描述更复杂的关系预测模型。

‘肆’ 知识图谱学习总结

知识图谱本质上是一种大型的语义网络,它旨在描述客观世界的实体/概念以及及其之间的关系。以实体/概念为节点,以关系为边,提供一种从关系的视角来看世界。

1960年,语义网络(Semantic Networks)作为知识表示的一种方法被提出,主要用于自言语言理解领域。它是一种用图来表示知识的结构化方式。在一个语义网络中,信息被表达为一组结点,结点通过一组带标记的有向直线彼此相连,用于表示结点间的关系。简而言之,语义网络可以比较容易地让我们理解语义和语义关系。

之前的语义网络受限于我们处理的方法,更多是依赖于专家的经验规则去构建,在规模方面受限于特定领域的数据。大规模网络,谷歌在2012年首先提出知识图谱的概念,在freebase的基础上扩展了大量来自互联网的实体数据和关系数据。据说目前实体的数据已经达到数十亿级,有达到千亿级的实例关系,规模是非常巨大的。

构成知识图谱的核心是三元组:实体(Entity)、属性(Attribute)和关系(Relation),可以表示为 <实体1,关系,实体2> 或  <实体1,属性1,属性值1>,例如:<Google,is-a,人工智能公司>;<人工智能公司,subclass,高料技公司>

基于已有的知识图谱三元组,可以推导出新的关系。例如:<翅膀 part-of 鸟>,<麻雀kind-of 鸟>,可以推导出<翅膀 part-of 麻雀>。

1.2 知识图谱的分类

通用知识图谱 实际上是谷歌或者网络这样的大型的互联网公司在构建的,它主最主要是用于它的搜索引擎,它面向的是通用领域,它的用户是全部的互联网的用户,它构建常识性的知识为主,包括结构化的网络知识,它强调的更多的是一种知识的广度,对知识的深度方面不做更多的要求,它的使用者也是普通的用户。

行业知识图谱 面向一个特定的领域,它的数据来源是来源于特定行业的语料,它是基于行业的数据来构建,而且要有一定的行业的深度,它强调的是更多的是深度,而不是广度,能够解决行业人员的问题,它的使用者也是这个行业内的从业人员,或是这个领域里面的专业人员来使用。

通用知识图谱和行业知识图谱,个并不是说完全互相独立的,是具有互相互补性的关系。一方面,通用知识图谱会不断的吸纳行业或者领域知识图谱的知识,来扩充它的知识面,然后增加它的知识的广度。同时,我们在构建一个行业知识图谱或者领域知识图谱的时候,实际上也并不是说只局限在这个领域的基本的数据,我们同时还要去通用知识图谱里面去吸纳更多的常识性的知识来作为补充,只有这样才能构成一个非常完整的行业知识图谱。

‘伍’ 知识图谱:方法、实践与应用笔记-第2章 知识图谱表示与建模

描述逻辑(description logic)是一簇知识表示的语言,其以结构化、形式化的方法来表示特定应用领域的知识.作为一类用于知识表示的形式化工具,描述逻辑在信息系统、软件工程以及自然语言处理等领域得到了广泛的应用[1].特别是在第三代Web——语义网(semantic Web)中,描述逻辑更是扮演着关键角色,并成为W3C推荐Web本体语言OWL的逻辑基础 。

现代知识图谱通常是以三元组为基础进行简单的知识表示,弱化了对强逻辑表示的要求。

基于向量的知识表示在现代知识图谱中越来越收到重视,因为基于向量的知识图谱表示可以使这些数据更易于和深度学习模型集成。

基于向量的知识表示: 知识表示学习的定义知识表示学习是将知识库中的知识表示为低维稠密的实体向量,即Embedding。知识图谱是由实体和关系组成,通常采用三元组的形式表示,【head(头实体),relation(实体的关系),tail(尾实体)】,简写为(h,r,t)。知识表示学习任务就是学习h,r,t的分布式表示(也被叫做知识图谱的嵌入表示(embedding))。

一阶谓词逻辑 :用变量和谓词来表示知识。

霍恩子句 :带有最多一个肯定文字的子句。有且只有一个肯定文字的霍恩子句叫做 明确子句 ,没有任何肯定文字的霍恩子句叫做 目标子句

霍恩逻辑

语义网络 :三元组(节点1,联想弧,节点2)

框架 :基本单元为类(槽,侧面)。基本单元表示一类事物吗?

描述逻辑 :一阶逻辑的一个可判定子集,即每个描述逻辑中的命题都可以在有限时间内完成证明或证否,只有极少数的描述逻辑类型被认为是不可判定的。利用一阶逻辑对语义网络和框架进行形式化后的产物?描述逻辑方法多数被用到涉及知识分类的应用领域,如数字图书馆和面向万维网的信息处理。描述逻辑是当前 语义网 发展中 本体 的理论基础。例如, OWL 因特网 本体 语言就是一种描述逻辑 SHIOQ (D) 的语法形式。

一个描述逻辑系统中的名字可分为概念(concept),属性(role)和个体(indivial)。例如,一个用描述逻辑描述的知识库如下:

男人 人 (男人 是 人)

丈夫 男人   婚配于人 (丈夫是 婚配于 至少一个 人 的 男人)

男人(张三) (张三是一个男人)

其中,“男人”、“人”、“丈夫”是概念,“婚配于”是属性,“张三”是个体

描述逻辑和一阶谓词逻辑的区别?

RDF/RDFS :DBpedia,Yago,Freebase

统一资源标识符 (英语: U niform  R esource  I dentifier,缩写: URI )在 电脑 术语中是一个用于 标识 某一 互联网 资源 名称的 字符串 。

该种标识允许用户对网络中(一般指 万维网 )的资源通过特定的 协议 进行交互操作。URI的最常见的形式是 统一资源定位符 (URL),经常指定为非正式的网址。更罕见的用法是 统一资源名称 (URN),其目的是通过提供一种途径。用于在特定的 名字空间 资源的标识,以补充网址。

OWL/OWL2 : 我认为就是在RDF的基础上再加一些约束。

OWL2QL为查询设计的;OWL2EL提供多项式推理,专为概念属于描述,本体的分类推理而设计,广泛应用于生物医疗领域,如临床医疗术语本体SNOMED CT;OWL2ET的分类复杂度是Ptime,用于推理(后两个区别?)

查询语言SPARQL

语义Markup表示语言 : 在网页中嵌入语义Markup的方法和表示语言。主要包括JSON-LD、RDFa和HTML5 MicroData。

Freebase:对象-object、事实-Facts、类型-Types和属性-Properties.

Wikidata:页面-Page、实体-Entities、条目-Items、属性-Properties、陈述-Statements、修饰-Qualifiers、引用-Reference等。

ConceptNet5:概念-Concepts、词-Words、短语-Phrases、断言-Assertions、关系-Relations、边-Edges。包含21种预定义的、多语言通用的关系。

词的向量表示方法:独热编码、词袋模型、词向量

词向量的产生方法中经典的额开源工具word2vec中包含两个模型cBoW和Skip-gram。

cBoW和Skip-gram都是用来训练word embeding的。

cBow和Bow的区别:Bow用于一段文本,是一种思想;cBow是把Bow的思想通过滑动窗口用于此向量的实现。

TransE是一个算法,用于graph enbeding.

word enbeding是将文本变成向量;graph emdeding是将实体和关系变成向量。

思考如何从word embeding变成graph embeding?

代表性知识图谱介绍:

1. SNOMED CT

SNOMED CT ( S ystematized  No menclature of  Med icine --  C linical  T erms, 医学系统命名法-临床术语 , 医学术语系统命名法-临床术语 ),是一部经过系统组织编排的,便于 计算机 处理的 医学 术语集 ,涵盖大多数方面的 临床信息 ,如 疾病 、所见、操作、 微生物 、 药物 等。采用该术语集,可以协调一致地在不同的 学科 、 专业 和照护地点之间实现对于临床数据的标引、存储、检索和聚合。同时,它还有助于组织 病历 内容,减少临床照护和科学研究工作中数据采集、编码及使用方式的变异。(From wiki)

SNOMED CT目前包括大约321 900条概念(Concept)、超过80万条临床概念相关的描述(Descriptions),和超过700万条进一步描述概念的关系(Relationships)。

SNOMED CT的主要内容包括概念表、描述表、关系表、历史表、ICD映射表和LONIC映射表。其中核心构成是: 概念表(按层级结构组织的具有临床含义的概念表)、描述表(用于表达概念的人类自然语言表)和关系表(用来说明的两个临床概念之间的关系) 。

‘陆’ 知识图谱中的三元组遵从一种三阶谓词逻辑的表达形式

知识图谱中的三元组遵从一种三阶谓词逻辑的表达形式。(对)

知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。

知识图谱,是通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、前沿领域以及整体知识架构达到多学科融合目的的现代理论。

它把复杂的知识领域通过数据挖掘、信息处理、知识计量和图形绘制而显示出来,揭示知识领域的动态发展规律,为学科研究提供切实的、有价值的参考。

迄今为止,其实际应用在发达国家已经逐步拓展并取得了较好的效果,但它在我国仍属研究的起步阶段。

‘柒’ 知识图谱基础组件RDF、RDFS、OWL

在知识图谱中,一个语句可以看做是一个知识
举个例子:猫是哺乳动物

每条知识标识为一个SPO三元组(Subject-Predicate-Object)
Subject : 主语
Predicate: 谓词
Object :宾语
在“猫是哺乳动物”这条知识中
猫:主语
是:谓词 用来描述或判定客体性质、特征或者客体之间关系的词项
动物:宾语

RDF(Resource Description Framework),资源描述框架,其本质是一个数据模型(Data Model)。它提供了一个统一的标准,用于描述实体/资源。RDF的作用就是描述上面提到的SPO三元组

将知识规范化之后,就是存储和传输的问题
目前,RDF序列化的方式主要有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等几种。
下面介绍一种使用的最多的方式 Turtle
以伪满皇宫博物院知识图谱为例,网上有很多例子,自行参考

同一个实体的多个属性可以紧凑表示,注意每一条后面末尾分号 ; 和逗号 . 的区别

在第一篇文章中说过,RDF在使用的时候还有很多局限性,这种局限体现在对事物的抽象能力上,举个例子
猫是哺乳动物 ,这个知识在不同的语境中有不同的意思

这个时候简单的

无法具体的区分要表示的是哪种意思
这时候就需要扩展规则 RDFS

还是以上面伪满皇宫博物院为例
此时,我们就要区分实体和类的不同了,用RDFS描述下上面的知识图谱

介绍下其中的几个关键字

RDFS中还有很多关键字,如 rdfs:subClassOf 等,详细可以参考 W3C文档

相对于RDFS,可以更加细化图谱中的关系
例如:其中 wwww.kg.com/persion/1 可以看做是一个实体罗纳尔多, www.kg.com/place/10086 也是一个实体,代表罗纳尔多的出生地,但是他是一个实体,不是罗纳尔多实体的属性,所以,数据之间有两种关系

另外延伸想象,是不是可以让数据具有推理能力,举几个例子

经过这样的一些逻辑定义,就使得数据具有了逻辑推理能力,这些功能的扩展,可以通过OWL完成,具体的属性见 W3C文档
这样经过修改后,上面的知识图谱可以表示为

上例子中数据属性和实体属性分别用 owl:DatatypeProperty 和 owl:ObjectProperty 表示
OWL中还有很多其他适用于推理的字段,下面列举几个

在融合数据的时候,OWL也可以去到很好的作用,例如:A的数据中定义的一个Person1,B的数据中定义了一个Person2,假如这两个数据中定义的Person是一样的,那么当A数据和B数据融合的时候,就可以使用OWL很好的融合,避免数据的重复定义

本体映射主要有以下三种

OWL中这种关系描述的属性定义,可以大大的增加推理机制,使海量的数据再处理的时候,不用一个一个的补全之间的关系,只要定义属性关系就好

‘捌’ 知识图谱可以用python构建吗

知识图谱可以用python构建吗?

答案当然是可以的!!!

那么如何使用python构建

什么是知识图谱

从Google搜索,到聊天机器人、金融风控、物联网场景、智能医疗、自适应教育、推荐系统,无一不跟知识图谱相关。它在技术领域的热度也在逐年上升。
互联网的终极形态是万物的互联,而搜索的终极目标是对万物的直接搜索。传统搜索引擎依靠网页之间的超链接实现网页的搜索,而语义搜索是直接对事物进行搜索,如人物、机构、地点等。这些事物可能来自文本、图片、视频、音频、IoT设备等各种信息资源。而知识图谱和语义技术提供了关于这些事物的分类、属性和关系的描述,使得搜索引擎可以直接对事物进行索引和搜索。
知识图谱是由Google公司在2012年提出来的一个新的概念。从学术的角度,我们可以对知识图谱给一个这样的定义:“知识图谱本质上是语义网络(Semantic Network)的知识库”。但这有点抽象,所以换个角度,从实际应用的角度出发其实可以简单地把知识图谱理解成多关系图(Multi-relational Graph)。
那什么叫多关系图呢? 学过数据结构的都应该知道什么是图(Graph)。图是由节点(Vertex)和边(Edge)来构成,但这些图通常只包含一种类型的节点和边。但相反,多关系图一般包含多种类型的节点和多种类型的边。
本项目利用pandas将excel中数据抽取,以三元组形式加载到neo4j数据库中构建相关知识图谱。

运行环境

基于Neo4j能够很容易构建知识图谱,除了用neo4j自带的cypher,也支持Python包py2neo创建节点和关系从而构建知识图谱。本项目是基于发票信息,将发票数据中结构化数据抽象成三元组,分别创建节点和关系从而构建成知识图谱。
具体包依赖可以参考文件requirements.txt

neo4j-driver==1.6.2numpy==1.15.3pandas==0.23.4parso==0.3.1pickleshare==0.7.5pluggy==0.8.0prompt-toolkit==1.0.15py==1.7.0py2neo==3Pygments==2.2.0pytest==3.9.3python-dateutil==2.7.5wcwidth==0.1.7wincertstore==0.2xlrd==1.1.0

将所需依赖安装到pyton中:pip install -r requirements.txt

Pandas抽取excel数据

python中pandas非常适用于数据分析与处理,可以将excel文件转换成dataframe格式,这种格式类似于Spark中的Dataframe结构,可以用类sql的形式对数据进行处理。
Excel数据结构如下

通过函数data_extraction和函数relation_extrantion分别抽取构建知识图谱所需要的节点数据以及联系数据,构建三元组。
数据提取主要采用pandas将excel数据转换成dataframe类型
invoice_neo4j.py

建立知识图谱所需节点和关系数据

DataToNeo4jClass.py

具体代码请移步到GitHub上下载

详细内容请到github下载,项目名neo4j-python-pandas-py2neo-v3

更多Python知识,请关注:Python自学网!!

阅读全文

与python三元组知识图谱相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:142
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:732
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:301
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:141
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:890
app转账是什么 浏览:163