#1 - 2018-5-13 23:16
windrises (一个纠结的面瘫伪宅)
我又来了,这次做了一个推荐系统
(是的,之前也有人做过)
本帖是对https://github.com/windrises/recommendation/blob/master/recommendation.ipynb这个文档的补充,主要是说明系统的使用方式和我的一些工程上的考量。如果打不开github,可以尝试这个地址https://windrises.net/recommendation.html
脚本安装地址:https://greasyfork.org/zh-CN/scripts/367956-%E6%BC%AB%E6%B5%B7%E6%8B%BE%E8%B4%9D
算法的文档和代码以及用到的数据在https://github.com/windrises/recommendation
后端和脚本等代码依然在之前的项目地址:https://github.com/windrises/bgmtools
这次的数据是5月6号爬取的,你可以在上面找到包括爬取的原始数据,数据库导出数据,训练模型使用的数据等等
主要功能有:
1、针对每个动画条目提供“相似条目”和“可能喜欢”两个推荐模块,并且提供api
2、在网站首页提供个人的每日推荐
3、个性化定制你的每日推荐
4、查看推荐历史
5、提供好友推荐
详细说明:
1、在动画条目页显示,可以点击“更多推荐”按钮查看更多推荐,分别最多有48个推荐,按相似度排序。
“相似条目”的意思是两个条目有很多相同的标签,当然并不是简单的统计有多少是相同的,这里不再赘述。
“可能喜欢”的意思就是“喜欢该条目的用户可能也喜欢这些条目”。
下图是花开物语中推荐结果的截图

2、在首页查看,再次点击“每日推荐”可以换一组推荐,每日最多推荐四组。
每一组前两个是按你的预测评分中比较高的条目中随机选取的(数据是5月6号爬的,在这之前评分数超过50个的用户可以使用这个功能,并且不会推荐那些你已经标记过的条目,我对每个用户预存了推荐top500的条目)。第三个是从你曾经给过好评的条目的相似条目中随机抽取的(如果你不满足前面的条件,那你的首页会全是这种相似条目的推荐)。
这个功能是所有功能中最复杂的,涉及到很多考量,下面是效果截图

3、在 个人设置--漫海拾贝 里,可以定制你的每日推荐。
同步按钮点击后服务器会爬取你最近标注的条目数据加入到数据库,并可能会影响到之后的每日推荐结果(注:这个同步功能暂时还没有实现,看情况以后有可能会完善)。

4、在动画的收藏页可以看到历史推荐(只有每天推荐的第一组才会被记录在这里,并且一般来说之后不会重复推荐)

5、先转到你的好友列表,然后会在旁边出现好友推荐的按钮。这里推荐的用户都是与你有相似喜好的(包括未评分的潜在的喜好),按相似度排序。

这个系统从我开始构思找资料到着手做大量的实验到现在最终完成花了整整一个月中的每个夜晚,其中光是做实验就花去了大部分时间,然后写上面的文档也用了好几天。最终的结果我也比较满意,你也可以自己找些条目看看推荐结果。
我做这个推荐系统除了想学点东西,更大的想法其实就是想在大量的动画里拾取那些我可能会喜欢的。用这个系统先帮我筛选一遍,剩下推荐给我的,我自己再挑选着看。在这之前我偶尔会去看b站里我喜欢的动画下面提供的推荐,也靠着这个推荐找到了很多喜欢的动画,但是我还是不够满意。我也对一些常见的有推荐系统的网站做过调研,上面文档里写的有,这里就不多说了。
我之前想过如果有些动画的资源随着时间的流逝而下载不到了,那这个动画可能就真的永别了。现在我觉得如果我连那些可能喜欢的冷门作品的名字都没听过的话,这才是真正的遗憾。而这个每日推荐其实更加注重推荐那些你可能感兴趣的冷门佳作,如果你在每日推荐里看到了一些从没听过的并且评分人数很少的条目,不要单纯认为这个推荐算法有问题。其实每个人的推荐结果中靠前的往往都是那些很有名并且口碑很好的作品,但是并不是每个人都想把那些捧上神坛的作品看一遍。我个人比较喜欢找那些7分档的非热门番看,当然每个人有每个人的口味,这些推荐方面的个性化偏好你都可以自定义。
由于系统比较复杂,现在可能还不稳定,我也还没来得及做更多的测试。等稳定后你可以在超合金组件里自己创建一个组件,然后把脚本复制过去,这样你就可以在多个终端使用了(你的个人设置是存在服务器端的),当然用油猴的话更新脚本就会很方便。如果你用的app是基于网页爬取来实现的,那么你就可以在app中使用这个功能。
我想写的其实大部分都在上面的文档中,这里就暂时写到这里。如果你发现了有趣的推荐结果,不管是否准确,都欢迎跟帖分享。不管是写网站还是做推荐系统我都只是入门,不懂的地方非常多,非常非常非常欢迎提出各种意见和建议
。如果发现了bug也请告知我,我会尽量第一时间修复。
----------------
脚本更新到了0.8版本,合并了@发光的球 做的https://bgm.tv/group/topic/345713

本帖是对https://github.com/windrises/recommendation/blob/master/recommendation.ipynb这个文档的补充,主要是说明系统的使用方式和我的一些工程上的考量。如果打不开github,可以尝试这个地址https://windrises.net/recommendation.html
脚本安装地址:https://greasyfork.org/zh-CN/scripts/367956-%E6%BC%AB%E6%B5%B7%E6%8B%BE%E8%B4%9D
算法的文档和代码以及用到的数据在https://github.com/windrises/recommendation
后端和脚本等代码依然在之前的项目地址:https://github.com/windrises/bgmtools
这次的数据是5月6号爬取的,你可以在上面找到包括爬取的原始数据,数据库导出数据,训练模型使用的数据等等
主要功能有:
1、针对每个动画条目提供“相似条目”和“可能喜欢”两个推荐模块,并且提供api
2、在网站首页提供个人的每日推荐
3、个性化定制你的每日推荐
4、查看推荐历史
5、提供好友推荐
详细说明:
1、在动画条目页显示,可以点击“更多推荐”按钮查看更多推荐,分别最多有48个推荐,按相似度排序。
“相似条目”的意思是两个条目有很多相同的标签,当然并不是简单的统计有多少是相同的,这里不再赘述。
“可能喜欢”的意思就是“喜欢该条目的用户可能也喜欢这些条目”。
下图是花开物语中推荐结果的截图

2、在首页查看,再次点击“每日推荐”可以换一组推荐,每日最多推荐四组。
每一组前两个是按你的预测评分中比较高的条目中随机选取的(数据是5月6号爬的,在这之前评分数超过50个的用户可以使用这个功能,并且不会推荐那些你已经标记过的条目,我对每个用户预存了推荐top500的条目)。第三个是从你曾经给过好评的条目的相似条目中随机抽取的(如果你不满足前面的条件,那你的首页会全是这种相似条目的推荐)。
这个功能是所有功能中最复杂的,涉及到很多考量,下面是效果截图

3、在 个人设置--漫海拾贝 里,可以定制你的每日推荐。
同步按钮点击后服务器会爬取你最近标注的条目数据加入到数据库,并可能会影响到之后的每日推荐结果(注:这个同步功能暂时还没有实现,看情况以后有可能会完善)。

4、在动画的收藏页可以看到历史推荐(只有每天推荐的第一组才会被记录在这里,并且一般来说之后不会重复推荐)

5、先转到你的好友列表,然后会在旁边出现好友推荐的按钮。这里推荐的用户都是与你有相似喜好的(包括未评分的潜在的喜好),按相似度排序。

这个系统从我开始构思找资料到着手做大量的实验到现在最终完成花了整整一个月中的每个夜晚,其中光是做实验就花去了大部分时间,然后写上面的文档也用了好几天。最终的结果我也比较满意,你也可以自己找些条目看看推荐结果。
我做这个推荐系统除了想学点东西,更大的想法其实就是想在大量的动画里拾取那些我可能会喜欢的。用这个系统先帮我筛选一遍,剩下推荐给我的,我自己再挑选着看。在这之前我偶尔会去看b站里我喜欢的动画下面提供的推荐,也靠着这个推荐找到了很多喜欢的动画,但是我还是不够满意。我也对一些常见的有推荐系统的网站做过调研,上面文档里写的有,这里就不多说了。
我之前想过如果有些动画的资源随着时间的流逝而下载不到了,那这个动画可能就真的永别了。现在我觉得如果我连那些可能喜欢的冷门作品的名字都没听过的话,这才是真正的遗憾。而这个每日推荐其实更加注重推荐那些你可能感兴趣的冷门佳作,如果你在每日推荐里看到了一些从没听过的并且评分人数很少的条目,不要单纯认为这个推荐算法有问题。其实每个人的推荐结果中靠前的往往都是那些很有名并且口碑很好的作品,但是并不是每个人都想把那些捧上神坛的作品看一遍。我个人比较喜欢找那些7分档的非热门番看,当然每个人有每个人的口味,这些推荐方面的个性化偏好你都可以自定义。
由于系统比较复杂,现在可能还不稳定,我也还没来得及做更多的测试。等稳定后你可以在超合金组件里自己创建一个组件,然后把脚本复制过去,这样你就可以在多个终端使用了(你的个人设置是存在服务器端的),当然用油猴的话更新脚本就会很方便。如果你用的app是基于网页爬取来实现的,那么你就可以在app中使用这个功能。
我想写的其实大部分都在上面的文档中,这里就暂时写到这里。如果你发现了有趣的推荐结果,不管是否准确,都欢迎跟帖分享。不管是写网站还是做推荐系统我都只是入门,不懂的地方非常多,非常非常非常欢迎提出各种意见和建议

----------------
脚本更新到了0.8版本,合并了@发光的球 做的https://bgm.tv/group/topic/345713
data-original-title看起来有点麻烦,索性删了
你的脚本也合并进来了,0.4版本(油猴刚才各种抽风,害得我一样的代码交了好几个版本
现在这样不是也挺好的吗
我没有爬每个用户的好友列表,所以这个不能去重
我看了一下log,确实没有找到你有请求过设置页面,不过我看别人都成功请求了,我也不清楚什么情况...
你们是用的什么浏览器,什么客户端
我也考虑过把那些相关联的条目去掉(比如第一季与第二季之类的),但是后来又觉得保留着也挺好,可以检验推荐结果是否准确
油猴脚本一直更新失败,等更新好了,你再下个最新的就好了
0.4的那个显示不正常 总之先用这个更新吧
https://github.com/windrises/bgm ... y/recommendation.js
权重的设置我没有深入研究,下次更新数据会考虑这个问题(如果有的话
你得先把一个动画/书籍/三次元标记为“在看”,然后那个模块才能出现
这个问题我之前确实没有考虑到
不过你还是没有推荐结果,因为数据是5月6号爬的,在这之前你没有标记过动画,因此没法推荐。。
既然模型已经训练好了的话,能否在收到请求时通过即时爬取用户的最新评分数据来更新推荐数据库?比如增加一个“通过现有评分数据更新结果”按钮(限制1天调用1次)。然后用“换一批”按钮随机选取数据库中已生成的推荐结果进行展示。
按钮加上去了,但是后台功能我暂时还没做,因为这个有点麻烦而且使用这个插件的人好像不是很多。。。
等以后有时间了可能会加上或者再爬一遍数据
至少我一直在用
以后会的
没有电脑不知道怎么安装脚本b38
然后代码直接复制这个 https://paste.ubuntu.com/p/H7rzR9CS9y/
reject(xhr);
}
});
});
}
}”结尾的那段代码直接粘贴到创建组件的“脚本”那栏吗?还需要别的修改嘛?下面的样式写什么呢…
按说不应该发生这种事,因为整合成组件后,这块代码其实就属于bgm自己的代码了,而且代码里的链接也用了https
一定要访问的话大概链接是这样的
https://windrises.net/bgmtools/r ... pe=subject&id=8
不过这个组件的数据库已经两年没更新了,新数据是没有的。