Anaconda、py2neo和Neo4j搭建KG简单环境

安装Anaconda

官网下载地址

安装时不勾选Add Anaconda to my PATH environment variable因为勾选将会影响其他程序的使用

勾选Register Anaconda as my default Python 3.6

常用命令

参考

在Anaconda Prompt中输入 conda list ,可以查看已经安装的包名和版本号

创建虚拟环境conda create -n <env_name> <package_names>conda create -n KGQA python=3.5

激活环境activate <env_name> 退出deactivate

在当前环境中安装包 conda install <package_name> , 然鹅很多包都没法用conda渠道安装,还是要用pip才行。根据本项目安装了flask、py2neo、pyltp和bs4

还可以用requirement.txt文件来批量安装依赖包conda install --yes --file requirements.txt

pyltp包安装出错解决

期间报错

1
PackagesNotFoundError: The following packages are not available from current channels: - pyltp

换成 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyltp 命令进行安装 ,仍然不行, 说是找不到wheels

找到了一个py3.5版本wheels源码链接, 参看

将下载好的文件放在此时Prompt命令行对应的文件夹中,如我的是 (KGQA) C:\Users\18771 然后执行pip install pyltp-0.2.1-cp35-cp35m-win_amd64.whl 即可安装成功wheels文件

输入conda list 发现有了pyltp安装包

在Pycharm中切换解释器

在pycharm中将项目解释器切换到上面新建的环境 settings -> project interpreter -> add local -> 找到Anconda3文件夹 -> envs -> KGQA -> python.exe

图数据库neo4j的使用

对比于关系型数据库,图数据库的最大好处在于,跨表检索时不需要复杂的连接操作——而我个人的理解是,这种操作的复杂性被转移到了图数据库的最初设计中,所以知识图谱问题的本质,其实是一个数据库设计的问题,这其中涉及到我们要用什么——应用需求,存什么——概念设计,怎么存——逻辑和物理设计,怎么呈现——问答可视化

存储类型

实体(节点)——实体分类

关系(边)——关系类型

实体和关系的属性——以键值对存储

下载安装Neo4j

官网下载速度真令人崩溃

国内镜像及文档——然而好像也打不开

还好找到一个云盘链接

新建环境变量:变量名NEO4J_HOME 路径C:\Users\18771\Desktop\知识图谱\neo4j-community-3.5.5-windows\neo4j-community-3.5.5

Win+X+A快捷键以管理员身份运行命令行,切换到bin所在目录,输入neo4j.bat console 启动服务,运行端口为7474

在浏览器中打开,默认的可视乎host是bolt://localhost:7687,默认的用户是neo4j,默认的密码是:neo4j,第一次成功connect到Neo4j服务器之后,需要重置密码。

进入界面后就可以开始编写Cypher语句创建数据了

py2neo将数据导入Neo4j

Pycharm上运行起github上一个KG的demo

修改neo_db目录下的配置文件config.py,设置图数据库的账号和密码。

切换到neo_db目录下,执行python create_graph.py 建立知识图谱

此时报错

1
py2neo cannot import name 'NodeSelector'

尝试 pip install git+https://github.com/nigelsmall/py2neo.git#egg=py2neo 不行。这个github上给的解决方法是升级到v3 , 而实际上我目前的py2neo版本已经是4.3.0版本

解决:将 NodeSelector 改为 NodeMatcher

接着运行,又报错

1
FileNotFoundError: [Errno 2] No such file or directory: './raw_data/relation.txt'

因为windows父级目录是 ../

再次运行,又粗线了…

1
UnicodeDecodeError: 'gbk' codec can't decode byte 0x96 in position 15: illegal multibyte sequence

更改一下打开格式

with open("../raw_data/relation.txt") as f: 改为 with open("../raw_data/relation.txt", 'r', encoding='UTF-8') as f:

这下运行导入成功了,在localhost:7687可以看到导入的数据