【基于知识图谱的前后端(vue+django)分离的问答系统的设计与实现(一):总体介绍】

介绍

自2021毕业以来,参加了三个月警训,而现在三个月的岗位实践也即将结束。算下来已经很久没有写代码了,在此,希望复盘一下自己的研究生毕业设计,也为各位学弟学妹写毕业设计提供一个想法和思路。

一般来说,对于软件工程专业的研究生来说,毕业设计需要一个管理信息系统的设计和实现。与本科系统不同,研究生设计系统一般需要加入算法辅助(推荐、分类、聚类、机器学习、深度学习)。

作者从未参与过商业项目的开发,能力有限。这个项目非常简单。本文将尽可能多地使用工具,简单提一下各种概念,丰富初学者的视野。更希望能给你的毕业设计带来灵感,如果小学生能从中学到一点东西,那么这些话里就没有白码。

本文旨在搭建起基于知识图谱的前后端分离的问答系统的主体架构,个别部分可能不会特别详尽。本文参考了Evan-Nightly的行文结构和些许代码。

一、项目概况

有很多方法可以实现问答系统。有问题有答案,网上社区也有答案。知识图谱只是其中之一。基于知识图谱的问答系统离不开自然语言的处理和知识图谱的建立。

(一)主要结构

下面是项目的架构图。在我自己的毕业项目中,使用了分布式部署的方式。

【基于知识图谱的前后端(vue+django)分离的问答系统的设计与实现(一):总体介绍】
功能架构图

【基于知识图谱的前后端(vue+django)分离的问答系统的设计与实现(一):总体介绍】
技术架构图

  1. 前端部分。前端就是展示的部分,用户和系统交互的界面。前端界面采用基于node的vue.js来实现,这是一个渐进式的开发框架,可以按需添加前端组件。为了快速搭建简洁美观的页面,主要用到element UI 组件库,所涉及到的前端技术将在前端篇详细讲述。
  2. 后端部分。后端就是业务处理的部分,收到前端用户的请求或输入,经过处理,然后返回给用户想要的东西。使用python语言的Django框架,django框架可以提供方便快捷的后台管理模型,利于快速搭建系统。
  3. 问答系统有一个关键的部分就是自然语言处理。这里主要涉及到分词,命名体识别,文本分类等。文本分类直接关系到问答系统的准确性,这部分采用开源的rnn神经网络来实现,神经网络部分不作过多数学上的介绍(我也说不明白 ~手动狗头)。此处我将会把自己在学校的一些语料库贡献一下。
  4. 知识图谱部分采用neo4j数据库来构建。neo4j 数据库是一个有社区版和专业版的图数据库,开源版的性能已经足够强大,可以支撑最多支持 320 亿个节点、320 亿个关系和 640 亿个属性,完全满足学习的需求。
  5. 开发工具采用Pycharm。Pycharm可以开发前端页面, 也是主流的python项目开发IDE。
  6. 开发环境为win10系统,具体用到的框架和工具版本会在相应的章节提到。

(2) 前后端分离

  1. 前后端不分离
    在ajax技术(异步JavaScript和XML)之前,一个网页哪怕要更新一个字,都必须要更新整个页面才行,也就是说,我们每次对网页的操作和请求,其实都重新加载了整个网页。、
    举个例子,我们以画画比喻。ajax技术之前,我们是用白纸画画,如果画里局部地区画错了,整张纸丢掉再重新从头画一张;而有了ajax技术,类似于我们在ipad上画画,如果想改变画面的局部,可以利用橡皮擦把局部抹白重画。
    做过java的同学都知道,java有servlet和jsp,在servlet里面可以拼接html代码,在jsp页面里面,又可以写java代码,后端将整个页面渲染后给浏览器加载,也就是说后端决定了前端长什么样子。没做过的同学可以这样理解,前后端不分离,其实就是利用后端画好一张网页,然后网页文件交给浏览器显示。
    这样前端和后端代码一起写,在开发的时候可能比较方便,但是在维护的时候就很头疼了。关键是这也导致前后端无法同时开发,拖慢了开发进度。因此,为了明确开发人员之间的分工,提高开发效率,方便维护,前后端分离的开发模式应运而生。
    Alt
    转载了一位前辈的图,帮助大家理解。
  2. 前后分离
    前后端分离,中间使用接口进行通信。这种开发方式有效地解决了前后端同时开发的问题。前端只显示界面,接受用户的请求或输入,而后端处理前端的请求,对数据进行增删改查,返回数据供前端显示。
    ajax技术可以让页面进行局部刷新,这样当前端页面收到后端发来的数据的时候,只需要对页面中需要改变的地方做出更新即可,又提高了数据传输的效率。
    前后端分离架构更方便了程序的多平台使用。后端的业务接口,可以提供给微信小程序,支付宝小程序,ios和安卓的app等一起使用。
    特别是node.js的诞生,在这之前,js代码是要在浏览器才能运行的,而node.js提供了js的运行环境,甚至js这种脚本语言已经可以写后端服务了。
    【基于知识图谱的前后端(vue+django)分离的问答系统的设计与实现(一):总体介绍】
    转载了一位前辈的图,帮助大家理解。

2. 各章概述

(1) 前端

前端主要包括以下内容:

  • vue.js 的介绍
  • vue.js的环境安装与部署
  • vue项目的创建
  • vue项目结构与文件的分析
  • vue项目中常用组件的使用,例如Vuex,router,axios,store,element ui等
  • 一步一步设计和构建一个简单的前端页面
  • 部署和打包前端应用,nginx
    【基于知识图谱的前后端(vue+django)分离的问答系统的设计与实现(一):总体介绍】
    问答系统主界面搭建

(2) 后端

后端主要包括以下内容:

  • Django框架的介绍
  • Python环境,Anaconda的应用
  • Django项目的结构,配置文件分析
  • 搭建Django项目,开启服务
  • Django项目的常用配置,数据库,服务等
  • 利用django的后台管理模板自动生成后台管理页面
  • 后端主要写django框架,和前端的交互具体在前后端结合篇章里写。
    【基于知识图谱的前后端(vue+django)分离的问答系统的设计与实现(一):总体介绍】
    【基于知识图谱的前后端(vue+django)分离的问答系统的设计与实现(一):总体介绍】
    自动生成后台用户管理界面

(3) 前后端整合

前后端搭建好后,这部分就开始整合了。

  • 前后端接口对接
  • 解决前后端分离导致的跨域问题
  • axios请求发送与响应
  • json数据
  • 负载均衡的简单使用

(4) 自然语言处理

自然语言处理主要包括命名身体识别、分词和文本分类。本部分主要内容如下:

  • jieba分词的使用
  • 使用jieba分词建立自定义分词库
  • 构建实体字典
  • tensorflow的使用
  • rnn神经网络(用于文本分类)
  • 如何将训练好的模型部署到项目中
    这里是所有基于应用程序的工具,或由其他人编写并用于应用程序的代码。

(5) 知识图谱

知识图谱的载体是图数据库。与结构化数据库不同,图数据库是非结构化的。本章主要包括以下内容。

  • 图数据库简介
  • neo4j数据的安装与应用
  • 如何利用docker使用neo4j数据库
  • 如何利用python链接neo4j数据库
  • 构建简单的知识图谱
  • 从知识图谱中提取知识

备注:几乎所有的操作都是用pycharm工具完成的。

版权声明:本文为博主面向狗头编程原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/weixin_42318092/article/details/122956651

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年2月23日 下午12:08
下一篇 2022年2月23日 下午12:32

相关推荐