目录
前言
近期需要调研实现一个智能客服机器人的功能,第一步是复现了一个demo,从安装环境开始,踩了许多坑,基本上都是版本之间不适配引起的,下面记录了全部流程。
一、安装anaconda
anaconda的安装有许多文章已经讲述过了,这里不做赘述,请注意安装的版本,这里选择的版本是conda 4.8.2,不清楚版本的可以打开anaconda prompt,输入conda -V查看版本信息。
注意安装时勾选添加路径否则后续需要手动添加。
二、下载JDK
注意JKD版本需要与neo4j版本之间保持一致,这里用的是JDK8,注意配置系统环境。
三、安装neo4j
为了与JDK的版本相适配,本文安装的neo4j版本是neo4j-community-3.5.31-windows,别忘了 配置系统环境。推荐参考博客,但是版本可能要改。
四、执行项目
项目地址链接已经放上了,大家可以具体的去看,这里主要就是复现这个项目。原博主已经讲解的很详细了,但是小白本白在实现过程中还是有许多踩坑的地方,这里再记录一下。在前面需要准备的工具已经安装完成,下面开始具体的执行步骤。
1. 打开cmd,输入conda create -n ‘虚拟环境名称’ python=3.6 ,创建虚拟指定python版本的环境,建议搭建选择3.6的版本。
2. conda activate ‘虚拟环境名称’, #进入虚拟环境,命令行最前面会出现虚拟环境的名称,这就代表已经进入了虚拟环境。
3. pip install pandas==0.20.3
pip install web.py==0.40.dev1
pip install py2neo==4.2.0
pip install jieba==0.39
pip install scikit_learn==0.20.3
执行以上命令安装依赖
4. 在VSCode中安装python插件,用来选择虚拟环境。安装之后在编辑器的右下角会显示所有的虚拟环境,点击选择目标环境即可。
5. 新建cmd终端,启动虚拟环境,不需要别的依赖的话,直接启动程序入口即可
6. 要想复现代码,启动图数据库neo4j是非常重要的一步,把代码包下载并解压,把data中的import复制到neo4j的下载文件的import中,就这是把数据导入了。启动一定要以管理员身份打开cmd,否则无法启动,输入代码neo4j.bat console启动neo4j,出现started就是成功启动了。
在控制端分别输入以下5段代码。
//导入节点 电影类型 == 注意类型转换
LOAD CSV WITH HEADERS FROM "file:///genre.csv" AS line
MERGE (p:Genre{gid:toInteger(line.gid),name:line.gname})
//导入节点 演员信息
LOAD CSV WITH HEADERS FROM 'file:///person.csv' AS line
MERGE (p:Person { pid:toInteger(line.pid),birth:line.birth,
death:line.death,name:line.name,
biography:line.biography,
birthplace:line.birthplace})
// 导入节点 电影信息
LOAD CSV WITH HEADERS FROM "file:///movie.csv" AS line
MERGE (p:Movie{mid:toInteger(line.mid),title:line.title,introduction:line.introduction,
rating:toFloat(line.rating),releasedate:line.releasedate})
// 导入关系 actedin 电影是谁参演的 1对多
LOAD CSV WITH HEADERS FROM "file:///person_to_movie.csv" AS line
match (from:Person{pid:toInteger(line.pid)}),(to:Movie{mid:toInteger(line.mid)})
merge (from)-[r:actedin{pid:toInteger(line.pid),mid:toInteger(line.mid)}]->(to)
//导入关系 电影是什么类型 == 1对多
LOAD CSV WITH HEADERS FROM "file:///movie_to_genre.csv" AS line
match (from:Movie{mid:toInteger(line.mid)}),(to:Genre{gid:toInteger(line.gid)})
merge (from)-[r:is{mid:toInteger(line.mid),gid:toInteger(line.gid)}]->(to)
7. 代码输入完成之后就生成了知识图谱了,可以看出3个节点和2个关系表都已经生成了,键入 代码match(n:Person)-[]->(m:Movie) where n.name='章子怡' return m.title,如果能够返回结果就代表数据库创建成功了。
8. 下一步就是执行入口代码python code.py 127.0.0.1:1234,不要忘记更改query.py中数据库的密码,打开网页提问即可。
如果在网页中输入问题都得不到正确回复,控制台报断言错误,检查数据库账号密码是否正确,neo4j的版本是否与JDK8匹配,如果neo4j版本较高,很有可能需要更改数据库的连接方式。(第一次下载的neo4j版本过高折腾了好久)
总结
以上就是复现代码的整个流程,没有接触过一点的人实现起来还是有一些难度的,希望能够帮助大家顺利解决问题。