毕业设计:基于知识图谱的《红楼梦》人物关系可视化

2024-02-20 19:36

本文主要是介绍毕业设计:基于知识图谱的《红楼梦》人物关系可视化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

        • 项目介绍
        • 部署步骤
        • 项目运行

项目介绍

github地址:https://github.com/chizhu/KGQA_HLM?tab=readme-ov-file

基于知识图谱的《红楼梦》人物关系可视化:应该是重庆邮电大学林智敏同学的毕业设计,在学习知识图谱的过程中参考使用。

文件树:

  1. app.py是整个系统的主入口
  2. templates文件夹是HTML的页面
    |-index.html 欢迎界面
    |-search.html 搜索人物关系页面
    |-all_relation.html 所有人物关系页面
    |-KGQA.html 人物关系问答页面
  3. static文件夹存放cssjs,是页面的样式和效果的文件
  4. raw_data文件夹是存在数据处理后的三元组文件
  5. neo_db文件夹是知识图谱构建模块
    |-config.py 配置参数
    |-create_graph.py 创建知识图谱,图数据库的建立
    |-query_graph.py 知识图谱的查询
    KGQA文件夹是问答系统模块
    |-ltp.py 分词、词性标注、命名实体识别
  6. spider文件夹是爬虫模块
    |- get_*.py 是之前爬取人物资料的代码,已经产生好imagesjson 可以不用再执行
    |-show_profile.py 是调用人物资料和图谱展示在前端的代码
部署步骤
  1. 安装所需的库 执行pip install -r requirement.txt
  2. 先下载好neo4j图数据库,并配好环境(注意neo4j需要jdk8)。修改neo_db目录下的配置文件config.py,设置图数据库的账号和密码。
    neo4j教程:neo4j下载安装最新教程 2024.02
  3. 切换到neo_db目录下,执行python create_graph.py 建立知识图谱

在这里插入图片描述

  1. 下载好ltp模型。
    ltp介绍:LTP/pyltp安装和使用教程
  2. KGQA目录下,修改ltp.py里的ltp模型文件的存放目录
LTP_DATA_DIR = 'e:/ltp_data_v3.4.0'  # ltp模型目录的路径

在这里插入图片描述

  1. 运行python app.py,浏览器打开localhost:5000即可查看
项目运行
  • 运行app.py项目

在这里插入图片描述

  • 开启探索

在这里插入图片描述

有三个主要功能,分别是人物关系可视化中的检索人物关系、红楼梦人物关系全貌和问答系统中的人物关系问答

  • 检索人物关系-林黛玉

会通过echarts可视化展示出林黛玉有关的人物关系,应用的是neo4j知识图谱。

在这里插入图片描述

  • 红楼梦人物关系全貌

展示整个红楼梦人物关系的知识图谱。

在这里插入图片描述

  • 人物关系问答

人物关系问答涉及基于ltp的实体识别NER,关系抽取和知识图谱的搜索,爬虫的部分已经提前做好,人物信息完整,但是有部分错误。

提问:贾宝玉的奶奶的儿子的妻子是谁?

[Record({'p.Name': '贾赦', 'n.Name': '贾母', 'r.relation': '儿子', 'p.cate': '贾家荣国府', 'n.cate': '史家'}), Record({'p.Name': '贾政', 'n.Name': '贾母', 'r.relation': '儿子', 'p.cate': '贾家荣国府', 'n.cate': '史家'})]
============================================================================================================        
[Record({'p.Name': '王夫人', 'n.Name': '贾政', 'r.relation': '妻', 'p.cate': '王家', 'n.cate': '贾家荣国府'})]
============================================================================================================
127.0.0.1 - - [19/Feb/2024 16:40:54] "GET /KGQA_answer?name=贾宝玉的奶奶的儿子的妻子是谁? HTTP/1.1" 200 -

在这里插入图片描述

这篇关于毕业设计:基于知识图谱的《红楼梦》人物关系可视化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/729319

相关文章

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-