Sparrow Recsys

MovieLens 的数据集包括三部分,分别是 movies.csv(电影基本信息数据)、ratings.csv(用户评分数据)和 links.csv(外部链接数据)。下面,我就具体说说它们分别长什么样。

  1. movies.csv(电影基本信息数据)movies 表是电影的基本信息表,它包含了电影 ID(movieId)、电影名(title)、发布年份以及电影类型(genres)等基本信息。
  2. ratings.csv(用户评分数据)ratings 表包含了用户 ID(userId)、电影 ID(movieId)、评分(rating)和时间戳(timestamp)等信息。
  3. links.csv(外部链接数据)links 表包含了电影 ID(movieId)、IMDB 对应电影 ID(imdbId)、TMDB 对应电影 ID(tmdbId)等信息。其中,imdb 和 tmdb 是全球最大的两个电影数据库。因为 links 表包含了 MovieLens 电影和这两个数据库 ID 之间的对应关系,所以,我们可以根据这个对应关系来抓取电影的其他相关信息,这也为我们大量拓展推荐系统特征提供了可能。

在这里插入图片描述

在这里插入图片描述

MAC OS系统
1.下载IDEA(https://www.jetbrains.com/idea/download/#section=mac)
2.下载JDK(https://www.oracle.com/java/technologies/javase-jdk15-downloads.html)
3.安装IDEA和JDK(JDK的路径~/Library/Java/JavaVirtualMachines/openjdk-15.0.1-1)
4.打开IDEA,打开File->Project Strucure->Project->Project JDK(我的好像会自动识别)。若没有识别(显示jdk15.1),点击三角号,自己添加,步骤Add
SDK->JDK->选择上面提到的JDK路径选择。
5.在pom.xml点击右键,设置为maven project->‘Reload project’。耐心等待,这个很费时间。
6.然后找到SparrowRecSys/src/main/java/com/SparrowRecSys/online/RecSysServer,右击选择"Run
‘RecSysServer.main()’",程序就执行起来了.
7.浏览器中键入http://localhost:6010/

windows下搭建推荐系统的步骤

  1. 使用的vscode作为IDE
  2. 编译命令为mvn package assembly:single
  3. 我的web root uri在源代码里总是为空,稍微改了一下,这里是为了绕过去,也请指导的高手告诉正确方法 RecSysServer.java中49行改成了绝对路径 URI webRootUri =
    URI.create(“file:/D:/Work/RecommendationSystem/Sparrow/SparrowRecSys/target/classes/webroot/”);
  4. 运行java -jar target\SparrowRecSys-1.0-SNAPSHOT-jar-with-dependencies.jar即刻成功
课后题:
1.排序依据:
根据影片历史平均评分,降序排列。详细调用过程:
a.index.html里面的js代码,调用在头部加载的recsys.js 的addGenreRow, 传入参数(页面ID,影片类别名称,rowId, 每行放置影片个数,baseUrl)
b.在addGenreRow调用已注册的 getrecommendation 服务,传参的排序依据为rating.
c.服务getrecommendation绑定类RecommendationService, GET请求数据
d.RecommendationService.doGet 中 调用 online.datamanager.DataManager#getMoviesByGenre,根据每个影片的历史平均rating,降序排列.
2.根据popularity排序:
a.recsys.js
function addGenreRow(pageId, rowName, rowId, size, baseUrl) {
addRowFrame(pageId, rowName, rowId, baseUrl);
$.getJSON(baseUrl + "getrecommendation?genre="+rowName+"&size="+size+"&sortby=popularity", function(result){
$.each(result, function(i, movie){
appendMovie2Row(rowId, movie.title, movie.movieId, movie.releaseYear, movie.averageRating.toPrecision(2), movie.ratingNumber, movie.genres,baseUrl);
});
});
};
b.com.wzhe.sparrowrecsys.online.datamanager.DataManager#getMoviesByGenre:
添加一行:
case "popularity": movies.sort((m1, m2) -> Integer.compare(m2.getRatingNumber(), m1.getRatingNumber()));break;

用mmovie.getRatings.size() 也行,但应该效率比上面的低。
c.改改前端的展示代码
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值