参考链接
- 安装、使用教程(知乎):https://zhuanlan.zhihu.com/p/634006024
- Git :https://github.com/chizhu/KGQA_HLM
- 注:原项目为 【 重庆邮电大学,2018 林智敏 的毕业设计 】。
- 【 感谢大佬的分享 】。
- java 的 jdk 下载地址: https://www.oracle.com/java/technologies/downloads/
环境准备
- java 的 jdk 下载地址: https://www.oracle.com/java/technologies/downloads/
- noe4j 下载链接:https://neo4j.com/download/
- 安装、使用教程(知乎):https://zhuanlan.zhihu.com/p/634006024
- 对 neo4j 进行了简单的介绍
- 并对 neo4j 的优势进行了讲解
- neo4j 激活码:在第一次打开 neo4j 的时候需要用到
命令行启动 neo4j,并使用
- cmd 中启动命令:neo4j console
- Neo4j使用-
- 浏览器打开地址:http://localhost:7474/
-
- 初始登录用户名密码:默认均为:neo4j
-
- 第一次登录的时候,需要修改密码(最低8位密码)
- 第一次登录的时候,需要修改密码(最低8位密码)
-
红楼梦项目
-
Git :https://github.com/chizhu/KGQA_HLM
-
环境安装:pip install -r requirement.py
-
修改neo_db目录下的配置文件config.py,设置图数据库的账号(neo4j)和密码(8 位密码)。
-
切换到neo_db目录下,执行python create_graph.py 建立知识图谱
-
ltp 模型下载:https://pyltp.readthedocs.io/zh-cn/latest/api.html#id2
- ltp:Language Technology Platform
- 文件夹下有很多模型,其实只需要下载一个版本中的一个压缩文件夹就行。然后解压对应的压缩包,回去对应的模型文件。
-
在KGQA目录下,修改ltp.py里的ltp模型文件的存放目录
- 模型路径如果为相对路径,模型一直加载不成功
- 需要将模型的路径改成据对路径,即可完成
-
运行python app.py,浏览器打开localhost:5000即可查看
项目架构
ltp.py 修改的密码如下
- 主要应该就是将两个模型的相对路径,改成了绝对路径
# -*- coding: utf-8 -*-
import pyltp
import os
LTP_DATA_DIR = './model/' # ltp模型目录的路径,模型的路径要改成对应的绝对路径。
def cut_words(words):
# seg_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')
seg_model_path = r'D:\python\project\knowledge_graph\KGQA_HLM-master\KGQA\model\cws.model'
segmentor = pyltp.Segmentor(seg_model_path) # 直接在创建对象时传递模型路径
words = segmentor.segment(words)
array_str = "|".join(words)
array = array_str.split("|")
segmentor.release()
return array
def words_mark(array):
# 词性标注模型路径,模型名称为`pos.model`
# pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model')
pos_model_path = r'D:\python\project\knowledge_graph\KGQA_HLM-master\KGQA\model\pos.model'
postagger = pyltp.Postagger(pos_model_path) # 直接在创建对象时传递模型路径
postags = postagger.postag(array) # 词性标注
pos_str = ' '.join(postags)
pos_array = pos_str.split(" ")
postagger.release() # 释放模型
return pos_array
def get_target_array(words):
target_pos = ['nh', 'n']
target_array = []
seg_array = cut_words(words)
pos_array = words_mark(seg_array)
for i in range(len(pos_array)):
if pos_array[i] in target_pos:
target_array.append(seg_array[i])
target_array.append(seg_array[1])
return target_array
结果展示
首页
检索人物关系
红楼梦人物关系全貌
人物关系问答
- 自己尝试过的问题如下:
- 贾宝玉的爸爸是谁?
- 贾宝玉的爸爸的爸爸的爸爸的兄弟的儿子的儿子的儿子的儿子的老婆
- 薛宝钗的老公是谁