
【Neo4j Desktop】用cypher或python创建知识图谱
个人项目总结:用cypher或python在neo4j导入csv建立知识图谱,建立了一些简单的结点和关系,适合刚接触neo4j的学习(本人也是小白)
目录
一、打开neo4j
1.Add项目
1.1 Add
填写name和password(我这里name是text123 password是123)
1.2 Start
1.3 Open
open后 就会打开neo4j browser:我们后续创建的知识图谱就会显示在这里
二、用cypher创建知识图谱
1.处理bird.csv文件
bird文件已经上传资源(在本文最顶部 查看下载) 或在OpenKG.CN下载
OpenKG.CN:鸟类百科知识图谱 - 数据集 - 开放知识图谱 (openkg.cn)
1.1 csv文件放入import文件夹中
点击 ... -> open folder -> import
1.2 csv用记事本方式打开
右击--打开方式--记事本
1.3 点击另存为、编码设成utf-8,保存
2.创建结点
2.1 创建结点
LOAD CSV WITH HEADERS FROM 'file:/bird.csv' AS line
CREATE (a1:鸟名 {name:line.鸟名,hongMo:line.虹膜,zui:line.嘴,jiao:line.脚})
//第一行是寻找import文件夹里的“bird.csv”文件
//第二行 name、hongMo等,是“鸟名”的属性。
//“line.鸟名”的“鸟名”是csv文件里的“鸟名”那一列的第一个元素
2.2 查看效果
2.3 继续创建余下6种结点
LOAD CSV WITH HEADERS FROM 'file:/bird.csv' AS line
MERGE (a2:目 {name:line.目,niaoMing:line.鸟名})
MERGE (a3:科 {name:line.科,niaoMing:line.鸟名})
MERGE (a4:属 {name:line.属,niaoMing:line.鸟名})
MERGE (a5:虹膜 {name:line.虹膜,niaoMing:line.鸟名})
MERGE (a6:嘴 {name:line.嘴,niaoMing:line.鸟名})
MERGE (a7:脚 {name:line.脚,niaoMing:line.鸟名})
//为什么都有一个“niaoMing”的属性?:避免结点错乱,一对多等现象,好奇者可以把“,niaoMing:line.鸟名”删掉,再运行一下试试试试
//MERGE与CREATE区别:MERGE不会建立完全重复的结点。
2.4 结点可以改颜色哦
3.创建关系
3.1 创建关系
load csv with headers from "file:/bird.csv" as line with line
with*match (from:鸟名{name:line.鸟名}),(to:目{niaoMing:line.鸟名})
merge (from)-[r:目]->(to)
//为什么是“niaoMing:line.鸟名”而不是“name:line.目”:同样是为了避免出错
//前者效果如左图,后者如右图
3.2 继续创建关系,最后结果:
3.3 注意:关闭neo4j时,先点stop,等待一段时间,再点×
三、用python建立知识图谱
1.关于jupyter
1.1 安装网页版的jupyter
打开Windows命令行窗口cmd(也有其它方法安装网页版的jupyter,这里我只提供以下这一种)
输入以下代码,等待下载完成
pip install jupyter
python -m pip list可以查看已下载组件
python -m pip list
1.2 终端启动jupyter notebook
启动完!!!!终端一定不要关!!!!
(后面的操作中,有时会需要重启终端,但如果是开始建立知识图谱了,那终端是万万不能关的!)
jupyter notebook
(如果是第一次用jupyter notebook,我们要去浅浅配置一下)
1.3 配置jupyter notebook
命令行窗口输入jupyter notebook --generate-config
jupyter notebook --generate-config
然后我们打开 C:\Users\用户名\ .jupyter(我们路径会有点小区别,我的是C:\Users\86187\.jupyter 认真找嗷)
找到jupyter_notebook_config.py 打开(如果双击打不开,就找到自己的python代码编译器 比如vsCode或者IDLE等,再在编译器中open该文件)
找到#c.NotebookApp.notebook_dir = ''这句话(我们的行数可能不一样,认真找)
删掉“#”然后在单引号里填一个目录,比如我的是D盘的jupyterCode文件夹,填好记得保存。
然后我们重启jupyter notebook,就会进入我们的工作目录啦!
1.4 代码补全(可以不做)
打开cmd,输入pip install jupyter_contrib_nbextensions,等待安装成功;
pip install jupyter_contrib_nbextensions
(要关闭jupyter notebook)在cmd中输入jupyter contrib nbextension install --user --skip-running-check,等待配置成功;
jupyter contrib nbextension install --user --skip-running-check
启动jupyter notebook,在选项栏中多出了Nbextension的选项
点开该选项,勾选Hinterland即可。
如果是下面这样,点红线画着的地方,就可以勾选Hinterland了。
2.创建知识图谱
2.1 打开neo4j
这个界面开着不要关 (neo4j browser)
2.2 终端打开jupyter notebook
点击new->python 3
2.3 输入代码
from py2neo import *
import numpy as np
import pandas as pd
def create_bird():
df = pd.read_csv('bird.csv',engine='python')
graph = Graph("http://localhost:7474",auth=("neo4j", "123"))
graph.delete_all()
graph.begin()
for i, line in df.iterrows():
cql = '''
MERGE (a:NiaoMing{name:\'%s\',hongMo:\'%s\',zui:\'%s\',jiao:\'%s\'})
MERGE (b:Mu{name:\'%s\',NiaoMing:\'%s\'})
MERGE (a)-[:目]-> (b)
MERGE (c:Ke{name:\'%s\',NiaoMing:\'%s\'})
MERGE (a)-[:科]-> (c)
MERGE (d:Shu{name:\'%s\',NiaoMing:\'%s\'})
MERGE (a)-[:属]-> (d)
MERGE (e:HongMo{name:\'%s\',NiaoMing:\'%s\'})
MERGE (a)-[:虹膜]-> (e)
MERGE (f:Zui{name:\'%s\',NiaoMing:\'%s\'})
MERGE (a)-[:嘴]-> (f)
MERGE (g:Jiao{name:\'%s\',NiaoMing:\'%s\'})
MERGE (a)-[:脚]-> (g)
''' % (line['鸟名'],line['虹膜'],line['嘴'],line['脚'],line['目'],line['鸟名'],
line['科'],line['鸟名'],line['属'],line['鸟名'],line['虹膜'],line['鸟名'],
line['嘴'],line['鸟名'],line['脚'],line['鸟名'])
graph.run(cql)
if __name__ == '__main__':
create_bird()
如果这时候你急着运行的话,我想你会发现有很多报错的 嘿嘿 下面我们一个一个来解决:
2.4 和neo4j建立连接
打开代码中的网址http://localhost:7474,(注意这时候桌面版的neo4j的neo4j browser是没有关的,关了就打不开网站了)
username填“neo4j”
password是填当初Add项目时,自己输入的密码。比如我的text123项目密码是123,我就填123,同时代码里对应的就是auth=("neo4j", "123"),如果你的密码是其他的,比如4556aa,那代码这里就要改成auth=("neo4j", "4556aa"),同时网站那里,填的password也是“4556aa”
填完之后点击connect,然后这个网站也不要关
我们继续回到jupyter 写代码的那个界面,注意这三行代码
2.5 安装py2neo、numpy、pandas
打开终端安装py2neo、numpy、pandas(这仨都是啥这里不做赘述。)
pip install py2neo
pip install numpy
pip install pandas
2.6 处理csv文件
bird.csv文件 提取码tmsg这个文件要放在工作目录那里,比如我的工作目录是D盘的“jupyterCode”文件夹,我就把csv文件放在这个文件夹里
右击,记事本方式打开该csv文件,点击“另存为”,设置编码为utf-8,保存。
2.7 点击运行,查看结果
现在再点击运行,在网页和桌面版neo4j browser都可以看到效果啦!
(如果我没漏掉什么过程的话...)
注意:关闭neo4j时,先点stop,再点×
写在最后(与正文无关)
到这里,基本就结束啦。我目前是个大二小白,跟着老师做项目接触到了知识图谱和neo4j,自己搜罗了很多资料,一步一步自学过来,踩了很多很多的坑,处理了很多很多的错误,才走到今天...
后来逐渐萌发了写这篇文章的想法,希望可以帮助到有需要的人...
当然我跟大佬们比起来就是小渣渣,这篇文章也可能会考虑不全漏掉什么,后续发现了会再补充~欢迎大家纠错,谢谢!
2024年补充:这个项目好久不接触了 忘性很大 很抱歉很多问题不能帮大家解决
更多推荐
所有评论(0)