阅读:69
基于知识图谱的前后端(vue3+django)分离的问答系统的设计与实现(一):总体介绍
基于知识图谱的前后端(vue3+django)分离的问答系统的设计与实现(二):前端搭建与插件配置
基于知识图谱的前后端(vue+django)分离的问答系统的设计与实现(三):前端开发
自2021毕业以来,参加了三个月警训,而现在三个月的岗位实践也即将结束。算下来已经很久没有写代码了,在此,希望复盘一下自己的研究生毕业设计,也为各位学弟学妹写毕业设计提供一个想法和思路。
一般对于软件工程专业的研究生来说,毕业设计需要一个设计和实现一个管理信息系统。区别于本科专业的系统,研究生毕业设计的系统一般地要求加入算法辅助(推荐、分类、聚类、机器学习、深度学习)。
作者从来没有参与开发过商业化的项目,能力有限,这个项目十分简单,本文将会尽可能的用到多种工具,简要提到各种概念,丰富初学者的视野。更多地是希望能给各位的毕业设计带来灵感,如果学弟学妹们能从中学到一丁点东西,那么这些文字就没有白码。
本文旨在搭建起基于知识图谱的前后端分离的问答系统的主体架构,个别部分可能不会特别详尽。本文参考了Evan-Nightly的行文结构和些许代码。
问答系统实现的方式有许多种,有问答对的,有从网络社区搜索答案的,知识图谱只是其中一种实现方式。基于知识图谱的问答系统离不开对自然语言的处理,以及知识图谱的建立。
以下是项目的架构图,在我自己的毕业设计中,是用到了分布式的部署方法。
功能架构图
技术架构图
前后端不分离
在ajax技术(异步JavaScript和XML)之前,一个网页哪怕要更新一个字,都必须要更新整个页面才行,也就是说,我们每次对网页的操作和请求,其实都重新加载了整个网页。、
举个例子,我们以画画比喻。ajax技术之前,我们是用白纸画画,如果画里局部地区画错了,整张纸丢掉再重新从头画一张;而有了ajax技术,类似于我们在ipad上画画,如果想改变画面的局部,可以利用橡皮擦把局部抹白重画。
做过java的同学都知道,java有servlet和jsp,在servlet里面可以拼接html代码,在jsp页面里面,又可以写java代码,后端将整个页面渲染后给浏览器加载,也就是说后端决定了前端长什么样子。没做过的同学可以这样理解,前后端不分离,其实就是利用后端画好一张网页,然后网页文件交给浏览器显示。
这样前后端代码写在一起,开发的时候可能方便了,但是在维护的时候,是一个头疼的问题。关键的是,这样也造成了前后端不能同时开发,拖慢开发进度。所以,为了明确开发人员的分工,提高开发效率,方便维护,前后端分离的开发模式就应运而生。
转载的一位前辈的图,帮助大家理解。
前后端分离
前端和后端分开,中间利用接口的方式来进行通信,这种开发方式有效解决了前后端同时开发的问题。前端只做界面显示和接受用户的请求或输入,后端对前端的请求进行处理,进行数据增删改查,返回给前端需要展示的数据。
ajax技术可以让页面进行局部刷新,这样当前端页面收到后端发来的数据的时候,只需要对页面中需要改变的地方做出更新即可,又提高了数据传输的效率。
前后端分离架构更方便了程序的多平台使用。后端的业务接口,可以提供给微信小程序,支付宝小程序,ios和安卓的app等一起使用。
特别是node.js的诞生,在这之前,js代码是要在浏览器才能运行的,而node.js提供了js的运行环境,甚至js这种脚本语言已经可以写后端服务了。
转载的一位前辈的图,帮助大家理解。
前端篇,主要包括以下内容:
后端篇主要包括以下内容:
前端和后端搭建好后,这部分开始进行整合。
自然语言处理主要包括命名体识别、分词和文本分类。这部分的主要内容有以下:
知识图谱的载体是图数据库,区别于结构化数据库,图数据库是非结构化的,在这个章节主要包括以下这些内容。
备注:几乎所有的操作都是用pycharm工具完成的。