# KGQA_SHZ
#### 简介
基于Neo4j的《水浒传》人物关系可视化及问答系统,该项目可以作为毕业设计,主要用涉及领域包括知识图谱、自然语言处理等知识。运用到的技术架构包括中文自然语言处理技术LTP模型、Python Flask框架、Neo4j图数据库。raw_data是人工合成的数据,spider中的数据是爬取的人物图片数据和人物基本信息数据。
#### 一.项目背景
近年来网络文学蓬勃发展,文学作品的数量和题材层出不穷。一部文学作品的字数通常是超过百万的,这就使得用户仅仅通过自己阅读是很难准确地捕捉到作品中具体的人物关系。如果使用传统的搜索引擎对文学作品中的人物关系进行查询,得到的结果往往都是相对应的大量文字片段的网页链接,无法得到简洁准确的答案。由此,能够弥补上述缺陷的问答系统逐渐受到广泛关注,它不仅允许用户以自然语言的方式进行提问,还能够实现针对用户提问返回相应简洁准确答案句的功能,在一定程度上提高了用户的查询效率。此外,关于中文问答系统的研究还不够成熟,中文语法及语义的复杂性给问答系统研究带来了不小挑战,因此,针对中文的语句相似度研究、文本检索、知识推理等问答系统的应用前景广阔,且有很大发展空间。
#### 二.项目介绍
本项目是对中文问答系统的探索,针对文学作品人物关系复杂,无法进行快速准确查询的问题,本项目提出基于水浒传的人物关系可视化及问答系统,并进行了实例验证,采用分词、句法分析等自然语言处理技术,研究了文学作品水浒传中人物关系,实现了根据用户输入的人物名称快速返回其人物关系的功能,项目功能包括三个主要部分:人物关系检索、人物关系全貌展示和人物关系问答。对于用户提交的问题,首先利用哈工大的语言技术处理平台LTP进行分词,提取关键词;其次,对于已经预处理的数据建立图数据库,然后用分词提取出来的关键字进行Neo4j图数据库的查询,匹配相关信息,利用Python Flask建立前端展示页面,建立知识图谱展示。目前,自然语言处理应用于各个领域,如教育、医疗、司法、金融等等。本项目立足经典著作《水浒传》,爬取水浒传人物数据,构建起一个包含7类实体的水浒传人物关系知识图谱,以及关于水浒传人物关系的问答系统。本项目主要包含以下内容:
- 基于neo4j的水浒传人物关系检索查询。
- 基于neo4j的水浒传人物关系全貌查询。
- 基于neo4j的水浒传人物关系问答系统。
#### 三.项目结构
本项目主要分为以下几个模块:
1. spider模块爬取人物资料,包括人物图片images,人物基本信息(别名、性别、籍贯等)json,生成data.json文件。
2. raw_data文件夹是存放数据处理后的三元组文件。
3. neo_db模块创建知识图谱,建立图数据库以及进行知识图谱的查询。
4. KGQA模块是问答系统模块,主要进行分词、词性标注、命名实体识别。
5. templates模块是HTML页面模块,包括欢迎界面、搜索人物关系页面、人物关系全貌页面人物关系问答页面。
6. static模块存放css和js,是页面样式和效果文件。
7. app.py是整个系统的主入口。
#### 四.总体功能设计
#### 五.项目流程
#### 六.成果展示
首页
人物关系检索
人物关系全貌
人物关系问答
#### 七.部署步骤
* 0.安装所需的库 执行pip install -r requirement.txt<br>
* 1.先下载好neo4j图数据库,并配好环境。修改neo_db目录下的配置文件config.py,设置图数据库的账号和密码。在cmd中运行neo4j.bat console命令。<br>
* 2.切换到neo_db目录下,执行python create_graph.py 建立知识图谱<br>
* 3.下载好ltp_3.4.0 模型,[LTP下载](https://pan.baidu.com/s/1rRvIThO6ej0pyvFbvFSWpQ?pwd=cpvn),提取码:cpvn。注意放到根目录下,如:D:\ltp_data_v3.4.0。[ltp简介](http://ltp.ai/)<br>
* 4.在KGQA目录下,修改ltp.py里的ltp模型文件的存放目录<br>
* 5.运行python app.py,浏览器打开localhost:5000即可查看<br>
#### 八.说明
文件介绍:<br>
1) app.py是整个系统的主入口<br>
2) templates文件夹是HTML的页面<br>
|-index.html 首页界面<br>
|-search.html 人物关系检索页面<br>
|-all_relation.html 人物关系全貌页面<br>
|-KGQA.html 人物关系问答页面<br>
3) static文件夹存放css和js,是页面的样式和效果的文件<br>
4) raw_data文件夹是存在数据处理后的三元组文件<br>
5) neo_db文件夹是知识图谱构建模块<br>
|-config.py 配置参数<br>
|-create_graph.py 创建知识图谱,图数据库的建立<br>
|-query_graph.py 知识图谱的查询<br>
6) KGQA文件夹是问答系统模块<br>
|-ltp.py 分词、词性标注、命名实体识别<br>
7) spider文件夹是爬虫模块<br>
|- get_*.py 是之前爬取人物资料的代码,已经产生好images和json 可以不用再执行<br>
|-show_profile.py 是调用人物资料和图谱展示在前端的代码。<br>
运行环境介绍:<br>
1) windows10 系统、pycharm professional 2021.3.3、python3.6、neo4j-community-4.4.11、ltp_3.4.0
2) python库的版本:Flask 1.0 、py2neo 2020.1.0、pyltp 0.2.1、bs4 0.0.0
3) 关于neo4j的安装,可以参考[Neo4j安装教程](https://pan.baidu.com/s/1aBV92N4-tSCvaSo3MZk6fw?pwd=g742),提取码:g742,PS:本人用的JDK是jdk11
#### 九.不足与改进
本项目的局限性与改进方法如下:
1) relation.txt中存储的是人物关系数据,人物关系数据的大小影响着问答系统最终展示给用户图谱的大小,人物关系数据越多,生成的图谱就越复杂,人物关系越少,生成的实体关系就越少。其次,该数据文件是由人工合成的,数据量较少,该项目的一个可拓展的方向就是如何从网页爬取人物关系数据,并且生成一个三元组文件。
2) 关于问答页面右侧的人物信息展示,是依照relation.txt的数据集中的第一列人名进行网络爬取,爬取对应人名的图片及简介,该做法会导致爬取的人物信息不是水浒传人物信息,导致结果不匹配,这是本项目的第二个局限性,如何筛选出水浒传人物图片与信息是该项目可改进的方向。
3) 问答系统中,输入问句进行分词、句法分析会出现分词结果不准确,切分词错乱,导致无法在数据库中找到创建的图谱,也是本项目的一个局限性,改进方法是对输入的不同类型的句子利用多种切分方式进行分词。
#### 十.参考资料
1. [基于知识图谱的《红楼梦人物关系可视化及问答系统》],本项目是对该项目的改编。
2. [中文开放知识图谱](http://openkg.cn/home),这里可以获取知识图谱相关数据集。
---
龙年行大运
- 粉丝: 1385
- 资源: 3960
最新资源
- 博途S7-1200主站与S7-200从站实现RS485通讯程序 S7-200可以当作一个仪表
- C#、C++分别开发的OPC DA CLIENT软件. 1、枚举服务器名称; 2、连接服务器以后枚举出TAG; 3、根据TAG名称自动读取服务器数据; 4、图片内有OPC SERVER和CLIENT实
- python-workspace.zip.005
- 龙门上下料样本程序,四轴 用台达AS228T和台达触摸屏编写 注意软件是用台达新款软件ISPSOFT ,借鉴价值高,程序有注释
- 一款window下的串口监视抓包工具
- 欧姆龙CP1H与3台力士乐VFC-x610变频器通讯程序 功能:原创程序,可直接用于现场程序 欧姆龙CP1H的CIF11通讯板,实现对3台力士乐VFC-x610变频器 设定频率,控制正反转,读取实际
- dp111113333
- CV-密集人群图像数据集(5800张图片).rar
- 福特汽车主观评价规范,性能开发参考,英文原版直译,评价条目、规则描述非常细致 包含平顺舒适性,转向,操稳,NVH,制动,加速感,驾驶性等等性能,并详细描述了评价的准备工作 评价条目细分至第四级,共
- 三菱FX3S两轴标准程序,XZ两轴,包含轴点动,回零,相对与绝对定位,只要弄明白这个程序,就可以非常了解整个项目的程序如何去编写,从哪里开始下手,可提供程序问题解答,程序流程清晰明了,注释完整
- MATLAB代码:考虑P2G与碳捕集机组的多能微网低碳经济调度 关键词:碳交易 阶梯碳交易 碳捕集 多能微网 低碳调度 仿真平台:MATLAB+yalmip+cplex 主要内容:代码主要做的是一个
- 本程序采用matlab编写,主要是实现电流注入型牛拉法 除此之外,本人还编写了很多种关于潮流计算的程序,主要有牛拉法,前推回代法,以还有相和三相潮流计算程序
- 智能门锁架构图,供大家参考
- 三菱FX3U六轴标准程序,程序包含本体3轴控制,扩展3个1PG定位模块,一共六轴 程序有轴点动控制,回零控制,相对定位,绝对定位 另有气缸数个,一个大是DD马达控制的转盘,整个是转盘多工位流水作业
- 批量登录到远程Linux服务器检查服务器时间差的shell
- MATLAB电动车七自由度整车模型 MATLAB Simulink电动车转弯制动abs模型asr转弯制动防抱死abs模型+模糊控制算法+七自由度整车模型+纵向运动+侧向运动+横摆运动+四轮魔术公式+四
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈