一、知识图谱概念

知识图谱的概念是由谷歌公司在2012年5月17日提出的,谷歌公司将以此为基础构建下一代智能化搜索引擎,知识图谱技术创造出一种全新的信息检索模式,为解决信息检索问题提供了新的思路。本质上,知识图谱是一种揭示实体之间关系的语义网络,可以对现实世界的事物及其相互关系进行形式化地描述。现在的知识图谱已被用来泛指各种大规模的知识库。

知识图谱,简而言之就是图数据库既可以存储信息,又能直观地表达两个实体之间的关系

知识图谱的基本单位就是三元组,即“实体1”-“关系”-“实体2”,本文以药品的知识图谱为例,即“药品”-“适应症”-“疾病”,如图所示:

“氯唑沙宗片”-“适应症”-“韧带扭伤”

下面是实体标签和关系标签:

在示例中,实体类型主要有药品、疾病、观测操作、用药目的、临床所见、事件、人群等;关系类型主要有适应症、适用人群、剂型等。

二、知识图谱常用的数据库

在这里我只给出我知道和常用的,不全请见谅哈,哈哈哈哈哈

(1)Neo4j

Neo4j是一个流行的图形数据库,它是开源的。最近,Neo4j的社区版已经由遵循AGPL许可协议转向了遵循GPL许可协议。尽管如此,Neo4j的企业版依然使用AGPL许可。Neo4j基于Java实现,兼容ACID特性,也支持其他编程语言,如Ruby和Python。

比较简单易学,以上例子就是neo4j的数据效果。

官网:https://neo4j.com/

下载界面:Neo4j Download Center - Neo4j Graph Data Platform

(2)Nebula Graph

Nebula Graph是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。

优点很多,很多大厂都在用,不细介绍,就是学起来比neo4j复杂一点。

下载安装包:(有学习指南)

Releases · vesoft-inc/nebula-console · GitHub

(3)OrientDB

OrientDB是兼具文档数据库的灵活性和图形数据库管理链接能力的可深层次扩展的文档-图形数据库管理系统。可选无模式、全模式或混合模式下。支持许多高级特性,诸如ACID事务、快速索引,原生和SQL查询功能。可以JSON格式导入、导出文档。若不执行昂贵的JOIN操作的话,如同关系数据库可在几毫秒内可检索数以百记的链接文档图。

学习起来也比较简单,研究生时候做过相关项目,体验一般。

官网:https://orientdb.com/

W3C教程:https://www.w3cschool.cn/orientdb/

官方文档:Home · OrientDB Manual

三、基于neo4j进行知识图谱的实例创建

neo4j安装过程:略,我安装的是桌面版的neo4j

(1)数据准备

知识图谱的数据需要是三元组的形式,如果不是三元组,则需要我们通过代码转化为三元组的形式。本文的样例数据是:药品适应症和禁忌症数据,这个需要小伙伴们自己提前清洗数据

 (2)Python 代码模块

应用的是py2neo包,这个是第三方开发的实用性比较高的开源模块,它支持批量导入neo4j数据库数据,进而快捷地建立图数据库,并且交互性比较好。用pip语句安装py2neo库即可。

pip install py2neo
pip3 install py2neo
#清华镜像安装
pip install --user  -i https://pypi.tuna.tsinghua.edu.cn/simple py2neo

首先打开,neo4j桌面版,创建一个空如数据库,自己起名(不改名字就是默认的)和创建密码:

运行数据库,start:

打开python的IDE,在这里我用的是jupyter notebook,连接数据库,test_drug是我自己的数据库,需要改成你的,密码也是:

from py2neo import Graph, Node, Relationship, NodeMatcher
from py2neo.matching import RelationshipMatcher# 连接数据库
graph = Graph("http://localhost:7474", username="test_drug", password='123456')

创建节点:

p1 = Node("drug", name="伸腿瞪眼丸")
p2 = Node("disease", name="精神恍惚")
graph.create(p1)
graph.create(p2)

创建关系:

r = Relationship(p1, "特效治疗", p2)
graph.create(r)

现在就创建了一个节点,打开neo4j检查一下:

 (3)批量创建节点和关系

需要读取自己的数据,并转化为三元组的形式,创建节点集合,批量导入节点:

# -------------------------------------------------------------------------------
# coding:utf-8
# Description:
# Reference:
# Author: dacongming
# -------------------------------------------------------------------------------import pandas as pd
from py2neo import Graph, Node, Relationship, NodeMatcher, Subgraph
from py2neo.matching import RelationshipMatcher#读取数据
df = pd.read_excel('drug.xlsx')
test_graph = Graph('http://localhost:7474',username = 'test_drug',password = '123456')#创建节点集合
a = df[['entity','entityTag']]
b = df[['value','valueTag']]
b.columns = ['entity','entityTag']
entity = pd.concat([a,b])node_lis = []
for i in entity.values:node = Node(i[1], name = i[0])node_lis.append(node)
nodes=Subgraph(node_lis)
test_graph.create(nodes)

效果如图:

批量导入关系:

#创建关系集合
lis = []
count = 0
for i in df.values:count +=1print(count)c= test_graph.nodes.match(i[1],name=i[0]).first()d = test_graph.nodes.match(i[4],name=i[3]).first()rel_a=Relationship(c,i[2],d)lis.append(rel_a)#导入关系
nodes=Subgraph(relationships=lis)
test_graph.create(nodes)

这样就建立了一个完整的知识图谱,导入了3个小时左右终于完成了,如图所示:

总结:在知识图谱的建设过程中,最复杂的是数据的获取和处理过程,数据越全面和越标准,搭建的知识图谱越实用,其赋能的业务场景也越广泛。在合理用药方面,知识图谱的应用有智能问诊、智能开药、药品审核等方向,这些都以全面和标准的数据为基础,所以,我们所要做的工作还有很多很多!

Python neo4j建立知识图谱,药品知识图谱,neo4j知识图谱,知识图谱的建立过程,智能用药知识图谱,智能问诊必备知识图谱相关推荐

  1. 73个产品小白必备知识,项目管理也可看

    这些词汇能帮助我们从先从概念层面去了解最浅层的产品知识,了解产品经理的工作,让我们能更快的融入这个角色中去. 希望大家能仔细阅读此文,一定会对你有所帮助. 本文主要分为六个部分,分别是,职位类名称,工 ...

  2. 领域应用 | HiTA知识图谱 “药品-适应证”图谱数据发布!

    本文转载自公众号:OMAHA联盟. 2019年8月,OMAHA对HiTA知识图谱服务平台(kg.omaha.org.cn)进行了更新,同步发布了医学知识图谱表达模型(schema).2019年9月17 ...

  3. 知识图谱:windows安装neo4j

    推荐十分好用的开发软件集合网站:http://ninite.com/ 下载neo4j https://neo4j.com/artifact.php?name=neo4j-community-3.3.9 ...

  4. python基础一入门必备知识-Python快速入门指南基础知识详细说明

    随着人工智能大火,我们身边几乎处处充满着AL的气息,就连停车,都是机器人值班了. 可是很多人都不知道人工智能是由什么开发的,各种相关联的框架都是以Python作为主要语言开发出来的. Python本身 ...

  5. python 三引号_入门Python 必备知识基础(一)

    1 标识符 标识符是编程时使用的名字,用于给变量.函数.语句块等命名,Python 中标识符由字母.数字.下划线组成,不能以数字开头,区分大小写. 以下划线开头的标识符有特殊含义,单下划线开头的标识符 ...

  6. 全站最全面的Python 基础入门必备知识大全,学完即就业!【建议收藏仔细学习】

    前言: Python作为21世纪最火的编程语言,市面上各种学习视频层出不穷,关于Python的学习氛围也逐渐浓厚!!最近一段时间越来越多的知友们在私信我,希望我出一期python基础入门的内容,肝了N ...

  7. python 支付宝个人账单_金融支付财务融合业务-实践分享1:订单、账单、交易流水、账套知识解构、原理解析...

    本文作者从实际工作实践出发,结合案例等分享了电商金融支付财务融合中的基本概念和相关原理解析,包括:订单.账单.交易流水和账知识解构,供大家一同参考和学习. 从事电商.进销存.金融.支付.财务的产品同学 ...

  8. 接触【专利写作】的必备知识(包含少部分撰写技巧)

    文章目录 0 前言 1 专利概述 1.1 三种类型的专利 1.2 注意点 2 专利检索 2.1 检索网站 2.2 检索步骤 2.3 检索式组合 3 相关文件 3.1 需要提交 3.1.1 第一项:说明 ...

  9. 开发微信小程序的必备技能图谱

    今天被微信小程序彻底刷屏了,哎呀,JS开发者坐等涨工资吧. 小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了&q ...

最新文章

  1. Scala函数式编程(三) scala集合和函数
  2. 从零开始的ROS四轴机械臂控制-目录
  3. IOS版添加phonegap-视频播放插件教程
  4. 【CentOS】设置服务开机自动启动
  5. 网球hcc http catcher使用方法以及规则分享
  6. LeetCode Longest Absolute File Path(栈和前缀和解法)
  7. 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 2 Keras - Tutorial - Happy House
  8. 山体等高线怎么看_怎么判断牙龈已经萎缩?
  9. sql 1行拆分成两行_EXCEL总表拆分成100个分表,同事用1天,我只用10秒钟
  10. python文本去重_Python做文本按行去重的实现方法
  11. 腾讯微博Android客户端开发——OAuth认证介绍
  12. Visual Studio Code 快捷键的设置
  13. Focal Loss 分类问题 pytorch实现代码(简单实现)
  14. 限制文本输入框只能输入0-9数字
  15. glibc版本查看_[译] 写一个简单的内存分配器(替换glibc中的malloc函数)
  16. java treeset排序_java TreeSet的排序之自然排序
  17. paip.python NameError name 'xxx' is not defined\
  18. qgc地面站如何导入离线地图_如何下载百度地图离线包并导入OruxMaps
  19. cmyk rgb 数值转换_计算机视觉学习笔记2 图像类型转换
  20. Windows11上找BitLocker密钥

热门文章

  1. 基于java+sql+servlet的金融借贷管理系统mysql数据源
  2. 计算机多媒体信息技术,从多媒体技术走向信息技术
  3. 用 AI 算法让你的圣诞斗图“凡尔赛”起来~
  4. YOLOv5代码阅读笔记
  5. 【办公常用软件有哪些】万彩办公大师教程丨超级文本转语音
  6. JAVA-通过身高体重计算BMI判断人的体型(体型计算器版)
  7. 计算器也是一种计算机游戏,脑洞大开 一款名曰计算器的游戏评测
  8. Python+matplotlib画爱心
  9. uniapp - Map地图组件属性示例
  10. Android学习笔记 2.2.1 线性布局 2.2.2 表格布局