基于协同过滤算法的图书推荐系统设计与实现*

2023-08-22 03:47:14张盼盼刘凯凯
计算机时代 2023年8期
关键词:字典物品图书

张盼盼,刘凯凯

(运城学院,山西 运城 044000)

0 引言

如今人们会在互联网上进行各种各样的活动,如观看电影、购买商品、阅读书籍等,但随着互联网上信息的越来越多,人们发现越来越难以从海量信息中找出最适合自己的那些信息。图书推荐系统的出现,可以解决“信息过载”[1]的困扰。图书推荐系统通过数据挖掘等大数据技术,预测用户的阅读需求并推荐给用户其最可能爱看的图书,将人们从海量图书的选择困难中拯救出来。

本文研究了推荐算法的基本概念及其实际应用;通过基于物品的协同过滤算法[2]对用户和图书相关数据进行计算,得出推荐结果,将推荐图书展示给用户,完成图书推荐,为读者解决实际问题。

1 系统总体架构设计

本文基于协同过滤算法的图书推荐系统采用MTV 架构,来实现“高内聚低耦合”。图书推荐系统整体架构如图1 所示。

图1 图书推荐系统架构图

图1 中,表现层的功能主要是将动态生成的网页文件进行输出,使用户可以直观的看到信息;业务逻辑层将一些逻辑封装,在前端和数据库端之间充当中间人,便捷的将数据在两者之间传递;数据存取层实现数据库访问,通过数据库命令执行操作,例如查询,插入,更新,删除等;数据库采用MySQL,存储图书、读者、评分等用户信息。

2 功能模块设计

本文图书推荐系统借助基于物品的协同过滤算法,在用户搜索图书的同时自动为读者推荐一批相似的图书,因此在功能模块上主要包含后台管理系统和图书推荐系统两大部分。

2.1 后台管理系统

后台系统管理模块实现了对用户信息进行的删除操作以及对图书信息进行的添加和删除操作,包括用户账号管理、图书管理两个部分,该功能主要通过管理员角色操作。

2.2 图书推荐系统模块

图书推荐系统模块主要包含用户个人信息管理、热门书籍、基于物品的推荐模块三部分。

⑴用户管理模块主要实现用户对本人信息的查看和修改操作、对用户历史评分记录进行查看和删除操作以及对喜欢书单内图书的信息进行查看和删除操作。

⑵热门书籍模块的功能是通过对用户的历史评分记录进行排行,得到热门书籍。该功能是对所有用户的评分记录中图书评分总和最高的图书进行排行,根据评分由高到低进行排序,生成热门图书的排行榜。

⑶基于物品的推荐模块是通过对图书以及用户评分记录的分析,完成对用户进行图书推荐的功能。

3 算法设计

基于物品的协同过滤算法是本系统设计与实现的源泉,本节叙述有关该算法的实现过程与设计思想。

用户依据数据库内数据的提取,通过推荐算法的分析、对用户的行为分析[3]得出与自己所评的图书相似的其他图书,其结果将通过SQL 语句传递到前端,然后展示在HTML 页面上,完成基于物品的协同过滤算法推荐的全过程。算法的流程图如图2所示。

图2 基于物品的推荐功能模块图

3.1 获取数据

首先从文件中获取所需的数据集,并且根据列进行划分得到所需的数据,将其存入训练集train 中。本系统中使用的数据通过网络爬取获得,本系统侧重点在于推荐系统的设计,因此数据获取不再详细描述。

3.2 计算相似度

对所获取的数据,对每本图书统计用户数及评分,记入空字典中,例如创建一个空字典为Self.N={},N[i]表示对图书i评分的用户数。

然后建立物品相似度矩阵W[i][j],计算出图书i与图书j 之间的相似度,填入该矩阵。利用如公式⑴计算图书之间的相似度[4]。W[i][j]标识图书i 和图书j的相似度,N[i]则是喜欢图书i的用户数,N[j]则是喜欢图书j的用户数,除号上方表示同时喜欢图书i和图书j的用户数。

部分相似度矩阵如图3。

3.3 为当前用户提供推荐图书

面向当前用户,搜寻和用户历史评分上的图书最相似的图书集合,为用户进行推荐。本文以用户123为例,展示整个推荐过程:用户123 对一本图书进行评分后,历史评分如图4所示。

图4 用户123历史评分展示图

接下来用户123在首页点击与你喜欢的图书类似按钮,后台运行推荐算法:

首先创建字典self.train={},从本地数据集中获取数据,存储所有的用户对图书的评分数据;创建字典self.W,用来存储图书之间的相似度;创建self.N,用来存储每本图书被用户评价过的次数。

然后通过3.2 节中的相似度公式计算图书之间的相似度,生成图书-图书相似矩阵存入字典self.W 中。从得到的相似度矩阵中取出与用户123 所评图书最相似的其他图书及其评分。所有用户评价过的图书信息存储在self.train 中,由于当前用户名(user)为123,所以可以通过self.train[user]可获取到用户123 评价过的图书信息。如表1所示。

表1 算法获取到用户123评价的图书信息表

将用户123 对每本图书的评分与用户123 评分过的每本图书和其他图书之间的相似度两者之积进行求和,得到推荐字典rank{},后对推荐字典进行堆排序,用来判断用户123 对某一图书的喜好程度[5,6]的高低,根据推荐分由高到低排列,将指定数量的图书推荐给用户123,排序之后推荐字典内的部分推荐图书如表2所示。

表2 推荐字典经过排序之后的部分图书表

排序后将推荐图书展示在HTML 页面,如图5所示,完成本系统基于物品的推荐功能。

图5 为用户123推荐图书展示图

4 结束语

图书推荐系统根据图书、评分数据集,通过图书记录与用户评分记录进行推荐的软件系统。本系统的图书推荐模块是由基于物品的协同推荐算法进行的图书推荐,本文设计的热门书籍模块将图书评分排行榜展示出来,使读者对热门书籍有一个直观的感受,并且向没有对图书进行评分的用户提供一批大众评分较高的书籍。在文中应用的推荐算法中,仍存在推荐准确性的问题,下一步将在推荐算法上继续讨论研究,提高系统推荐图书的推荐性能,使推荐结果更精准,更好地为读者服务。

猜你喜欢
字典物品图书
开心字典
家教世界(2023年28期)2023-11-14 10:13:50
开心字典
家教世界(2023年25期)2023-10-09 02:11:56
称物品
“双十一”,你抢到了想要的物品吗?
图书推荐
南风(2020年22期)2020-09-15 07:47:08
谁动了凡·高的物品
欢迎来到图书借阅角
班里有个图书角
我是小字典
正版字典
读者(2016年14期)2016-06-29 17:25:50