基于知识图谱的电影问答系统的复现

目录

前言

一、安装anaconda

二、下载JDK

三、安装neo4j

四、执行项目


前言

         近期需要调研实现一个智能客服机器人的功能,第一步是复现了一个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版本过高折腾了好久)


总结

        以上就是复现代码的整个流程,没有接触过一点的人实现起来还是有一些难度的,希望能够帮助大家顺利解决问题。        

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值