一种协同过滤的推荐模块、方法、电子设备及存储介质与流程

文档序号:21780362发布日期:2020-08-07 20:00阅读:164来源:国知局
一种协同过滤的推荐模块、方法、电子设备及存储介质与流程

本发明涉及推荐算法技术领域,特别涉及一种协同过滤的推荐模块、方法、电子设备及存储介质。



背景技术:

伴随着21世纪互联网技术的快速发展,特别是近年来移动互联网的极速发展,互联网及其衍生品已经变为人们生活不能够分割的一部分。同时,在互联网超高速发展的这几年,全球互联网特别是移动设备的互联网流量也呈现出指数级的飞速增长。各种搭载在互联网上的应用,比如物联网,人工智能监控,智能金融交易等等,每时每刻都在产生大量的数据。推荐系统就是在这个信息大爆炸的时代大背景下应运而生的,并且已经在各大门户网站,特别是电子商务网站大规模应用。推荐系统就是根据消费者的各种爱好和习惯,特别是历史购买记录,计算出该消费者的潜在喜爱物品,或者是将用户的潜在新闻等推送给用户。如今,当当网、豆瓣阅读等各大网站提供了图书检索、图书评论、社会化标签等服务,为读者提供了图书推荐服务,但是受限于推荐策略单一、没有匹配用户个性化需求等方面,推荐效果还需进一步提升。传统的推荐算法主要有基于用户或项目的协同过滤方法,前者通过考察用户之间的相似喜好进行推荐,而后者通过考察项目之间的相似程度进行推荐;基于内容的推荐方法,这种方法需要额外的文本信息,并通过构建用户偏好提供相似项目推荐。但是,传统的推荐算法缺乏对情境的应用和感知,使用的显式反馈信息较为稀疏。比如用户的评分对物品之间的相似性的计算就尤为重要,若用户的评分数据是一个过于稀疏的评分矩阵,物品的相似性计算结果的质量将会非常低,将会大大降低推荐结果的质量。同时传统的推荐算法还具有用户冷启动问题,而且用户的兴趣是会随着时间的变化而发生变化,这一点传统的推荐算法不能很好的解决。



技术实现要素:

针对上述问题,本发明提出一种协同过滤的推荐模块、方法、电子设备及存储介质,改善因评分数据特征稀疏或冷启动问题导致推荐效果不好的情况,从而提高推荐的效果,旨在至少解决现有技术或相关技术中存在的技术问题之一。

本发明提出的一种协同过滤的推荐模块、方法、电子设备及存储介质,传统的基于物品的协同过滤算法存在数据的稀疏性问题,因此本发明提出一种结合用户搜索词和用户浏览记录信息来优化基于传统的基于物品的协同过滤算法的思路,并在传统基于物品的协同过滤算法的物品相似度计算中加入时间因素和用户平均值平滑处理。

一种协同过滤的推荐模块,用于对用户进行内容的推荐,所述推荐模块包括第一推荐模块、第二推荐模块和第三推荐模块。

更进一步地,所述第一推荐模块基于搜索词和用户浏览信息记录进行推荐,根据搜索词进行特征提取,并分析关键词在内容名中的tf-idf值,以获得内容与关键词之间的相似度表,当获取到用户的搜索词,先对所述关键词进行遍历对比,返回用户搜索的内容列表形成用户感兴趣的第一推荐列表,同时根据用户浏览记录生成第二推荐列表,将第一推荐列表与第二推荐列表结合生成第三推荐列表。

更进一步地,所述第二推荐模块基于时间因素和物品的协同过滤进行用户信息推荐,建立物品用户评分表,构建物品同现矩阵,通过时间衰减函数与平滑处理计算物品相似度,获取用户对评分物品的偏好,结合用户对物品产生行为的时间因子,根据物品分值大小,形成第四推荐列表。

更进一步地,所述第三推荐模块基于计算内容的热度值进行用户推荐,对内容信息表进行分析,得到内容的浏览次数、评论数和内容的创建时间,以计算内容的热度值,并根据所述内容的热度值形成第五推荐列表。

同时,又提出一种协同过滤的推荐方法,应用于所述权利要求1至8任一项所述的协同过滤的推荐模块,其特征在于,所述推荐方法包括:

步骤1,先判断用户是否是新用户,如果是新用户,则执行热门推荐,基于热度值的大小进行用户信息推荐,如果不是新用户则转入步骤2;

步骤2,判断用户评分是否大于第一设定阈值,如果小于等于第一设定阈值,则基于搜索词和用户浏览信息记录进行用户信息推荐,如果大于第一设定阈值,则转入步骤3;

步骤3,基于时间因素和物品的协同过滤进行用户信息推荐。

更进一步地,所述步骤2包括:

步骤201,对内容分词和停用词进行处理;

步骤202,对关键词特征进行提取,采用tf-idf的关键词特征提取算法,并加入平滑数据处理,形成内容-关键词表。

更进一步地,所述步骤3包括:

步骤301,建立物品与用户对应的评分表;

步骤302,构建物品的同现矩阵,计算物品相似度,相似度计算中加入时间衰减函数和平滑处理;

步骤303,获取用户对评分物品的偏好,通过时间因子对用户偏好进行计算;

步骤304,物品得分值的从大到小排序,形成推荐列表。

更进一步地,所述步骤2还包括:

步骤203,得到内容-关键词表后,根据关键词来计算不同内容之间的相似度。

还提出了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求5至8任一项所述的协同过滤的推荐方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求5至8任一项所述的协同过滤的推荐方法的步骤。

算法流程主要分为3个模块:(1)基于搜索词和用户浏览信息记录的推荐模块。(2)基于时间因素和物品的协同过滤推荐模块。(3)热门推荐模块。

算法流程:先判断用户是否是新用户,如果是新用户,则执行热门推荐,并返回topn个热门视频列表给用户,从而解决用户冷启动问题。如果不是新用户,则统计该用户的评分次数,在这里用户点赞和评论都默认为用户对视频的评分为8分(满分10分)。通过判断用户评分次数是否大于某个阈值,如果小于等于阈值,则说明用户的显式数据较少,则使用用户的搜索词和浏览记录信息记录的推荐模块推荐,并返回topn个视频列表给用户;如果大于阈值,则采用基于时间因素和物品的协同过滤算法来进行推荐,并返回topn个视频列表给用户。下面进行各个模块的详细介绍。

(1)基于搜索词和用户浏览信息记录的推荐模块

数据来源和处理:豆瓣电影播放网站是一个有着非常丰富电影资源的播放网站,因此本文数据的来源主要来自于爬取豆瓣电影播放网站的数据,在爬取过程中,结合微视频共享社区系统的需求,遇到不合格的数据,则手动从其他平台获取数据对不合格的数据进行修正。如果最后找不到合适的电影数据,就删除掉这条电影记录。最终得到了46500条电影信息,19万条评分信息和9035个用户,最终得到电影信息表和用户评分记录表。

当用户的评分次数小于或等于某个阈值时,采用基于搜索词和用户浏览信息记录推荐模块来生成topn推荐列表。由上节可以知道数据的一些结构数据,在本文的研究中,选择电影名来进行关键词的提取。之所以选择电影名,是因为电影名往往更能代表一个电影视频,它是对电影的一个高度的概括和总结,并且字数不会很长,更适合用作关键词特征的提取。

具体的步骤如下:

步骤201,电影名分词和停用词的处理。分词前首先先对不具有参考意义的词和停用词进行筛除,比如一些感叹词、单音节词、标点符号等词。在本文中,采取的是一个开源的停用词库进行停用词的筛除。分词在电影名关键词的提取中起到了十分重要的作用。分词,顾名思义就是将一个句子或一段话分成若干个词汇,获得这段话或者这个句子的关键词集合。在这里,分词采用的是开源的工具库jieba工具来进行分词。jieba工具里有一个cut方法,方法接受四个输入参数:需要分词的字符串;cut_all参数用来控制是否采用全模式;hmm参数用来控制是否使用hmm模型;use_paddle参数用来控制是否使用paddle模式下的分词模式,paddle模式采用延迟加载方式,通过enable_paddle接口安装paddlepaddle-tiny,并且import相关代码。paddle模式,利用paddlepaddle深度学习框架,训练序列标注(双向gru)网络模型实现分词。同时支持词性标注。hmm模型是指隐马尔可夫模型(hiddenmarkovmodel,hmm),是一种统计学的模型,其描述的是一种求一个含有隐含未知参数的计算过程。本文中通过jieba工具的cut方法对需要分词的字符串采用全模式和hww算法,这样子可以提高分词的准确性和合理性。

步骤202,关键词特征提取。电影名的关键词特征提取是这个推荐模块最重要的一步。在这里采取了一种基于tf-idf的关键词特征提取算法。在传统的tf-idf基础上加入了平滑处理,最终计算公式如(1.1)(1.2)(1.3)所示。

tf-idf(tk,dj)=tf(tk,dj)·idf(tk,dj)(1.3)

其中tf(tk,dj)为第k个词在第j个视频描述信息中出现的频率,tf值越大,说明了该词出现次数越多,越具有代表性。n为视频描述信息总数,nk为包括第k个词的视频描述信息数量,根据逆文本频率的概念,nk值越小,则说明这个词在视频信息描述中比较稀有,也越能代表这个视频。

通过上面几个式子,获得每一步电影名中的每个关键词在电影名中的tf-idf值,并且将关键词按照tf-idf值从大到小排序。在得到每部电影的关键词后,可以生成一个电影-关键词表。

步骤203,得到电影-关键词表后,根据关键词来计算不同电影之间的相似度,并把相似度大于0的原电影、相似电影和相似度值返回并保存于电影相似度表中,便于后续用户根据搜索词和浏览记录来电影相似表中查找其搜索过或者浏览过电影的相似电影,最终将相似度比较高的topn个电影倒排生成推荐列表返回给用户。相似度计算采用杰卡德相似系数来计算,如式(1.4)所示。

其中n(a)表示喜欢物品a的用户数,|n(a)∩n(b)|表示同时喜欢物品a和b的用户数。

基于关键词来计算出电影之间的相似度j。相似度j越大,则说明两部电影之间越相似。

步骤204,生成topn推荐列表。通过步骤203可以得到电影的相似度表,当获取到用户的搜索词,先去电影-关键词表中进行遍历对比,返回用户可能搜索的电影列表作为用户感兴趣的电影列表a。同时也结合用户的浏览记录去电影相似表中查找与用户浏览过的电影相似度较高的topn个电影,并倒排生成topn个推荐列表b。然后将推荐表a和推荐表b结合生成一个新的推荐列表返回。

(2)基于时间因素和物品的协同过滤推荐模块

当用户的评分次数大于阈值时,采用时间因素和物品的协同过滤推荐模块来生成topn推荐列表。因为用户的兴趣是会随着时间在变化,如果在进行推荐模型的构建时不考虑时间因素进去,会影响到推荐结果和推荐效果。具体步骤如下:

步骤301,建立物品-用户评分表。根据爬取的数据得到的用户评分用户评分记录表可以得到用户对电影的评分值、评分时间的信息。根据用户的评分建立物品-用户评分表。

步骤302,构建物品的同现矩阵,计算物品相似度。通过物品-用户表可以得到用户物品的倒排表,由此获得了同时喜欢两个物品的用户数,并得到一个j×j的同现矩阵。由于用户的兴趣是随着时间进行变化的以及对热门电影实行惩罚机制,因此这里在相似度计算公式中加入了时间衰减函数和平滑处理。如式(1.5)所示。

其中t(|tui-tuj|)为时间衰减函数,具体形式如下:

其中α为时间衰减因子,tui表示用户u对物品i产生行为的时间,tuj表示用户u对物品j产生行为的时间,n(i)表示喜欢物品i的用户数,n(j)表示喜欢物品j的用户数,n(u)表示用户u的评分物品的集合。

步骤303获取用户对评分物品的偏好。通过步骤202中加入了时间衰减函数得到了物品间的相似度wi,j,这一步提出了一种基于时间因子的用户偏好计算,公式如式(1.6)所示。

其中p(u,i)式用户u对物品i的兴趣偏好,t(t0-tuj)式时间衰减函数,具体形式如下:

其中t0表示当前时间,tuj表示用户u对物品j产生行为的时间,β表示为时间因子。

步骤304,生成topn推荐列表。根据物品得分值的从大到小排序,得到大小为topn的倒排表,并推荐给目标用户。

(3)热门推荐模块

推荐系统是基于用户大量的历史行为来进行事物呈现,但是在实际的应用场景中并不是所有的用户都有历史行为数据,比如刚刚注册的新用户。这就是用户冷启动问题。而热门推荐模块是为了解决用户的冷启动问题。通过对电影信息表分析,得到电影的浏览次数、评论数和电影的创建时间。因此可以通过如式(1.7)所示计算电影的热度值。

hotvalue=seecount×0.3+commentcount×0.6+changetime×0.1(1.7)

其中hotvalue是电影的热度值,seecount是浏览次数,commentcount是评论数,changetime是电影创建时间和目前时间的时间差。

通过式(1.7)的计算,可以得到每个电影的热度值,并进行倒排,生成topn列表,保存到电影热度值表中。

系统整体架构:系统有三个部分组成,用户信息模块、电影信息模块和推荐模块组成。在这个系统中,用户访问网站后,需要输入用户名和密码登录,以从数据库中提取相关的数据。如果用户没有注册过,则提示其注册。进入注册页面后,提示其需要输入用户名、密码等等。用户进入系统后,系统会迅速的从推荐引擎的数据库中,读取事先计算好的潜在喜爱电影,并展示在前台。观看完电影后,用户可以对电影作出评价,包括文字评论、电影评分、点赞、分享和收藏等。提交后,数据将会进入数据库,用于下一次的推荐列表更新。而用户登录后,可以通过搜索功能来搜索相应的电影,然后将搜索词通过后台保存到用户搜索词表中。推荐模块通过用户的搜索词去和实现训练完得到的电影名-关键词表中的关键词做对比,从而实现向用户进行兴趣偏好的推荐。

以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

本系统前端是基于微信小程序,系统最核心的部分是推荐模块部分。通过这种融合搜索词和时间因子的协同过滤推荐算法,使本系统可以针对新用户和老用户提供不一样的推荐,对于新注册用户,系统进行视频热门推荐,以此来解决冷启动问题;对于老用户,系统前台获取用户对电影的评分、浏览日志记录、点赞信息、收藏信息以及搜索词信息等显式数据或者隐式数据,同时进入到后台处理并分别保存到数据库,后台设置一个定时任务,定期针对于用户的历史行为数据进行推荐模型的训练,从数据库中提取对应的表的数据,当获取目标用户评分次数小于等于某个阈值时,则进入基于搜索词和用户浏览信息记录的推荐部分,根据获取到的相关用户的搜索词以及浏览信息记录来匹配相似度较高的视频,生成topn推荐列表返回给目标用户;当获取目标用户评分次数大于某个阈值,则进入基于时间因素和物品的协同过滤推荐部分,向用户推荐和最近感兴趣的视频的topn推荐列表。系统可以根据目标用户需要为其推荐视频列表,并且能够根据评分次数是否达到某个阈值来选择调用不同推荐算法进行推荐,优化推荐效果。相比于传统的推荐算法的推荐效果得到了较好的改善。

附图说明

图1是本发明的整体算法流程图;

图2是搜索词和视频浏览信息记录的推荐模块;

图3是基于时间因素和物品的协同过滤推荐模块;

图4是整体系统架构图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。

实施例一:

参见附图1-3,一种协同过滤的推荐模块,用于对用户进行内容的推荐,所述推荐模块包括第一推荐模块、第二推荐模块和第三推荐模块。

更进一步地,所述第一推荐模块基于搜索词和用户浏览信息记录进行推荐,根据搜索词进行特征提取,并分析关键词在内容名中的tf-idf值,以获得内容与关键词之间的相似度表,当获取到用户的搜索词,先对所述关键词进行遍历对比,返回用户搜索的内容列表形成用户感兴趣的第一推荐列表,同时根据用户浏览记录生成第二推荐列表,将第一推荐列表与第二推荐列表结合生成第三推荐列表。

更进一步地,所述第二推荐模块基于时间因素和物品的协同过滤进行用户信息推荐,建立物品用户评分表,构建物品同现矩阵,通过时间衰减函数与平滑处理计算物品相似度,获取用户对评分物品的偏好,结合用户对物品产生行为的时间因子,根据物品分值大小,形成第四推荐列表。

更进一步地,所述第三推荐模块基于计算内容的热度值进行用户推荐,对内容信息表进行分析,得到内容的浏览次数、评论数和内容的创建时间,以计算内容的热度值,并根据所述内容的热度值形成第五推荐列表。

同时,又提出一种协同过滤的推荐方法,应用于所述权利要求1至8任一项所述的协同过滤的推荐模块,其特征在于,所述推荐方法包括:

步骤1,先判断用户是否是新用户,如果是新用户,则执行热门推荐,基于热度值的大小进行用户信息推荐,如果不是新用户则转入步骤2;

步骤2,判断用户评分是否大于第一设定阈值,如果小于等于第一设定阈值,则基于搜索词和用户浏览信息记录进行用户信息推荐,如果大于第一设定阈值,则转入步骤3;

步骤3,基于时间因素和物品的协同过滤进行用户信息推荐。

更进一步地,所述步骤2包括:

步骤201,对内容分词和停用词进行处理;

步骤202,对关键词特征进行提取,采用tf-idf的关键词特征提取算法,并加入平滑数据处理,形成内容-关键词表。

更进一步地,所述步骤3包括:

步骤301,建立物品与用户对应的评分表;

步骤302,构建物品的同现矩阵,计算物品相似度,相似度计算中加入时间衰减函数和平滑处理;

步骤303,获取用户对评分物品的偏好,通过时间因子对用户偏好进行计算;

步骤304,物品得分值的从大到小排序,形成推荐列表。

更进一步地,所述步骤2还包括:

步骤203,得到内容-关键词表后,根据关键词来计算不同内容之间的相似度。

还提出了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求5至8任一项所述的协同过滤的推荐方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求5至8任一项所述的协同过滤的推荐方法的步骤。

算法流程主要分为3个模块:(1)基于搜索词和用户浏览信息记录的推荐模块。(2)基于时间因素和物品的协同过滤推荐模块。(3)热门推荐模块。

算法流程:先判断用户是否是新用户,如果是新用户,则执行热门推荐,并返回topn个热门视频列表给用户,从而解决用户冷启动问题。如果不是新用户,则统计该用户的评分次数,在这里用户点赞和评论都默认为用户对视频的评分为8分(满分10分)。通过判断用户评分次数是否大于某个阈值,如果小于等于阈值,则说明用户的显式数据较少,则使用用户的搜索词和浏览记录信息记录的推荐模块推荐,并返回topn个视频列表给用户;如果大于阈值,则采用基于时间因素和物品的协同过滤算法来进行推荐,并返回topn个视频列表给用户。下面进行各个模块的详细介绍。

(1)基于搜索词和用户浏览信息记录的推荐模块

数据来源和处理:豆瓣电影播放网站是一个有着非常丰富电影资源的播放网站,因此本文数据的来源主要来自于爬取豆瓣电影播放网站的数据,在爬取过程中,结合微视频共享社区系统的需求,遇到不合格的数据,则手动从其他平台获取数据对不合格的数据进行修正。如果最后找不到合适的电影数据,就删除掉这条电影记录。最终得到了46500条电影信息,19万条评分信息和9035个用户,最终得到电影信息表和用户评分记录表。

当用户的评分次数小于或等于某个阈值时,采用基于搜索词和用户浏览信息记录推荐模块来生成topn推荐列表。由上节可以知道数据的一些结构数据,在本文的研究中,选择电影名来进行关键词的提取。之所以选择电影名,是因为电影名往往更能代表一个电影视频,它是对电影的一个高度的概括和总结,并且字数不会很长,更适合用作关键词特征的提取。

具体的步骤如下:

步骤201,电影名分词和停用词的处理。分词前首先先对不具有参考意义的词和停用词进行筛除,比如一些感叹词、单音节词、标点符号等词。在本文中,采取的是一个开源的停用词库进行停用词的筛除。分词在电影名关键词的提取中起到了十分重要的作用。分词,顾名思义就是将一个句子或一段话分成若干个词汇,获得这段话或者这个句子的关键词集合。在这里,分词采用的是开源的工具库jieba工具来进行分词。jieba工具里有一个cut方法,方法接受四个输入参数:需要分词的字符串;cut_all参数用来控制是否采用全模式;hmm参数用来控制是否使用hmm模型;use_paddle参数用来控制是否使用paddle模式下的分词模式,paddle模式采用延迟加载方式,通过enable_paddle接口安装paddlepaddle-tiny,并且import相关代码。paddle模式,利用paddlepaddle深度学习框架,训练序列标注(双向gru)网络模型实现分词。同时支持词性标注。hmm模型是指隐马尔可夫模型(hiddenmarkovmodel,hmm),是一种统计学的模型,其描述的是一种求一个含有隐含未知参数的计算过程。本文中通过jieba工具的cut方法对需要分词的字符串采用全模式和hww算法,这样子可以提高分词的准确性和合理性。

步骤202,关键词特征提取。电影名的关键词特征提取是这个推荐模块最重要的一步。在这里采取了一种基于tf-idf的关键词特征提取算法。在传统的tf-idf基础上加入了平滑处理,最终计算公式如(1.1)(1.2)(1.3)所示。

tf-idf(tk,dj)=tf(tk,dj)·idf(tk,dj)(1.3)

其中tf(tk,dj)为第k个词在第j个视频描述信息中出现的频率,tf值越大,说明了该词出现次数越多,越具有代表性。n为视频描述信息总数,nk为包括第k个词的视频描述信息数量,根据逆文本频率的概念,nk值越小,则说明这个词在视频信息描述中比较稀有,也越能代表这个视频。

通过上面几个式子,获得每一步电影名中的每个关键词在电影名中的tf-idf值,并且将关键词按照tf-idf值从大到小排序。在得到每部电影的关键词后,可以生成一个电影-关键词表。

步骤203,得到电影-关键词表后,根据关键词来计算不同电影之间的相似度,并把相似度大于0的原电影、相似电影和相似度值返回并保存于电影相似度表中,便于后续用户根据搜索词和浏览记录来电影相似表中查找其搜索过或者浏览过电影的相似电影,最终将相似度比较高的topn个电影倒排生成推荐列表返回给用户。相似度计算采用杰卡德相似系数来计算,如式(1.4)所示。

其中n(a)表示喜欢物品a的用户数,|n(a)∩n(b)|表示同时喜欢物品a和b的用户数。

基于关键词来计算出电影之间的相似度j。相似度j越大,则说明两部电影之间越相似。

步骤204,生成topn推荐列表。通过步骤203可以得到电影的相似度表,当获取到用户的搜索词,先去电影-关键词表中进行遍历对比,返回用户可能搜索的电影列表作为用户感兴趣的电影列表a。同时也结合用户的浏览记录去电影相似表中查找与用户浏览过的电影相似度较高的topn个电影,并倒排生成topn个推荐列表b。然后将推荐表a和推荐表b结合生成一个新的推荐列表返回。

(2)基于时间因素和物品的协同过滤推荐模块

当用户的评分次数大于阈值时,采用时间因素和物品的协同过滤推荐模块来生成topn推荐列表。因为用户的兴趣是会随着时间在变化,如果在进行推荐模型的构建时不考虑时间因素进去,会影响到推荐结果和推荐效果。具体步骤如下:

步骤301,建立物品-用户评分表。根据爬取的数据得到的用户评分用户评分记录表可以得到用户对电影的评分值、评分时间的信息。根据用户的评分建立物品-用户评分表。

步骤302,构建物品的同现矩阵,计算物品相似度。通过物品-用户表可以得到用户物品的倒排表,由此获得了同时喜欢两个物品的用户数,并得到一个j×j的同现矩阵。由于用户的兴趣是随着时间进行变化的以及对热门电影实行惩罚机制,因此这里在相似度计算公式中加入了时间衰减函数和平滑处理。如式(1.5)所示。

其中t(|tui-tuj|)为时间衰减函数,具体形式如下:

其中α为时间衰减因子,tui表示用户u对物品i产生行为的时间,tuj表示用户u对物品j产生行为的时间,n(i)表示喜欢物品i的用户数,n(j)表示喜欢物品j的用户数,n(u)表示用户u的评分物品的集合。

步骤303获取用户对评分物品的偏好。通过步骤202中加入了时间衰减函数得到了物品间的相似度wi,j,这一步提出了一种基于时间因子的用户偏好计算,公式如式(1.6)所示。

其中p(u,i)式用户u对物品i的兴趣偏好,t(t0-tuj)式时间衰减函数,具体形式如下:

其中t0表示当前时间,tuj表示用户u对物品j产生行为的时间,β表示为时间因子。

步骤304,生成topn推荐列表。根据物品得分值的从大到小排序,得到大小为topn的倒排表,并推荐给目标用户。

(3)热门推荐模块

推荐系统是基于用户大量的历史行为来进行事物呈现,但是在实际的应用场景中并不是所有的用户都有历史行为数据,比如刚刚注册的新用户。这就是用户冷启动问题。而热门推荐模块是为了解决用户的冷启动问题。通过对电影信息表分析,得到电影的浏览次数、评论数和电影的创建时间。因此可以通过如式(1.7)所示计算电影的热度值。

hotvalue=seecount×0.3+commentcount×0.6+changetime×0.1(1.7)

其中hotvalue是电影的热度值,seecount是浏览次数,commentcount是评论数,changetime是电影创建时间和目前时间的时间差。

通过式(1.7)的计算,可以得到每个电影的热度值,并进行倒排,生成topn列表,保存到电影热度值表中。

系统整体架构:系统有三个部分组成,用户信息模块、电影信息模块和推荐模块组成。在这个系统中,用户访问网站后,需要输入用户名和密码登录,以从数据库中提取相关的数据。如果用户没有注册过,则提示其注册。进入注册页面后,提示其需要输入用户名、密码等等。用户进入系统后,系统会迅速的从推荐引擎的数据库中,读取事先计算好的潜在喜爱电影,并展示在前台。观看完电影后,用户可以对电影作出评价,包括文字评论、电影评分、点赞、分享和收藏等。提交后,数据将会进入数据库,用于下一次的推荐列表更新。而用户登录后,可以通过搜索功能来搜索相应的电影,然后将搜索词通过后台保存到用户搜索词表中。推荐模块通过用户的搜索词去和实现训练完得到的电影名-关键词表中的关键词做对比,从而实现向用户进行兴趣偏好的推荐。

以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

实施例二

参见附图4,本系统最核心的部分是推荐模块部分,通过这种融合搜索词和时间因子的协同过滤推荐算法,使本系统可以针对新用户和老用户提供不一样的推荐,对于新注册用户,系统进行视频热门推荐,以此来解决冷启动问题;对于老用户,系统前台获取用户对电影的评分、浏览日志记录、点赞信息、收藏信息以及搜索词信息等显式数据或者隐式数据,同时进入到后台处理并分别保存到数据库,后台设置一个定时任务,定期针对于用户的历史行为数据进行推荐模型的训练,从数据库中提取对应的表的数据,当获取目标用户评分次数小于等于某个阈值时,则进入基于搜索词和用户浏览信息记录的推荐部分,根据获取到的相关用户的搜索词以及浏览信息记录来匹配相似度较高的视频,生成topn推荐列表返回给目标用户;当获取目标用户评分次数大于某个阈值,则进入基于时间因素和物品的协同过滤推荐部分,向用户推荐和最近感兴趣的视频的topn推荐列表。系统可以根据目标用户需要为其推荐视频列表,并且能够根据评分次数是否达到某个阈值来选择调用不同推荐算法进行推荐,优化推荐效果。相比于传统的推荐算法的推荐效果得到了较好的改善。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,平台服务器,或者网络设备等)执行本申请各个实施例所述游戏中虚拟对象的显示控制方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1