创新实训(4)——有关项目推荐系统的规划

标题基于流行度的推荐

后台可以记录每篇博客的阅读次数,直接简单粗暴的推荐比较流行的博客即可,可能热门的博客会被很多人所喜欢。

问题:可能产生长尾效应,阅读数多的博客可能就有限的几篇,而大量的博客无人问津。
解决方案:将阅读次数与新鲜度结合,找到一个比较适合的排名方式,一篇刚发布的博客,有较大的新鲜度,可以将其排到前面
博客评分的计算(基于新鲜度和点击量):
如果一篇文章的点击量超过200(这个数据可以修改)。网站会认为这篇文章是一篇有趣的文章。
产生一个能够随时间流逝而不断减少的评分根据文章的发布时间和当前时间来计算文章的评分
将文章的点击量乘以一个常数,然后加上文章的发布时间,得出的结果就是文章的评分
文章每获得一次点击,程序就需要将文章的评分增加432分 432是通过将一天的秒数(86400)除以文章展示一天所需的点击量(200)得出的
文章的排名数据存到redis中zset中 每次点击都会触发一次评分的计算,时下流行板块就是按评分从redis取出用户的id 然后展示到界面上

基于博客的标签或者分类的推荐:使用基于物品的协同过滤算法

基于用户对某标签的博客的偏好,计算出博客标签之间的相似度,然后根据当前用户的偏好,推荐相似标签的博客给他。

根据用户标签的相似度的推荐:使用基于用户的协同过滤算法

对每两个用户进行标签相似度的计算,为每个用户找到与之相似度最高的几个邻居用户。
然后从邻居中通过相关算法,找出目标用户最喜欢的标签,进行博客推荐。
比如:
A喜欢标签X,Y,Z,M;B喜欢X,Z,P,N,他们喜欢的标签有相似度X,Y共同喜欢,则可以给A推荐P,N中偏好程度最高的标签,可以给B推荐Z,M中偏好程度最高的标签。

基于文本内容相似度的推荐

每篇博客下面有相似博客的列表,用户可以进行阅读
这种方式需要对博客文本内容进行处理,在对文本内容进行分词,计算文本之间的余弦相似度,选出topK进行推荐。
可以使用tf-idf 来进行余弦相似度的计算

具体实现方式的思考

(1)刚开始,找到了一个java的库叫做mahout,里面实现了基于用户的协同过滤算法以及基于物品的协同过滤算法,然后基于相似度的推荐和基于流行度的推荐打算自己实现。
(2)然后感觉使用mahout进行推荐效率较低,没法给用户很好的体验。所以打算采用spark平台进行大规模的数据计算,现在自己电脑上搭一个单机版的spark,后期可以随时扩展到多台服务器,实现数据的并行处理,大大提高了计算的效率。
所以打算先自己实现推荐算法,或者采用matout提供的协同过滤算法进行初步的推荐,作出初步的功能。然后在对基于spark平台的推荐进行摸索,实现最终的扩展。

猜你喜欢

转载自blog.csdn.net/baidu_41871794/article/details/106630126
今日推荐