草庐IT

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

医学小达人 2023-07-18 原文

一、知识图谱概念

知识图谱的概念是由谷歌公司在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 +=1
    print(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. ruby - 与 DataMapper 和 Sinatra 建立关联 - 2

    好吧,这让我发疯了。我已经阅读了Associations文章和示例,并在过去三天里一直在努力解决这个问题,我已经厌倦了这让我感到愚蠢,所以......如何与DataMapper建立关联?(我将DM与Sinatra和SQLite3一起使用。对于具有多个值等的单个表,一切都很好。当我开始尝试将它们关联起来时,我开始出现错误。)假设我有一个种满苹果树的Orchard。每棵树都有很多苹果。每个苹果都有很多种子。因此每棵树都有许多种子通过它的苹果require'sinatra'require'datamapper'DataMapper::setup(:default,"sqlite3://#{D

  2. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  3. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  4. 智能客服 | 浅谈人工智能聊天机器人ChatGPT - 2

    2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动

  5. ruby - 是否有 Log4J for Ruby 的等价物,Log4Ruby? - 2

    找了一圈也没找到。是否有Ruby的Log4X等价物?如果不是,那么处理所有调试语句的最佳方法是什么。我是Ruby的新手。谢谢! 最佳答案 Ruby带有一个内置的日志库,但是有log4r.内置库的一个简短示例:#!/usr/bin/envrubyrequire'logger'log=Logger.new('mylog.txt')log.debug"Hellolog" 关于ruby-是否有Log4JforRuby的等价物,Log4Ruby?,我们在StackOverflow上找到一个类似的问

  6. 基于python的短视频智能推荐/django的影视网站/视频推荐系统 - 2

    摘要本论文主要论述了如何使用Python技术开发一个短视频智能推荐,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述短视频智能推荐的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。 短视频智能推荐的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、热门视频管理、用户上传管理、系统管理,用户:首页、个人中心、用户上传管理、我的收藏管理,前台首页;首页、热门视频、用户上传、公告信息、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所以使得整个短视频智能推荐信

  7. ruby - Ruby基础知识 - 2

    Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。已关闭8年。什么是学习ruby语言

  8. 【毕业设计】基于单片机的智能温控农业大棚系统 - 物联网 stm32 - 2

    文章目录1简介2绪论2.1课题背景与目的3系统设计详细设计描述3.2硬件部分温度测量电路其他电路部分3.3软件部分主程序子系统程序温湿度程序流程键盘显示子程序3.4实现效果3.5部分相关代码4最后1简介Hi,大家好,这里是丹成学长,今天向大家介绍一个单片机项目基于单片机的智能温控农业大棚系统大家可用于课程设计或毕业设计单片机-嵌入式毕设选题大全及项目分享:https://blog.csdn.net/m0_71572576/article/details/1254090522绪论2.1课题背景与目的近年来我国的温室控制取得了长足的进步,首先在温室群控制方面,进行了初步的探索和理论研究,其次在温室

  9. BigData/Cloud Computing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程 - 2

    BigData/CloudComputing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程目录一、云计算网站建设:部署与发布网站建设:简单动态网站搭建云服务器管理维护云数据库管理与数据迁移云存储:对象存储管理与安全超大流量网站的负载均衡二、大数据MOOC网站日志分析搭建企业级数据分析平台基于LBS的热点店铺搜索基于机器学习PAI实现精细化营销基于机器学习的客户流失预警分析使用DataV制作实时销售数据可视化大屏使用MaxCompute进行数据质量核查使用Quick BI制作图形化报表使用时间序列分解模型预测商品销量三、云安全云平台使用安全云上服务

  10. 建立个人网站的 Ruby 工具 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我正在努力寻找一套好的工具来实现我的个人网站。必须具备:网站或其生成器必须基于Ruby必须易于部署和维护拥有的美好:它应该在排版上干净漂亮它应该具有html5/css3功能我正在考虑直接使用Rails3,但它似乎有点过分了。编辑内容将是作品集和博客的混合体。你们ruby在用什么?效果好吗?

随机推荐