俗话说的好:“眼看千遍,不如手写一遍”,前几篇介绍了推荐系统的来源、发展、数据预处理、常见的推荐算法,以及冷启动和推荐系统效果评估。本篇文章将会通过实例介绍推荐系统的完整开发过程,以便大家有更加直观、系统的理解。


转载请注明出处:https://thinkgamer.blog.csdn.net/article/details/96211201
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer
公众号:搜索与推荐Wiki
个人网站:http://thinkgamer.github.io


在学习了《推荐系统开发实战》的一些基础知识之后,如何才能将这些知识应用到实际的案例中呢,本文介绍了以下三个案例,来带领大家温习和应用学到的知识。三大案例包含:

  • 新闻推荐系统
  • 音乐推荐系统
  • 图书推荐系统

新闻推荐系统

实现的第一个案例是新闻推荐系统,这里使用的数据集为:某新闻网站指定日期前的部分新闻数据,节选的几个主题为:国际要闻、互联网、经济要闻、社会公益、书评、影视综艺。爬取的每条数据包含三个字段:标题、时间、正文,如图所示。

在得到基础数据之后就是对数据的预处理,其主要包括: - 对原始数据的加工 - 新闻相似度计算 - 新闻热度值计算 - 指定标签下的新闻统计 其系统的整体架构如下所示:

其中各个模块介绍如下。

  • MySQL数据存储:这里使用MySQL存储系统所使用的数据。系统实现选用的是Python的Django框架,在框架中有对数据对象的封装,在第11.4节中将会说明所创建的数据对象。

  • 用户选择:系统指定了三个用户(张三、李四、王五)作为演示用户,只是为了区分不同用户、不同行为,“为你推荐”的内容也不同。

  • 选择标签:用户与系统的交互过程,解决系统的冷启动。当然用户也可以不选择相应的标签,此时“为你推荐”模块显示的是热度数据。

  • 用户点击浏览文章:即用户在系统中产生了相关行为,每篇文章的详细页都会推荐该篇文章的相似文章。

  • 热度榜:按照第11.2.2节中计算的热度值进行排序,显示热度值较大的新闻。

  • 为你推荐:如果用户是初次登录,则根据用户选择的标签返回“为你推荐”的内容;若用户没有选择标签,则返回热度值较高的新闻作为“为你推荐”的内容;如果用户是在点击浏览过新闻之后返回“为你推荐”模块,则返回用户有行为文章的相似文章,作为“为你推荐”的内容。

系统整体架构设计比较简单,和线上真正应用的复杂的推荐系统是有很大差距的,但实现思路是一致的。

接下来就是系统实现了,本实例采用前后端分离的形式进行实现,后端采用Python的Django框架进行开发,前端采用Vue.js框架开发。

后端开发依赖于Python 3.6版本,其中使用的包为:Django==2.1,PyMySQL==0.9.2,jieba==0.39,xlrd==1.1.0,gensim==3.6.0。

前端开发依赖于node.js环境,使用的是Vue.js框架,node.js对应的版本是10.13。

其最终实现的效果图如下:

通过这样一个实例,推荐系统变得不那么抽象,更加直观地展示在读者眼前。当然,每一个推荐系统背后都要付出很多,而不仅是算法层面,在从事相关工作时,更要拥有全局意识,要明白一个好的推荐系统是数据、算法、架构和展示等共同决定的,而不是靠“一己之力”。

音乐推荐系统

过多的内容这里不展开介绍,大家看下效果图,感兴趣的化可以关注《推荐系统开发实战》


图书推荐系统


打开微信扫一扫,关注微信公众号【搜索与推荐Wiki】

注:《推荐系统开发实战》是小编近期要上的一本图书,预计本月(7月末)可在京东,当当上线,感兴趣的朋友可以进行关注!