贪心学院 Demo2 - AI技能知识图谱

导读:
demo内容来源网课贪心科技AI学社的网课《人工智能Python编程特训营》
本篇博客的主要内容是neo4j的import导入方式及一些简单的Cypher语句。
由于以前接触过neo4j所以这篇文章也就写的不深,对neo4j有比较大的兴趣可以参考一下我整理的另一篇文章。https://www.jianshu.com/p/6610129bbfd1

这次课程内容没有什么好介绍的,只是讲了 neo4j最最最基本的用法。

作业

利用Neo4j构建图片所示内容,熟悉Cypher查询语言


准备工作及说明

我没有用create来创建结点和联系,而是直接写好数据的csv格式文件,然后再利用neo4j的csv直接导入neo4j数据库中。
这是我已经写好的csv文件的格式,里面包括了3种结点和5种联系。

链接:https://pan.baidu.com/s/1xoxj7ccopOklnDsTw_YGww
提取码:dhap
复制这段内容后打开百度网盘手机App,操作更方便哦

假设已经下好了CSV格式的数据,之后我们就要进行导入,但是导入之前有几点需要说明:(很重要)

  • CSV文件的第一行是属性名,CSV文件是通过逗号隔开的。
  • 结点CSV文件中必须有:ID这个属性字段,且这个ID是全局唯一:LABEL字段不是必选项,可以在导入的时候说明。
  • 联系CSV文件中必须有:START_ID:END_ID字段,对应前面的结点CSV的ID字段。
  • 由于是中文,因此csv文件需要保存为utf-8的格式,否则会出现乱码。
  • 导入的时候要保证neo4j路径下data/dataset下没有graph.db这个文件,因为这种导入方法只能第一次导入,不能增量导入
  • 导入的时候必须关闭neo4j,在命令行里面输入neo4j stop关掉数据库,然后把graph.db删掉,然后导入文件,再neo4j start打开数据库就可以了。

备注:其实这种导入方法在这个demo中不是很好,因为一共就只有42个结点,53个联系,我们可以一句一句的创建出来。但是在联系中,我们需要根据图去手动寻找之前所对应名字的ID,因此比较麻烦。但是如果实现已经准备好了csv文件,我们只要一条语句就可以运行了。

这个麻烦有两种解决方法

  • 一种是直接将name字段改为ID,这样直接看图输入就可以了。
  • 另一种就是利用程序循环,但是在这里面数据量太小不值得专门写一个程序。在实际的工作中,大规模的数据创建,这种方式也会比一个一个create/merge方便得多,因为ID可以通过编程来创建ID。

导入工作

接着进行导入,我们首先需要将这些8个CSV文件放入neo4j的bin目录下(不需要把demo2文件夹也放进去,只需要直接8个CSV文件拖进去就可以了,如果把文件夹拖进去,那么在导入的时候一定要记得指定路径)。

我们在neo4j的bin目录下运行命令行(一定要在bin目录下,而不是在neo4j文件夹下,除非bin目录也配置了环境变量)

neo4j-admin import  --mode=csv  --nodes node_direction.csv  --nodes node_post.csv  --nodes node_knowledge.csv  --relationships relationship_dir_know.csv  --relationships relationship_know_know.csv    --relationships relationship_post_dir.csv    --relationships relationship_post_know.csv      --relationships relationship_know_dir.csv  

稍微解释一下代码:
--mode=csv 表示导入的格式是CSV,其实默认也是CSV格式
--node:label xxx.csv这里xxx.csv表示导入的结点的文件,这里必须放入bin目录下,如果要在其他目录下记得指定路径名。这里的:label在我们的代码里面没有体现,这里是指标签名,如果我们CSV文件里面没有:LABEL那一列,那么我们必须在这里指定导入的这些节点数据是属于什么标签的。但是我们已经在CSV文件里面写了,这里就没必要重复写了。
--relationships:type xxx.csv 同理,xxx.csv是导入的文件名,:type是关系的类型,和label类似,同样,我们在CSV文件里面已经写了,这里就不再重复写了。

至此,导入完成后,打开neo4j服务器neo4j start,然后打开localhost:7474/browser就可以看到了。

可视化及查询

由于结点不多,我们直接输入

MATCH (n) RETURN n

全部显示。

一开始结点全都是灰色的,我们可以点击标签



来设置大小和颜色。


这是我最后的结果图


当然我们也可以手动拖动,成为刚才上面所看到的图的样子。


我们可以进行搜索人工智能的边得到人工智能的学习路线

MATCH p=()-[r:`人工智能`]->() RETURN p


也可以得到爬虫的学习路线

MATCH p=()-[r:`爬虫`]->() RETURN p

学Python基础之前需要做什么

MATCH p=(n:知识)<-[]-() where n.name="Python基础" return p

学Python基础之后又需要学什么

MATCH p=(n:知识)-[]->() where n.name="Python基础" return p

总结:
这次作业其实也是取巧了,没有直接用Cypher语句实现,而是先构造csv文件后用neo4j import导入。Cypher语句的代码几乎没有。但是掌握neo4j import导入方法还是比较重要的。

关于neo4j import有什问题可以在下面评论,之前搞过一段时间,可能有点经验,或者网上博客挺多的,基本上都能查到相关的解决方法。

这个是自己课后记录一下关于neo4j的一些知识点:
https://www.jianshu.com/p/6610129bbfd1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容