目录

··打开neo4j

··用cypher创建知识图谱

 ··用python建立知识图谱

·······打开neo4j·······

····Add项目

        ··填写name和password(我这里name是text123 password是123)

------>

····点击start

····点击open

 

         ··open后 就会打开neo4j browser:我们后续创建的知识图谱就会显示在这里

·······用cypher创建知识图谱·······

····处理bird.csv文件

        bird.csv文件 提取码:tmsg

 1.csv文件放入import文件夹中

      ·· 点击  ... -> open folder -> import

 2.csv用记事本方式打开

        ··右击--打开方式--记事本

         ··点击另存为、编码设成utf-8,保存。

----->

····创建结点

        ··创建结点:

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文件里的“鸟名”那一列的第一个元素

        ··查看效果:

         ··继续创建余下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不会建立完全重复的结点。

        ··结点可以改颜色哦

---->

····创建关系

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.目”:同样是为了避免出错

//前者效果如左图,后者如右图

---

         ··继续创建关系,最后结果:

        ··注意:关闭neo4j时,先点stop,等待一段时间,再点×

 ·······用python建立知识图谱·······

····关于jupyter

1.安装网页版的jupyter

        1.打开Windows命令行窗口cmd(也有其它方法安装网页版的jupyter,这里我只提供以下这一种)

        2.输入以下代码,等待下载完成

pip install jupyter

        3.python -m pip list可以查看已下载组件

python -m pip list

2.终端启动jupyter notebook

        ··启动完!!!!终端一定不要关!!!!

        ··(后面的操作中,有时会需要重启终端,但如果是开始建立知识图谱了,那终端是万万不能关的!)

jupyter notebook

       ··(如果是第一次用jupyter notebook,我们要去浅浅配置一下)

3.配置jupyter notebook

1.命令行窗口输入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,就会进入我们的工作目录啦!

2.代码补全(可以不做)

        ··打开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了。

​ 

····创建知识图谱

1.打开neo4j

        ··这个界面开着不要关 (neo4j browser)

2.终端打开jupyter notebook

        ··点击new->python 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()

         ··如果这时候你急着运行的话,我想你会发现有很多报错的(嘻嘻)下面我们一个一个来解决:

3.和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 写代码的那个界面,注意这三行代码

      ​

4.安装py2neo、numpy、pandas

        ··打开终端安装py2neo、numpy、pandas(这仨都是啥这里不做赘述。)

pip install py2neo

pip install numpy

pip install pandas

5.处理csv文件

        ··bird.csv文件 提取码tmsg这个文件要放在工作目录那里,比如我的工作目录是D盘的“jupyterCode”文件夹,我就把csv文件放在这个文件夹里

​ 

        ··右击,记事本方式打开该csv文件,点击“另存为”,设置编码为utf-8,保存。

​-->​

6.点击运行,查看结果

        ··现在再点击运行,在网页和桌面版neo4j browser都可以看到效果啦!(如果我没漏掉什么过程的话...)

 ​

        ··注意:关闭neo4j时,先点stop,再点×

····写在最后(与正文无关)

        到这里,基本就结束啦。我呢,目前是个大二小白,跟着老师做项目接触到了知识图谱和neo4j,自己搜罗了很多资料,一步一步自学过来,踩了很多很多的坑,处理了很多很多的错误,才走到今天...

        后来逐渐萌发了写这篇文章的想法,希望可以帮助到有需要的人!

        当然我跟大佬们比起来就是小渣渣,这篇文章也可能会考虑不全漏掉什么,后续发现了会再补充~欢迎大家纠错,谢谢!

查看原文