【知识图谱】小白学习,neo4j的使用
学习目的:已有数据:xml中的论文作者信息,目的是,构建作者之间的关系。
(以下都是边学边写,给自己疏离用的,漏洞专业术语使用错误肯定非常多。)
首先知识图谱,就是构建一系列实体关系,类似于数据库。它囊括了一系列知识抽取、表达、构建、检索等技术,部分还需要一些有关数据挖掘的深度学习机器学习算法。但这里主要做的是,构建简单的三元组,并将其可视化。
1,安装。
使用教程https://www.cnblogs.com/ljhdo/archive/2017/05/19/5521577.html。
安装后使用时,每一次都打开bin所在的文件夹,输入cmd,进入终端,输入命令行neo4j.bat console,然后就可以进入那个网址了。
2,撰写代码。
create(n:ability {name:"沟通"})
create(m:train {name:"培训"})
create(n)-[r0:has]->(a:method {name:"交流"})
create(n)-[r1:has]->(b:method {name:"会议"})
create(n)-[r2:has]->(c:method {name:"协作"})
create(n)-[r3:has]->(d:method {name:"汇报"})
create(m)-[r4:can {probability:0.6}]->(a)
create(m)-[r5:can {probability:0.6}]->(b)
create(m)-[r6:can {probability:0.2}]->(d)
return m,n,a,b,c,d,r0,r1,r2,r3,r4,r5,r6
————————————————
我看那些构建节点的代码貌似还挺简单的(都是学过数据库的人了),于是开始思考数据导入的方式。明显,我需要选择,自动地把xml中的作者信息传输到图形数据库中。以下是我学习到的几种方式。
(1) Cypher create 语句,为每一条数据写一个create
(2) Cypher load csv 语句,将数据转成CSV格式,通过LOAD CSV读取数据。
(3) 官方提供的neo4j-import工具,未来将被neo4j-adminimport代替
(4) 官方提供的Java API BatchInserter
(5) 大牛编写的 batch-import 工具
(6) neo4j-apocload.csv +apoc.load.relationship
(7) 针对实际业务场景,定制化开发。
————————————————出处:https://mp.weixin.qq.com/s/ZYqDSx333nTCYBpHydfYMg
(1)算了算了。一条条写,还不写死我去。
(2)显然csv格式的数据是被写死的,于是我又搜索了一下,怎么将xml转成csv。
答案1:直接另存为里面选就好了。
用Excel打开目标文件,选择另存为.CSV文件格式,然后以记事本打开.csv文件,然后另存为时编码方式选择Unicode,再以.csv为后缀保存,再打开的时候就会显示真正的.CSV格式(以逗号为分割符)
答案2:1.存盘一个xml文件
2. 在Excel中打开CSV文件。在菜单或选项卡的“开发工具”的“XML”组中,单击“源”。
3. 单击” XML映射“ ,在出现的对话框中点击 “添加” ,选择上述新生成的XML文件。
4. 然后点击“ 确定” 即可,此时右侧显示出XML的层次结构。
5. 选中结构中的temp, 然后直接拖曳到CSV表格的第一行数据上即可。注意此时整个表格都被选中了。
6. 点 菜单或选项卡上的“开发工具” , “XML” ,“导出”。
然后就像保存文件一样保存即可。
然后我发现我原来的xml好像有点问题…,输出来的csv文件并不是按照作者来,一行一行的。罢了。先试试。
问题:如何向图形数据库中导入csv文件。
https://www.cnblogs.com/April1995/p/10531733.html(似乎是三个表之间建立了联系,暂时不用,先留着)
https://cloud.tencent.com/developer/article/1387710
https://www.w3cschool.cn/neo4j/neo4j_cql_create_node.html(cql语句学习大全。标记重点!!!)
USING PERIODIC COMMIT 10
LOAD CSV FROM "file:///test.csv" AS line
create (p:person{id:line[0],name:line[1],state:line[2]})
//我发现了一个十分智障的问题,create之后似乎不能跟着match,我的总报错。没道理,可能是因为我多次创建?可是多次创建也不报错啊。只要create后面跟了match就报错。
MATCH(m:person) return m
最后发现,我还是先处理一下我杂草一般的xml数据比较好。
另外,以我的尿性,估计玩一次,都要清空一次数据库,记住一下清空语句:match (n) detach delete n
匹配关系:
MATCH (father:person),(son:person) WHERE father.state = "father" AND son.state= "son" CREATE (father)-[r1:我是你爸爸{time:"forever"}]->(son) RETURN r1 MATCH (older:person),(smaller:person) WHERE older.state = "son" AND smaller.state= "son" CREATE (older)-[r:好兄弟{time:"天长地久"}]->(smaller) RETURN r
上一篇: 程序如何在两个gpu卡上并行运行_单机多卡并行训练的程序编写
下一篇: 【NLP】三种知识图谱