推荐系统实现-笔记(2)

推荐系统实现(1)

推荐系统Demo实现笔记:

系统概述

本推荐系统采用基于内容的推荐算法,旨在为用户提供与其已收藏内容相似的新内容推荐。系统设立了两级过滤机制,以提高推荐的准确性和实用性。第一级过滤根据语料自身的标签进行推荐,第二级过滤则基于第一级过滤得到的标签,计算每个类别中语料标题与所有收藏语料标题的相似度,推荐相似度最高的几个语料。

一级过滤机制

一级过滤机制根据语料自身的标签进行推荐,具体步骤如下:

获取用户已收藏的语料列表List<Favorites> favoriteCorpusList。

通过对favoriteCorpusList中不同标签进行数量排序。

将数量靠前的tag,从语料库中获取所有包含该标签的语料,形成初始候选语料列表。

根据用户的收藏行为和标签信息,对候选语料列表进行筛选和排序,生成推荐列表。

二级过滤机制

二级过滤机制基于一级过滤得到的候选语料列表,计算候选语料列表中每个语料标题与所有收藏语料标题的相似度,推荐相似度最高的几个语料。具体步骤如下:

对于数量靠前的每个类别(一级过滤后的类别),遍历其中的每个语料corpus。

对于每个corpus,计算其标题与所有收藏语料的标题的相似度排除与当前corpus相同的语料。

将计算得到的相似度值进行排序,最后取相似度值最高的几个语料作为推荐结果。

实现细节

相似度计算方法:采用Levenshtein(莱文斯坦距离)距离计算两个标题之间的相似度。(目前效果并不理想,待完善)

推荐结果展示:将推荐结果传递给前端页面,供用户浏览和选择。

Demo效果截图:

问题与反思:

目前的推荐系统实现的推荐效果很差,主要问题是:

二级过滤中采用的标题之间相似度计算算法比较粗糙。

语料内容和收藏内容不够丰富,因为目前语料平台中主要还是真题类语料占主体,这类语料标题格式和类容都比较类似。

后续改进思路:

方案一:改进二级过滤中的相似度算法,探索更适合本平台的相似度算法。

方案二:二级过滤更改为基于语料的内容计算相似度,这里的相似度计算可以采用更智能的方式实现。

相似度算法改进可以尝试similarity相似度计算工具包,可用于文本相似度计算、情感倾向分析等,Java编写。项目地址:https://github.com/shibing624/similarity。

整体的探索方向为WordNet词网研究JWS——Java WordNet Similarity。

posted @   Hygge-1024  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示