诗文知识图谱问答

项目概述

诗文知识图谱问答项目旨在构建一个基于中文古诗文数据的知识图谱平台,通过Neo4j图数据库高效组织诗人、诗名、地点、意象等多维度知识节点及其关系,辅以智能问答功能,实现对诗文知识的结构化管理和自然语言交互查询。该平台不仅方便用户进行诗文知识的浏览和深度挖掘,还利用大语言模型提升问答交互的智能化水平,极大增强用户体验和知识获取效率。

核心价值体现在:

  • 将古诗文知识转化为图谱结构,支持多维度、多层次数据关联分析;
  • 通过智能问答接口,降低用户查询门槛,实现自然语言的精准检索与知识推理;
  • 提供完善的用户管理体系,保障数据安全和个性化服务;
  • 采用Django框架构建全栈应用,兼顾数据处理、业务逻辑和前端展示,实现高效协同。

本项目主要解决诗文知识分散、检索困难、难以实现复杂关系查询和智能交互等问题,目标用户群涵盖古典文学研究者、教育工作者、学生及广大诗词爱好者,助力诗文知识的数字化传承与普及。

技术架构

整体架构设计

项目采用典型的Django MVC架构,分为数据导入层、业务逻辑层、用户认证层和前端展示层四大模块:

  • 数据导入层(datas)
    负责解析Excel格式的结构化诗文数据,并批量导入Neo4j图数据库,构建节点及其关系,同时更新节点属性,为图谱数据提供坚实基础。
  • 业务逻辑层(myneo4j)
    基于Neo4j图数据库实现知识图谱的查询、管理与展示,集成OpenAI大语言模型接口,支持智能问答功能,后端通过Django ORM管理问答及关系频次等业务数据。
  • 用户认证层(accounts)
    管理用户注册、登录、权限认证及个人信息维护,采用Django内置认证框架自定义扩展,确保系统安全与用户体验。
  • 前端展示层(templates)
    利用Django模板语言结合Bootstrap响应式框架,构建用户交互界面,涵盖图谱查询、智能问答、用户认证及个人中心等功能页面。

项目整体架构图如下:

+-------------------+
|   前端展示层      |  <-- Django模板 + Bootstrap
+-------------------+
          ↑
          |
+-------------------+
|  业务逻辑层       |  <-- Django Views + Neo4j + OpenAI API
+-------------------+
          ↑
          |
+-------------------+
|  数据导入层       |  <-- Python脚本 + pandas + py2neo
+-------------------+
          |
+-------------------+
|  Neo4j图数据库    |
+-------------------+
          ↑
          |
+-------------------+
|  用户认证层       |  <-- Django Auth + ORM
+-------------------+

主要技术栈

  • 后端框架:Python 3 + Django
  • 图数据库:Neo4j,使用py2neo驱动进行交互
  • 数据处理:pandas(Excel数据解析)
  • 自然语言处理:jieba分词,OpenAI GPT接口集成
  • 前端框架:HTML + Django模板语言 + Bootstrap + Material Design图标
  • 用户认证:Django内置认证系统扩展
  • 开发工具:PyCharm(.idea目录),虚拟环境(.venv)

模块间的关系和交互

  • datas模块myneo4j模块提供基础图谱数据,构建和维护Neo4j数据库节点与关系。
  • myneo4j模块依托Neo4j数据,实现图谱的查询和智能问答功能,服务于前端展示层。
  • accounts模块提供用户身份认证,支持myneo4j模块问答数据与用户关联,保障权限控制。
  • templates模块作为前端视图,配合myneo4j和accounts模块的视图逻辑,实现动态页面渲染和用户交互。
  • 各模块通过Django的URL路由和视图函数紧密集成,形成完整服务链路。

功能模块

1. 数据导入模块(datas)

  • 功能介绍
  • 通过解析Excel文件导入诗文相关的节点(如诗人、诗名、地点、意象)和它们之间的多种关系。
  • 为已有节点批量添加或更新详细属性。
  • 支持批处理多个Excel文件,实现数据的批量初始化和维护。
  • 模块协作:为myneo4j模块提供可靠的图数据库基础数据,保证问答和查询的准确性。

2. 知识图谱与智能问答模块(myneo4j)

  • 功能介绍
  • 定义图谱节点、关系频次及问答数据模型。
  • 实现基于Neo4j的节点查询、关系遍历和数据转换。
  • 集成OpenAI GPT接口,支持自然语言问答,提升用户交互体验。
  • 提供图谱数据的前端展示接口和视图逻辑处理。
  • 管理问答历史及用户相关数据。
  • 模块协作:依赖datas模块提供的图数据库数据,调用accounts模块用户身份进行问答数据关联,向templates模块输出查询结果和问答内容。

3. 用户认证与管理模块(accounts)

  • 功能介绍
  • 用户的注册、登录、注销及密码修改。
  • 扩展用户模型,支持手机号及明文密码字段(用于管理)。
  • 表单验证与安全加密,保障账户安全。
  • 管理后台用户信息展示及密码加密处理。
  • 模块协作:提供认证服务给myneo4j模块,确保问答和图谱访问的权限控制;配合templates模块实现用户界面交互。

4. 前端模板模块(templates)

  • 功能介绍
  • 统一网站基础布局(base.html),保证风格一致性。
  • 图谱查询主页面(index.html),用户输入节点关系进行知识检索。
  • 关系图谱问答页面(wenda.html),支持自然语言输入与智能回答展示。
  • 用户登录、注册、密码修改、个人信息管理等页面。
  • 模块协作:通过Django视图层调用myneo4j和accounts模块接口,动态渲染数据和处理用户请求。结合静态资源实现良好的用户体验。

模块间协作关系总结

  • 数据流:datas → Neo4j → myneo4j → templates
  • 用户身份认证:accounts ↔ myneo4j & templates
  • 智能问答服务:myneo4j调用OpenAI接口,结果输入templates展示
  • 各模块功能紧密衔接,共同构筑项目的完整业务闭环。

项目结构

xy25_neo4j_poems/
├── accounts/           # 用户认证与管理模块
│   ├── models.py       # 用户模型定义
│   ├── forms.py        # 用户表单定义
│   ├── views.py        # 用户视图逻辑
│   ├── urls.py         # 用户路由配置
│   └── admin.py        # 后台管理配置
├── datas/              # 数据导入模块
│   ├── importneo4j.py         # 节点与关系导入脚本
│   ├── importneo4j_attr.py    # 节点属性导入脚本
│   ├── attr/                  # 属性Excel文件
│   └── entity/                # 节点关系Excel文件
├── myneo4j/            # 知识图谱与智能问答模块
│   ├── models.py       # 图谱及问答数据模型
│   ├── pyneo_utils.py  # Neo4j操作工具函数
│   ├── views.py        # 业务视图逻辑
│   ├── urls.py         # 路由配置
│   └── admin.py        # 后台管理配置
├── templates/          # 前端模板视图
│   ├── base.html       # 基础布局模板
│   ├── index.html      # 图谱查询主页
│   ├── wenda.html      # 智能问答页面
│   ├── login.html      # 登录页面
│   ├── register.html   # 注册页面
│   ├── modify.html     # 密码修改页面
│   └── my_info.html    # 个人信息页面
├── static/             # 静态资源(CSS, JS, 图片等)
├── xy_neo4j/           # Django项目核心配置
│   ├── settings.py     # 项目配置文件
│   ├── urls.py         # 全局路由配置
│   ├── wsgi.py         # WSGI入口
│   └── asgi.py         # ASGI入口
├── manage.py           # Django项目管理脚本
├── .venv/              # 虚拟环境目录
├── .idea/              # IDE配置文件
└── requests.txt        # 依赖包列表
  • 关键目录说明
  • accounts/:负责用户身份认证及管理。
  • datas/:存放数据导入脚本及Excel数据文件,构建图谱数据。
  • myneo4j/:实现图数据库操作和智能问答业务逻辑。
  • templates/:前端HTML模板,实现动态界面渲染。
  • static/:存放CSS、JavaScript和图片等静态资源。
  • xy_neo4j/:Django项目核心配置文件夹。
  • manage.py:Django管理命令行工具。

部署和运行

环境要求

  • 操作系统:Linux / Windows / macOS
  • Python版本:3.8及以上
  • Neo4j数据库:4.x版本及以上,确保数据库服务正常运行
  • 依赖库:Django、py2neo、pandas、jieba、requests等(详见requests.txt)
  • OpenAI API Key:用于智能问答接口调用
  • 虚拟环境建议使用venv或virtualenv隔离

安装和配置步骤

  1. 克隆项目代码
   git clone <项目仓库地址>
   cd xy25_neo4j_poems
  1. 创建并激活Python虚拟环境
   python3 -m venv .venv
   source .venv/bin/activate   # Linux/macOS
   .venv\Scripts\activate      # Windows
  1. 安装依赖包
   pip install -r requests.txt
  1. 配置数据库连接
  • xy_neo4j/settings.py中,配置Neo4j数据库连接参数(URI、用户名、密码)。
  • 配置Django数据库(默认SQLite,亦可根据需要调整)。
  1. 导入初始数据
  • 运行datas/importneo4j.pydatas/importneo4j_attr.py导入Excel中的节点和属性数据到Neo4j。
  1. 配置OpenAI API Key
  • myneo4j/views.py或对应配置文件中填写OpenAI接口密钥。
  1. 执行数据库迁移
   python manage.py makemigrations
   python manage.py migrate
  1. 创建超级管理员账号(可选)
   python manage.py createsuperuser

启动方式

  • 运行Django开发服务器
  python manage.py runserver
  • 访问http://127.0.0.1:8000/进入项目首页界面。
  • 后台管理访问http://127.0.0.1:8000/admin/

生产环境建议使用Gunicorn、Nginx等部署方案,保证稳定性和安全。


通过以上组件的紧密配合,诗文知识图谱问答项目实现了古诗文知识的结构化存储与智能交互,满足了用户对诗文知识深度理解和便捷查询的需求,兼具技术先进性和实用价值。


如有问题请联系作者:https://qalangtao.com 。
800

图片[1]-诗文知识图谱问答
图片[2]-诗文知识图谱问答
图片[3]-诗文知识图谱问答
图片[4]-诗文知识图谱问答
图片[5]-诗文知识图谱问答
图片[6]-诗文知识图谱问答
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享