推荐系统实现(1)
本推荐系统采用基于内容的推荐算法,旨在为用户提供与其已收藏内容相似的新内容推荐。系统设立了两级过滤机制,以提高推荐的准确性和实用性。第一级过滤根据语料自身的标签进行推荐,第二级过滤则基于第一级过滤得到的标签,计算每个类别中语料标题与所有收藏语料标题的相似度,推荐相似度最高的几个语料。
一级过滤机制根据语料自身的标签进行推荐,具体步骤如下:
获取用户已收藏的语料列表List<Favorites> favoriteCorpusList。
通过对favoriteCorpusList中不同标签进行数量排序。
将数量靠前的tag,从语料库中获取所有包含该标签的语料,形成初始候选语料列表。
根据用户的收藏行为和标签信息,对候选语料列表进行筛选和排序,生成推荐列表。
二级过滤机制基于一级过滤得到的候选语料列表,计算候选语料列表中每个语料标题与所有收藏语料标题的相似度,推荐相似度最高的几个语料。具体步骤如下:
对于数量靠前的每个类别(一级过滤后的类别),遍历其中的每个语料corpus。
对于每个corpus,计算其标题与所有收藏语料的标题的相似度,排除与当前corpus相同的语料。
将计算得到的相似度值进行排序,最后取相似度值最高的几个语料作为推荐结果。
相似度计算方法:采用Levenshtein(莱文斯坦距离)距离计算两个标题之间的相似度。(目前效果并不理想,待完善)
推荐结果展示:将推荐结果传递给前端页面,供用户浏览和选择。
目前的推荐系统实现的推荐效果很差,主要问题是:
二级过滤中采用的标题之间相似度计算算法比较粗糙。
语料内容和收藏内容不够丰富,因为目前语料平台中主要还是真题类语料占主体,这类语料标题格式和类容都比较类似。
后续改进思路:
方案一:改进二级过滤中的相似度算法,探索更适合本平台的相似度算法。
方案二:二级过滤更改为基于语料的内容计算相似度,这里的相似度计算可以采用更智能的方式实现。
相似度算法改进可以尝试similarity相似度计算工具包,可用于文本相似度计算、情感倾向分析等,Java编写。项目地址:https://github.com/shibing624/similarity。
整体的探索方向为WordNet词网研究JWS——Java WordNet Similarity。
标签:计算,推荐,系统,笔记,标题,过滤,相似,语料 From: https://www.cnblogs.com/Hygge1024/p/18086652