1、2023.4电脑编程技巧与维护1概述平台前端使用Vue、Bootstrap、Quasar,后端使用NestJS框架搭配MongoDB数据库,结合Python的爬虫技术实现了对高考大数据的实时爬取、数据逻辑处理及数据的可视化展示,从而实现了新高考政策形势下志愿填报的辅助决策。利用Python语言,结合分布式爬虫框架Scrapy,对各大高考数据网站进行源码分析,从而实现对高考大数 据 进 行 分 布 式 爬 取。利 用Python大 数 据 处 理 技术Numpy对获取的数据进行去杂、优化,并将其转换为MondoDB数据库所支持的数据格式。最后利用Pymongo技术将数据存入非关系型数据库Mong
2、oDB,以备后续使用。NestJS框架是一款高效可伸缩的开源服务端框架,其核心思想是建立一个层与层直接耦合度小、抽象化高的架构体系,其灵感多来自Angular,与JavaSpring框架有着异曲同工之妙。其向人们展示了完整且结构良好的文档,允许开发人员以特定方式使用通用工具和代码来消除显式配置的需要。在兴趣测评模块中,通过用户填写设置的调查问卷,系统自动生成适合的专业。在这一部分的匹配算法模型中,研究基于深度学习的文本匹配算法,基于残差增强模块和简单注意力机制的文本匹配框架,保留文本的低层传播特征,增强网络对于文本特征信息的抽取。针对文本编码后的特征,采用简单注意力机制实现文本之间的特征对齐。
3、利用文本相似度匹配算法,设计一个偏好权重因子a,通过该偏好权重因子解决由偏好因素引发的相似度计算偏差问题。在非结构化文本的匹配计算中,先采用Word2vec进行词向量的训练,然后通过双 向 循 环 门 单 元 再 次 训 练 词 向 量 语 义 信 息,解 决Word2vec对于词语顺序不敏感且无法利用词性关联信息等问题。通过加入Attention机制,提高关键词的权重。通过BERT预训练模型建模答案选择任务,并采用基于特征和基于微调这两种策略实现。在基于特征的方法中利用预训练BERT模型获取上下文词向量,提出将自注意力加权向量与双向注意力加权向量进行比较聚合,得到问答对的匹配分值。在基于微调
4、的方法中通过多视图长短期记忆(MVLSTM)扩展BERT模型,使问答对之间能够直接交互,充分获取与句子匹配的语义信息。2系统功能分析与设计2.1开发语句及工具平台使用超文本标记语言(HTML)、层叠样式表(CSS)、JavaScript、Python和NestJS,其前端主要采用Vue、Bootstrap框架搭建,结合Echarts技术实现数据可视化等;其后端使用NestJS框架搭建,负责进行数据处理与数据分析;对高考数据采用基于Bson存储的MongoDB数据库进行存储,显著提高了查询速度。平台的开发工具包括VsCode、Pycharm和Xshell.2.2功能分析该平台功能模块可分为院校介
5、绍、专业介绍、兴趣测评、报考时间轴、资讯新闻,功能架构如图1所示。院校介绍模块包含了所有院校的官网、院校全景图、招生政策、毕业生流向、生源地分布、宣传视频、开设专业、院校所在地、校友论坛等信息。专业介绍模块包含了12个学科门类、92个专业作者简介:徐沛玉(2002),女,本科,研究方向为软件开发。基于 NestJS 的新高考志愿填报决策平台徐沛玉(曲阜师范大学网络空间安全学院,山东 曲阜273165)摘要:提出并设计了一个基于 NestJS 的新高考政策形势下志愿填报辅助决策平台。该平台主要功能为:院校介绍、专业介绍、兴趣测评、报考时间轴、相关资讯新闻。该平台后端使用基于 NodeIS的 Ne
6、stJS 框架,结合 MongoDB 数据库进行数据处理和存储,并建立匹配度算法模型,在平台前端进行数据的可视化展示。关键词:NestJS 框架;数据可视化;匹配算法图1功能架构功能院校介绍专业介绍兴趣测评报考时间轴资讯新闻10DOI:10.16184/prg.2023.04.0032023.4电脑编程技巧与维护类、740种专业介绍、培养目标、报考要求、核心课程、主干学科、修业年限及授予学位条件等。在兴趣测评模块中用户根据自己的兴趣选择系统的题目选项,由系统自动匹配合适的专业,为学生的专业选择提供依据。在报考时间轴模块中展示了志愿填报的关键时间节点,以便在不同的时间给予用户不同的提醒。资讯新闻
7、模块展示最新的志愿填报政策、专家分析视频等。2.3功能设计平台的数据均通过Python的爬虫技术从各大数据开源网站爬取,并通过部署于阿里云服务器的定时脚本每天定时爬取数据,使数据时刻保持在最新的状态。NestJS框架分3层,分别为Module层、Controller层、Service层。其中,Module层负责定义模块,做好NestJS框架内部的数据传输;Controller层平台是前后端对接模块,里面封装了大量的接口,平台前端通过访问后端Controller定义好的接口才能获取数据;Service层是数据处理层,是整个平台后端的核心,所有的算法、数据处理都在此层完成,会对爬取的数据进行数据清
8、洗及处理,并通过Module层传给Controller层,最后通过Controller层传递给平台前端,以便进行可视化展示。对于兴趣测评中使用的匹配算法,根据调查、分析,选择具有代表性的且通过行为、心理趋向可以反应出用户某方面天赋、感性理性倾向的选项,对于此选项赋予不同的权重。同时,为每个专业建立专业知识图谱,并阐述对应各专业所需的能力。将答案与专业图谱进行特征匹配,推荐适合用户的专业,将用户素质以雷达图的形式展示出来,不仅使用户直观认识并感受自身特点,还为其正确选择专业提供科学的指导。相较于使用深度学习算法,使用赋予选项权重的方法进行相似度匹配,不但速度更快,而且准确性更高、逻辑简单、科学易
9、懂。2.4系统实现平台采用前后端分离的形式,前端负责页面展示;后端负责逻辑处理。Python分布式爬虫框架Scrapy实时爬取最新数据,并利用Mongodb数据库对爬取的数据进行存储。平台后端采用NestJS框架,负责进行数据传输、高考大数据的处理及构建匹配度加权算法,根据用户兴趣情况通过分析加权选项,准确且快速地匹配合适的专业。平台前端通过后端传递来的数据,利用Vue框架搭配Quasar组件,快速地实现前端数据的可视化展示,并通过Bootstrap框架实现响应式布局,适应多种尺寸的屏幕,提升用户体验感。平台技术线路,如图2所示。2.5功能描述2.5.1 登录/注册功能用户输入账号和密码进行登
10、录,对输入的账号和密码进行核对检验;没有账号时进行账号信息注册。2.5.2 首页用户登录成功进入平台主界面后,可以欣赏院校风光,浏览热门专业,观看一些推荐视频。2.5.3 院校介绍用户可以看到院校情况的详细介绍,还可以发布、分享对该院校的看法,或从评论中得到有参考价值的信息。2.5.4 专业介绍用户可以找到专业大类、专业类、具体专业,层层递进,获得详细介绍,还可以获得热门专业图表等展示信息。专业选择方面该平台适用于本省新高考的形势,根据用户选择的3科,智能得出可报考的专业和分数线,便于用户在新高考形势下填报志愿。2.5.5 兴趣测评用户通过回答对应的问题,系统自动匹配适合的专业。2.5.6 智
11、能填报用户通过输入分数、选科情况、位次等信息,由系统自动生成上冲、中稳、下保的志愿推荐,辅助高考志愿填报。2.5.7 高考咨询师用户通过付费与高考咨询师进行一对一沟通交流,获取报考建议等。2.5.8 资讯新闻了解招生政策,进行高考咨询。2.5.9 报考时间轴提供高考完至录取完成期间重要的时间点。2.6系统架构2.6.1 代码组织充分利用NestJS框架在架构设计方面的优势,分图2平台技术线路技术路线数据数据库后端前端Python爬虫MongoDBNestJS框架VueBootstrapQuasarEcharts112023.4电脑编程技巧与维护模块开发各功能使模块之间尽量解耦合,使模块内部Co
12、ntroller和Service分离。这种代码组织模式大大简化了开发复杂度,降低了后期维护的时间成本,便于后期功能扩展。2.6.2API设计将客户端和管理端分开设计,遵循RESTful API规范并使用Swagger工具自动生成API文档,方便后期进行多平台接入。2.6.3 数据库设计进行解耦合、去冗余、原子性属性设计,让数据库具备高可维护性和可扩展性。2.6.4 认证和权限控制使用JSON网络令牌(JWT)进行登录认证,使用NestJS的Guard进行权限判定。2.7系统技术2.7.1 网络安全利用MD5加密算法,将平台前端发送的数据进行加密后传输,在平台后端进行解密后获得数据原格式。其中,
13、数据加密过程结合时间戳生成唯一的密钥对。平台后端存储私钥;平台前端存储公钥,只有满足条件才能保证数据的顺利传输。2.7.2JWT 认证平台后端通过JWT技术生成用户token,在用户登录与数据获取期间必须持有相应的token,方可完成相应的请求。将NestJS框架与JWT技术相结合,在Con-troller层进行使用。只有通过认证请求,Controller层才会将数据传给Service层并进行处理,保证了数据的安全,实现平台前后端的双层认证。2.7.3 数据可视化利用易于上手的Vue.js前端框架,开源的、免费的可视化的Echarts图表库,基于Vue的响应式网站搭建框架Quasar、UI库B
14、oostrap技术实现了数据可视化。其中,Vue.js、Quasar和Boostrap负责页面元素的构建,Echarts负责图表的构建。将各种技术相互结合,搭建一个符合用户需求的新高考志愿填报平台。2.7.4QuasarQuasar是一款前端组件库,允许开发者在只写一次代码的情况下将其发布到多个平台,例如,Website、PWA、Cordova App和Electron App。在使用Quasar的时候,不需要HammerJS、MomentJS或Bootstrap,Quasar框架内已经包含了这些内容,可以很顺畅地使用。2.7.5BoostrapBoostrap是Twitter推出的一款前端开
15、发资源包,其高可用的组件使其界面更加符合用户的审美。2.8系统部署2.8.1 服务端(1)确保MongoDB服务已启动。(2)进入项目server目录,运行npm install安装依赖。(3)在server目录运行nest build server命令,构建面向客户端的服务。(4)在server目录运行nest build admin命令,构建面向管理端的服务。(5)进入server/dist/apps/server文件夹,运行pm2main,运行客户端服务。(6)进入server/dist/apps/admin文件夹,运行pm2main,运行服务端服务。2.8.2 消息系统(1)进入项目m
16、sgserver目录,运行pipenv install安装依赖。(2)在msgserver目录运行pipenv shell,激活当前虚拟环境。(3)在msgserver目录运行gunicorn-worker-classeventlet-w 1-D-b 127.0.0.1:5001 app:app,运行消息系统服务。2.8.3 前端(1)进入项目frontend/runlucollector和frontend/run-lucollectoradmin目录,运行npm install安装依赖。(2)分别在上述两个目录运行quasar build命令,构建项目。(3)进入项目frontend/runlucollector/dist目录,复制SPA文件夹至项目客户端的Nginx。2.9数据库设计使用Mongodb数据库进行持久化数据存储,遵循解耦合、去冗余、原子性属性设计原则,使数据库具备高可维护和可扩展性。模型图中的字段描述统一格式,字段名称:数据类型描述。例如,name:string组织名称。字段名称使用全英文小写,英文单词间无空格。数据类型:Mongodb数据库内建数据类型名称。关联字段