摘 要
随着信息化,数字化时代的到来,各行各业都处于从传统工作模式往信息化工作模式转型。新闻的发布也不例外,以前查看新闻都是从报社打印出来的,只能通过报纸查看新闻。并且没办法第一时间看到自己感兴趣新闻。因此构建一款数字化,智能化的新闻推荐系统是很有必要的。
本课题拟设计的基于Spring Boot + Vue + Element UI框架加上协同过滤推荐算法开发的新闻推送系统,通过对新闻的评论数、评分数以及用户的收藏这三部分作为推荐系统的核心算法内容。通过分类被评论过的新闻,然后获取每一类新闻对应的评分,以及用户之间想同的收藏内容作为计算的参数,最后按基于用户相识度的矩阵算法进行新闻的推荐。通过多次的数据样本测试,不断地优化算法,得到了一个较好的推荐算法,确保了新闻推荐的准确性。实现管理员可以再后台发布和维护整个新闻系统,用户可以通过网页直接查看新闻,并且系统会通过协同过滤算法给用户推荐感兴趣的新闻。让用户摆脱纸质化新闻的时代,拥抱信息化新闻时代,让用户可以快速的查看到自己想看的新闻。经过前期的技术可行性分析和实际业务调研以及系统设计和研发,最后经过一系列的系统测试,系统的业务功能可正常使用满足用户的使用要求。
关键词:新闻推送;Spring Boot;Vue;协同过滤推荐
Abstract
With the advent of information and digital age, all walks of life are transforming from traditional work mode to information work mode. News release is no exception, in the past to check the news is printed out from the newspaper, only through the newspaper to check the news. And they can't see the news they are interested in first time. Therefore, it is necessary to build a digital and intelligent news recommendation system.
This topic plans to design a news push system based on the Spring Boot+Vue+Element UI framework and the collaborative filtering recommendation algorithm. The number of comments on the news, the rating and the user's collection are the core algorithm content of the recommendation system. By categorizing the reviewed news and obtaining the corresponding rating for each type of news, as well as the favorite content that users want to share as calculation parameters, the news is recommended using a matrix algorithm based on user familiarity. Through multiple data sample tests and continuous optimization of the algorithm, a better recommendation algorithm was obtained, ensuring the accuracy of news recommendations. The administrator can publish and maintain the whole news system in the background. Users can view news directly through the web page, and the system will recommend interested news to users through the collaborative filtering algorithm. Let users break free from the era of paper-based news and embrace the era of information news, allowing them to quickly view the news they want to watch. After preliminary technical feasibility analysis, actual business research, system design and development, and a series of system tests, the business functions of the system can be used normally to meet user requirements.
Keywords: News feed; Spring Boot; Vue; Collaborative filtering recommendation
目 录
摘 要
Abstract
第 1 章 引 言
1.1 研究背景及意义
1.2 国内外研究现状
1.3 研究的目的与意义
1.3.1 研究的目的
1.3.2 研究的意义
第 2 章 相关理论及技术分析
2.1 相关技术栈
2.2 Maven
2.3 Element UI
2.4 Vue Router
2.5 Spring Boot框架
2.6 Vue框架介绍
第 3 章 系统分析
3.1 系统需求分析
3.1.1 功能需求分析
3.1.2 系统性能需求
3.1.3 应用需求分析
3.1.4 其他需求分析
3.2 可行性分析
3.2.1 经济可行性
3.2.2 技术可行性
3.2.3 操作的可行性
3.2.4 运行的可行性
第 4 章 系统设计
4.1 系统功能设计
4.2 数据库设计
4.2.1 概念模型设计
4.2.2 物理模型设计
4.3 算法设计
4.3.1 用户行为分析
4.3.2 协同过滤推荐算法
4.3.3 基于用户的系统过滤算法
4.3.4 基于物品的协同过滤算法
4.3.5 两个算法的区别
第 5 章 系统实现
5.1 用户功能模块
5.1.1 登录
5.1.2 猜你喜欢
5.1.3 在线留言
5.1.4 新闻管理
5.1.5 我的收藏
5.1.6 个人信息
5.1.7 修改密码
5.2 管理员功能模块
5.2.1 登录
5.2.2 个人中心
5.2.3 注册用户管理
5.2.4 管理员管理
5.2.5 分类管理
5.2.6 新闻管理
5.2.7 评论管理
5.2.8 意见反馈管理
第 6 章 系统测试
6.1 测试定义及目的
6.2 测试方法
6.3 测试模块
6.4 测试结果
第 7 章 结论
参考文献
致 谢
如今的大数据时代,互联网迅猛发展,各种数据规模爆炸式增长,但同时也产生了严重的“信息过载”问题。如何从纷繁复杂的海量数据中缩小目标数据范围,提高获取所需信息这一课题值得研究。推荐系统就是在这种情况下应运而生,通过分析记录用户的行为,并根据这些记录去海量数据中挖掘,寻找到用户感兴趣的内容,然后推荐给用户,有效避免了信息过载的问题。目前,推荐系统俨然已经成为社会界和学术界的关注热点并获得广发应用[1]。
以前的业务系统都是处于纸质化的时代,信息很容易丢失,而且非常不方便管理。如果将业务做成信息化系统,那不仅信息容易保存不会丢失,而且方便人们管理,信息传达的时效性以及准确性都是非常快的[2]。有数据显示现在国内的互联网用户已经达到了13.51亿。长久以来,新闻一直是人民获取信息,了解时政的主要渠道,在资讯传播和宣扬社会价值方面扮演着非常重要的角色。每时每刻网络上都会产生大量的热点新闻内容,但是无法针对性满足用户需求,造成用户获取信息效率低下,而新闻推送系统,能够记录并分析用户的历史行为,为用户推送其可能感兴趣的内容,减轻了用户负担,节省了用户查找新闻的时间[3]。
传统推荐算法主要包括:基于内容的推荐算法、基于协同过滤的推荐算法、混合推荐和和基于深度学习方法的推荐。
最早被广泛使用的推荐算法是基于内容的推荐方法,起源于信息检索(IR)界,根据文本文件的内容和用户资料的比较,推荐文本文件。它的基本思想是根据用户的行为记录来为用户推荐与其偏好相似的物品。基于内容的系统利用项目特征和基于先前行动或明确反馈的用户偏好档案来推荐与用户喜欢的项目同源的其他项目。该模型最适合有关于一个项目的数据的情况。它不需要其他用户的数据,因为推荐是针对特定用户的。用户的资料被确定为推断出用户喜欢的物品类型。该模型可以捕捉到用户的特殊兴趣,它的优点是可以推荐其他用户很少感兴趣的项目。另一方面,该模型在扩大现有用户的兴趣方面能力有限。通常应用于文本领域,新闻和书籍的推荐[4]。
协同过滤算法是推荐平台使用最广泛的算法,关键在于通过用户物品的交互矩阵来寻找最近邻居,再通过最近邻居的信息来进行不同形式的推荐结果。协同过滤算法大体上分为3类:基于用户的协同过滤推荐、基于物品(项目)的协同过滤推荐和基于模型的推荐。基于用户的协同过滤推荐算法可概括为寻找最近邻居并声称推荐,关键在于用户之间相似度计算问题。通过相似度确定出最近邻居,并根据评分生成推荐,提高了推荐的精细度和丰富性,但存在新用户冷启动问题,并且可解释性不足。基于模型的推荐是通过训练机器学习模型来预测用户的偏好,常用的模型包括矩阵分解、逻辑回归模型、隐语义模型和GBDT+LR组合模型等。基于模型的推荐能够更好的挖掘用户的潜在偏好,但是也存在着数据稀疏的问题需要克服[5]。
混合推荐优势在于缓解了传统推荐算法的难题,往往比单一算法的推荐性能更优,也存在容易产生样本不均衡、数据异构等问题,算法混合难度较高。基于深度学习方法的推荐能够提取用户和项目非线性的深层结构特征,但存在建模过程类似黑盒以及可解释性低的问题[6]。
2015年,冯媛媛等人提出了一种基于聚类的推荐方法,将物品集合分为两个部分,热门物品部分依靠自身评分进行推荐,长尾物品部分进行聚类之后,采用聚类中的评分进行推荐,实验表明,选取合理的分割点时,该方法有效的提升了算法的长尾物品推荐能力和推荐的准确度[7]。2016年,Gai等人提出了成对概率矩阵分解,该模型采用成对排序方法和流行概率矩阵分解模型相结合来学习用户对项目的兴趣偏好,提升了算法的准确率[8]。2018年,史明哲等人提出LRRBM算法,通过提取用户偏好和商品的主题,结合受限波尔兹曼机对商品的主题权重进行预测来解决长尾物品推荐问题。汉亚敏等人提出了长尾物品群组算法,该算法将群组推荐转化为多目标优化问题,将满意度和流行度作为优化目标,保证准确度的同时提高了推荐结果的多样性和新颖性[9]。 2019年,曹占伟等人提出了一种结合LDA模型的矩阵分解算法,使用LDA算法输出项目-主题分布,再基于余弦相似度和KL散度计算得到项目相似度矩阵。秦婧等人提出了一种基于长尾物品的推荐框架以及关注长尾物品的推荐算法FLTI,通过使用长尾物品替换被频繁推荐的物品项的方法来达到指定的长尾比例,达到提升覆盖率的效果。刘向举等人提出了一种类TF-IDF物品相似度算法,通过改进相似度计算方法提高长尾物品的推荐概率[10]。2021年,Yu等人提出了ICICSE模型,该模型在协同过滤模型基础上考虑了用户的偏好变化,能够有效的捕捉用户的兴趣变化[11]。2022年,Kim等人提出了MeLON模型,该模型采用了基于元学习的在线推荐更新策略,每个参数交互对具有自适应学习率可以快速了解用户的最新兴趣。Ma等人提出了CrossCBR模型,该模型通过跨视图对比学习来建立两种不同视图之间的关键协作关联,而且大大降低了计算成本和算法的推荐性能[12]。
随着互联网时代的飞速发展,海量的数据和信息充斥着工作和生活。在过去,面临的是信息的严重匮乏,如何在大量的信息中筛选出人们真正需要的信息是本课题需要解决的问题。因此,一个能提供良好服务的新闻推荐系统将信息过滤并向用户展示其可能感兴趣的信息,能有效提高大数据的利用率,节约时间,提高工作的效率。现代影响比较大的做新闻的企业都使用互联网技术来管理新闻,将新闻与现代的高新技术相结合,尽量做到网站的尽善尽美,即先收集、分类然后方便用户挑选与分享。根据信息社会的特点,对新闻信息进行合理的配置,达到为用户提供合理的、专业的查看新闻体验的目的[13]。
现代人生活节奏不断加快,工作任务繁重,在工作之余,人们需要适当的放松,新闻可以有效的缓解人们工作的压力,从而提高公司员工的工作效率。网络的飞速发展使得人们记录、分享和发现新闻的方式也随之发生着改变,因此,借助怎样的互动方式能让那些喜欢新闻的人通过享受和分享新闻来宣扬自己的价值,获得大家的肯定及关注是一个值得深入探讨的话题[14]。
当今的新闻分享平台大多以客户端的方式运营,频繁的更新让人感到非常繁琐,毫无疑问,基于网页的新闻分享平台是一个好主意,这样可以避免频繁的更新给用户带来的困扰,也给开发人员维护带来了便利。因此,开发一款个性化新闻网站具有一定的应用意义[15]。
协同过滤新闻推荐系统采用的是Spring Boot + Vue的前后端分离架构,后端的技术架构包括Spring Boot、Spring Mvc、Token、Maven、MySQL、Hutool工具包:Mybatis ORM 框架。
前端的技术架构包括 Vue 2.6.x、Vue Cli 4.x、iView、Element-UI、Vuex、Vue Router、ES6、webpack、axios、echarts、cookie等。
Apache提供的java构建工具被称为Maven,该工具用于帮助使用java和C#编写的任何复杂程度的项目的构建、文档和依赖过程,该工具使用项目对象模型(POM),并遵循源代码、编译代码等惯例。这个是一种声明性的,遵循.xml文件系统,并且还通过一致的接口帮助构建过程的依赖性管理。使用了存储库,其主要被视为项目管理工具,因为Maven可以管理所有项目依赖关系和维护。
Maven是一个受Apache许可的项目构建工具,Maven存储库中有大量可用的库。
在项目中,获取正确的JAR文件是一项困难的任务,因为两个独立包的版本可能会发生冲突。然而,Maven确保所有JAR文件都存在于其存储库中,并避免任何此类冲突场景。
要从Maven获取这些JAR文件,并且需要访问Maven存储库并搜索确切的依赖关系。
pom.xml是非常重要的文件。现在,根据依赖关系,您需要在这个pom.xml文件中提到确切的名称。例如,如果需要Hibernate依赖项,则需要在依赖项标记中指定这些。
项目进入GroupId后。现在,不同的公司或人建造不同的项目,这突出了确保每个项目都是独一无二的问题。因此,这个唯一性问题可以通过使用唯一的ArtifactId或GroupId来解决,这将一个项目与另一个项目区分开来。这是通过组合表示项目名称的ArtifactId和描述包的GroupId来实现的。例如,假设GroupId命名为com.telus,ArtifactId命名为proj,那么Package名称将为com.telus.proj.web。这些将简化Maven过程。
Element UI 目前提供了 56 个组件,分别是六大类,其构成是基础、表单类、数据类、提示类、导航类和其他类型这六大类组件。作为一个 UI 组件库,该框架提供的大量的组件足以完成大多数系统的开发。同时,假设此业务场景目前的组件没办法满足用户需求还可以自定义开发。
UI框架一般是伴随着前端框架产生的。虽然目前 Element UI 为 Angular 和 React 也提供了组件库,但国内大多数开发者还是用其与 Vue 配合使用进行开发。
VueRouter是Vue.js官方推出的一款路线。其可以让前端直接实现页面的跳转,因为以前都是服务端跳转页面,页面根本就不能自己进行跳转,所以这是一个很好的功能,抛开了前端对后台的依赖性。
当页面需要进行跳转的时候,路由这时候就会生效,让 Vue Router 知道在哪里渲染这些。
Spring框架已经广泛用于在各个业务系统当中,Spring全家桶是非常受开发人员欢迎的。在开发web系统中,Spring当中的一个模块叫做Spring MVC是的一个经常并且广泛去使用的模块,对于开发web系统的程序一般都会去使用spring框架。但是由于spring框架在搭建项目的过程中主要缺点是配置非常复杂所以需要配置大量的xml文件,并且对新的开发人员是非常不友好的原因是由于对框架系统不熟悉,导致看到大量的xml配置简直头大。
为了解决这个问题让框架更加容易上手Spring Boot就诞生了。Spring Boot是自动装配的方案不需要去手动配置,包含所有的启动所有功能。而且现在正成为开发人员的最爱,因为这个是一个快速的生产的环境能够快速开发,能够让使开发人员能够更加直接关注逻辑,而不是都在纠结于配置和设置方面的事情,只专注于业务。Spring Boot开发的前提条件是必须要有Spring框架的基本知识和开发经验。这样才能无缝衔接的去开发Spring Boot框架的业务功能。
Vue是一款轻巧、高效的JavaScript框架,用于构建用户界面。Vue的主要优势在于其简单易用,同时也提供了高度的灵活性和可扩展性。Vue具有的易学习、易调试、易上手的特点,使得它逐渐成为了广大Web开发者的首选之一。
作为一款现代化的JavaScript框架,Vue在界面组件化、数据双向绑定、组件通信等方面都有着优秀的表现。Vue的组件化思想使得页面中的每个区域都是一个独立的组件,具有着高度的可重用性和可维护性。Vue的数据双向绑定机制,则使得页面的数据能够与后台数据实现自动化地绑定和更新,让页面的数据和后台数据一一对应,大大提高了开发效率。
Vue中还有一个重要的概念就是虚拟DOM。虚拟DOM是Vue中的一个性能优化手段,它将页面中的节点映射到一个虚拟的JavaScript对象上,在每次数据变化时,Vue会对比新老虚拟节点的差异,并将最小化修改写入到浏览器中,从而实现快速渲染和更新。
总之,Vue的灵活性、可扩展性和易用性都使得它成为了Web开发中不可或缺的一部分。在我们搭建新闻推荐系统中,选择Vue作为前端框架不仅能够提高我们的开发效率,还能让我们的页面更具有美感和人性化,从而更好地吸引客户。
目前在研发一个项目系统之前都需要根据实际的业务场景以及业务需求去做一个实地的业务调研。业务调研的软件研发中是非常重要的一环,因为从实际出发去了解用户的业务需求以及用户在操作业务的过程中面前的业务痛点,才能真正的了解用户需要的是什么,才能设计和才发出一套符合用户想要的系统。
首先需要仔细的分析需求,只有详细的了解用户的需求之后才能开发出符合用户要求的系统。如果没有很深入的去挖掘需求那么系统是不够完善的,系统开发就不能满足用户的操作需求。
本阶段将对整个系统的管理以及系统的应用情况做作全面的调查,以此来确定系统目标。确定用户的需求。用户对系统的需求我们从以下几方面进行分析。
通过前期的系统调研和分析,本系统的主要设计两个角色分别是后台管理员以及前台用户。两个角色的功能需求分别如下:
1.管理员端主要功能:
(1)登录:为了保证系统数据的安全,管理员必须输入正确的账号密码后才能登录后台系统。
(2)个人中心:对个人数据进行数据的维护。
(3)用户管理:对系统的用户信息进行增删改查操作,以及禁用和重置用户密码。
(4)管理员管理:对管理员信息进行增删改查操作。
(5)分类管理:可以分类信息进行增删改查操作。
(6)新闻管理:对新闻进行增删改查操作。
(7)评论管理:对评论管理进行增删改查操作
(8)意见反馈管理:对意见反馈信息进行增删改查操作
2.用户端主要功能:
(1)猜你喜欢:系统根据协同过滤算法对用户进行个性化新闻推荐。
(2)在线留言:用户可以在上架新闻模块查看到最新上架的新闻。
(3)新闻管理:用户在新闻资讯模块可以查看新闻资讯的信息。