学习教程:
https://www.jiqizhixin.com/articles/2018-06-20-4
https://github.com/IrvingBei/simple_movie_qa_with_KG
https://blog.csdn.net/xyz1584172808/article/details/89319129
300行python代码从零开始构建基于知识图谱的电影问答系统-目录
学习笔记
系统是用python实现的,整个搭建过程要自己先跑一遍
网络爬虫
自然语言处理
知识图谱
图数据库
机器学习
sklearn
查询答案
在知道用户想问啥的时候,我们就可以根据用户的要求来查询,得到答案返回,这部分主要是如何对图数据库进行操作。
一.准备工作
1.实验环境的搭建
(1)python环境的安装
确实是出错了
14:26:23 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/movies_questions
$
ls
requirements.txt
14:28:04 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/movies_questions
$
pip install -r requirements.txt
ERROR: Invalid requirement: '<!DOCTYPE html>' (from line 7 of requirements.txt)
14:28:14 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/movies_questions
$
所以就先去安装webpy库
14:28:14 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/movies_questions
$
pip install web.py
WARNING: Keyring is skipped due to an exception: Failed to unlock the collection!
Collecting web.py
Downloading web.py-0.62.tar.gz (623 kB)
|████████████████████████████████| 623 kB 8.3 kB/s
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Collecting cheroot
Downloading cheroot-8.4.8-py2.py3-none-any.whl (93 kB)
|████████████████████████████████| 93 kB 13 kB/s
Collecting jaraco.functools
Downloading jaraco.functools-3.0.1-py3-none-any.whl (6.7 kB)
Requirement already satisfied: more-itertools>=2.6 in /data/anaconda3/lib/python3.7/site-packages (from cheroot->web.py) (8.2.0)
Requirement already satisfied: six>=1.11.0 in /data/anaconda3/lib/python3.7/site-packages (from cheroot->web.py) (1.14.0)
Building wheels for collected packages: web.py
Building wheel for web.py (PEP 517) ... done
Created wheel for web.py: filename=web.py-0.62-py3-none-any.whl size=78567 sha256=0f35123e7c3bcd468fa29770894ee2c6118069810f4d6561028bfbe197c25669
Stored in directory: /home/jiarongf/.cache/pip/wheels/17/6d/f8/667591be4296666a2c5a3ed45bf15c044c26b85804217db0c2
Successfully built web.py
Installing collected packages: jaraco.functools, cheroot, web.py
Successfully installed cheroot-8.4.8 jaraco.functools-3.0.1 web.py-0.62
14:33:25 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/movies_questions
$
因为这里作者说需要python2,可能是因为服务器上有2所以安装成功了,,,服务器是27
执行中才发现其实那个作者说的那个pip的文件其实就是点开那个依赖库显示的内容,然后把他们几行复制下;来,写到一个txt文件中,命名为Depandency_library.txt
再去执行
那个是pip网络的问题可以加一个豆瓣的镜像
mkdir ~/.pip
cd ~/.pip
touch pip.conf
vi pip.conf
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host = pypi.douban.com
cat pip.conf
接着在去刚刚的目录中重新执行pip install
速度果然快了很多但还是报错了,
报错“:
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for pandas
但是就是还在安装,一会再接着看看吧,时间漫长的。
报错实在是太多了,还是把依赖库一个一个安一下吧
pip install pandas成功
pip install py2neo==4.2.0成功
pip install jieba==0.39成功
pip install scikit_learn==0.20.3
那么查一下怎么安不上:教程:scikit-learn安装步骤_Work hard-CSDN博客
这里说前提条件是:
pip list 查看python已经安装的库
但是其中的库都满足条件了,
果然还需要安装很多依赖库:教程:scikit-learn安装方法详解_许野平的博客-CSDN博客
但是检查一遍所有安装的库发现,也有这个包matplotlib
所以重新安装一下
15:18:33 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/moviestions
$
pip3 install -U scikit-learn
Looking in indexes: http://pypi.douban.com/simple
WARNING: Keyring is skipped due to an exception: Failed to unlock thlection!
Collecting scikit-learn
Downloading http://pypi.doubanio.com/packages/f4/cb/64623369f348e9ff898a57ac7c91ed4921f228e9726546614d63ccb/scikit_learn-0.23.2-cp37-cmanylinux1_x86_64.whl (6.8 MB)
|████████████████████████████████| 6.8 MB 787 kB/s
Requirement already satisfied, skipping upgrade: numpy>=1.13.3 in /dnaconda3/lib/python3.7/site-packages (from scikit-learn) (1.19.1)
Requirement already satisfied, skipping upgrade: threadpoolctl>=2.0./data/anaconda3/lib/python3.7/site-packages (from scikit-learn) (2.1
Requirement already satisfied, skipping upgrade: joblib>=0.11 in /daaconda3/lib/python3.7/site-packages (from scikit-learn) (0.14.1)
Requirement already satisfied, skipping upgrade: scipy>=0.19.1 in /dnaconda3/lib/python3.7/site-packages (from scikit-learn) (1.5.2)
Installing collected packages: scikit-learn
Attempting uninstall: scikit-learn
Found existing installation: scikit-learn 0.20.3
Uninstalling scikit-learn-0.20.3:
Successfully uninstalled scikit-learn-0.20.3
Successfully installed scikit-learn-0.23.2
15:25:29 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/moviestions
$
好了好了终于把环境搭好了
(2)知识图谱基本介绍
知识图谱有了一个初步的印象,其实质就是利用三元组来表示实体的一些信息,而关于这些信息的存储,一种是基于RDF的存储;另一种是基于图数据库的存储。而这里采用的是图数据库存储,主要是图数据库较简单,还直观,选择了图数据库neo4j。
关于这个数据库的安装,请参照关于ubuntu下neo4j的安装与使用不管你是在win下安装,还是linux下安装都是可以的,因为这些坑我都踩过了,
好了,既然要安装这个图数据库,,那就先跳转到那个链接去下载
图数据库neo4j
https://pan.baidu.com/s/1jIDdhbw
下载后传到服务器上
15:25:29 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/moviestions
$
ls
Dependency_library.txt neo4j-community-3.0.7-unix.tar.gz
15:46:08 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/movies_questions
$
却发现那个本地打不开,,搜索之后说缺少组件,安装一下windows10系统添加IIS组件-百度经验 (baidu.com)
本地http://localhost打不开怎么办-百度经验 (baidu.com)
Windows10如何安装IIS(互联网信息服务)-百度经验 (baidu.com)
locals打不开,然后就各种试,
windows10系统安装IIS信息服务的方法-系统城 (xitongcheng.com)
这个比较好,
这几个都是互补的要联合看。
win10 配置(开启) iis-百度经验 (baidu.com)
win7新建IIS站点提示无法启动world wide web publishing服务怎么办-系统城 (xitongcheng.com)
IIS网站部署步骤以及常见异常解决方案 - Merryan - 博客园 (cnblogs.com)
总结
1.首先在控制面板的程序的启用或关闭windows功能那里已经把所有的都打开了,
控制面板--程序---启用或关闭windows功能--
这些两个图片上红色框里面的小的文件都勾上,,然后确定,等待一段时间,等全部都装好了,,,关闭)
2.我的电脑--右键--管理--
然后点网站
看一下这个是不是已启动,如果是已启动表明可以登录localhost,,浏览器输入localhost就可打开
但是其中有很多错误,
比如(1)
这俩有问题,,就去搜,,发现只要启动word wide web发布服务就可,,还是右键我的电脑--管理---服务
右键启动,,如果失败,可能报错是依赖服务或组无法启动。报错说依赖服务或组无法启动,,那就去看看什么依赖服务,,鼠标放在world wide web发布服务右键--属性--依存关系---发现是HTTP service 和windows process activate service这两个,,那这两个打开就行(其实只需要打开后面这个就行)
也就是上图,,右键启动,如果这个无法启动,报错说终结点映射器中没有更多的终结点可用,,那么此时删除电脑上的金山毒霸,重启机子,再打开看,就可以启动成功了,然后再去看world wide web发布服务也是打开了,,设置一个启动类型是自动,就可以自动打开(右键--启动类型--自动),接着再去看那个默认站点,发现也是可用了,然后打开浏览器,输入localhost可以打开了,,,可能我表述的不清晰,,这一块这些问题我都遇到过了,都是慢慢解决的,试错的时间大概是四五个小时吧,是菜鸡,,所以我写的有什么不明白的可以直接问~
好了这个东西终于搞好了,,接着安装neo4j
但是发现还是
IIS网站部署步骤以及常见异常解决方案 - Merryan - 博客园 (cnblogs.com)
那我也重新按这个教程添加一个网站
还是不行,发现了官网Knowledge Base - Neo4j Graph Database Platform
查看jdk
neo4j 开启远程web访问7474端口 以 用浏览器打开远程neo4j的web控制台界面_weixin_33856370的博客-CSDN博客
按1去改,首先去掉#,开放防火墙端口7474入站端口、7687出站端口
Win10系统如何在防火墙里开放端口-百度经验 (baidu.com)
neo4j从安装到远程访问一气呵成_周周的专栏-CSDN博客
Neo4j在linux环境下的安装_hdd2803的博客-CSDN博客
直接让代老师下载好了,登录以后改密码
来认识一下这个界面吧
教程:Neo4j在linux环境下的安装_hdd2803的博客-CSDN博客
python的开发环境有了,知识图谱的存储环境有了,就差数据了
2、实验数据
完整跑一遍code.py代码发现报错了
ls
code.py preprocess_data.py query.py question_template.py templates
data __pycache__ question_classification.py static test.py
18:23:26 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/movies_questions/simple_movie_qa_with_KG-master/movie_QA_with_KQ
$
python code.py 127.0.0.1:1234
Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Dumping model to file cache /tmp/jieba.cache
Dump cache file failed.
Traceback (most recent call last):
File "/data1/jiarongf/anaconda3/lib/python3.7/site-packages/jieba/__init__.py", line 152, in initialize
_replace_file(fpath, cache_file)
PermissionError: [Errno 1] Operation not permitted: '/tmp/tmp1rgl8suk' -> '/tmp/jieba.cache'
Loading model cost 0.619 seconds.
Prefix dict has been built succesfully.
create question object finish!
create question object finish!
http://127.0.0.1:1234/
解决错误:PermissionError: [Errno 1] Operation not permitted: '/tmp/tmpg255ml7f' -> '/tmp/jieba.cache' - fnangle - 博客园 (cnblogs.com)
原因:
是由于jieba在系统根目录下创建缓存文件/temp/jieba.cache来存储模型,但用户权限不够。
一般是在服务器上,因为不是root权限跑代码,所以出现此错误
然后改成自己的目录一定记得加引号,可以了,
18:43:12 jiarongf@172.16.10.223:/data1/jiarongf/Knowledge_Graph/movies_questions/simple_movie_qa_with_KG-master/movie_QA_with_KQ
$
python code.py 127.0.0.1:1234
Building prefix dict from the default dictionary ...
Dumping model to file cache /data1/jiarongf/Knowledge_Graph/jieba.cache
Loading model cost 0.604 seconds.
Prefix dict has been built succesfully.
create question object finish!
create question object finish!
http://127.0.0.1:1234/
但是这个网址还是打不开
然后隔了一天才知道,原来是账号密码已经改了,,,然后隔了一天得知,这个网站要改成自己服务器的,这样就可以直接登录了,