本申请是申请日为2016年12月26日、申请号为201611217545.3、发明名称为“一种实时推送信息的方法和装置”的专利申请的分案申请。
本发明涉及通讯领域,特别是涉及一种实时推送信息的方法和装置。
背景技术:
现有技术中,很多系统都实现了个性化推荐功能,但由于数据量比较大,推荐结果是由离线计算出来的,要定期的更新推荐模型,很多系统最快的也只能做到小时级的更新,而且,有很大部分的推荐是依赖于搜索,然而,这些推荐结果没有考虑到用户的实时性行为,失去了用户兴趣的时效性,以至于推荐结果不准确。例如,为某一用户推荐的是a区的400~500万的房源,然而,该用户搜索的是b区房源,即希望看到的是b区200~300万的房源。
因此,基于离线模型且脱离了实时搜索进行的推荐,推荐速度较慢,也无法实现真正的实时个性化推荐,系统性能较差,用户体验较低。
技术实现要素:
本发明提供一种实时推送信息的方法和装置,用以解决现有技术的如下问题:基于离线模型且脱离了实时搜索进行的推荐,推荐速度较慢,也无法实现真正的实时个性化推荐,系统性能较差,用户体验较低。
为解决上述技术问题,一方面,本发明提供一种实时推送信息的方法,包括:通过发布订阅消息系统实时接收用户的当前行为数据,并将所述当前行为数据保存在数据库中;从所述数据库中获取最接近所述当前行为数据发生时刻前的n个历史行为数据,并确定所述n个历史行为数据对应的n个项目item,其中,所述n为正整数;根据item倒查表分别计算所述n个item中每个item与所述当前行为数据对应的item的相似度,并根据所述相似度更新存储在所述数据库中的相似度矩阵。
可选的,根据item倒查表分别计算所述n个item中每个item与所述当前行为数据对应的item的相似度,包括:从所述数据库中获取每个所述item的倒查表,其中,所述倒查表至少包括以下信息之一:发生时间,所处类别,搜索字段,用户年龄,搜索地域;根据所述倒查表和相似度公式计算每个所述item与所述当前行为数据对应的item的相似度。
可选的,根据所述相似度更新存储在所述数据库中的相似度矩阵之后,还包括:更新所述当前行为数据对应的item的倒查表并存储在所述数据库中。
可选的,根据所述相似度更新存储在所述数据库中的相似度矩阵之后,还包括:根据用户的m个历史行为数据查询所述数据库,以根据所述相似度矩阵确定所述m个历史行为数据对应item的p个待推荐item;按照预设筛选条件从所述p个待推荐的item中选择q个item推荐至所述用户;其中,所述m、p、q均为正整数,p大于等于q。
可选的,按照预设筛选条件从所述p个待推荐的item中选择q个item推荐至所述用户,包括:在所述预设筛选条件为多个的情况下,分别按照每个所述预设筛选条件从所述p个待推荐的item中选择q个item,以得到多组推荐item;按照所述预设筛选条件的优先级由高到低的顺序依次推荐每组item至所述用户。
另一方面,本发明还提供一种实时推送信息的装置,包括:接收模块,用于通过发布订阅消息系统实时接收用户的当前行为数据;保存模块,用于将所述当前行为数据保存在数据库中;获取模块,用于从所述数据库中获取最接近所述当前行为数据发生时刻前的n个历史行为数据,并确定所述n个历史行为数据对应的n个项目item,其中,所述n为正整数;计算模块,用于根据item倒查表分别计算所述n个item中每个item与所述当前行为数据对应的item的相似度,并根据所述相似度更新存储在所述数据库中的相似度矩阵。
可选的,所述计算模块包括:第一计算单元,用于从所述数据库中获取每个所述item的倒查表,其中,所述倒查表至少包括以下信息之一:发生时间,所处类别,搜索字段,用户年龄,搜索地域;第二计算单元,用于根据所述倒查表和相似度公式计算每个所述item与所述当前行为数据对应的item的相似度。
可选的,所述保存模块,还用于更新所述当前行为数据对应的item的倒查表并存储在所述数据库中。
可选的,还包括:推荐模块,用于根据用户的m个历史行为数据查询所述数据库,以根据所述相似度矩阵确定所述m个历史行为数据对应item的p个待推荐item;按照预设筛选条件从所述p个待推荐的item中选择q个item推荐至所述用户;其中,所述m、p、q均为正整数,p大于等于q。
可选的,所述推荐模块,还用于在所述预设筛选条件为多个的情况下,分别按照每个所述预设筛选条件从所述p个待推荐的item中选择q个item,以得到多组推荐item;按照所述预设筛选条件的优先级由高到低的顺序依次推荐每组item至所述用户。
本发明实时接收用户的当前行为数据,并对其进行保存,然后从保存的数据库中获取用户之前的历史行为数据,以确定各个历史行为数据对应的item,并根据每个item对应的item倒查表计算与当前行为数据对应的item的相似度,进而根据相似度来推送相关信息,整个过程采取根据实时历史行为数据进行计算,实效性强,推送结果较为符合用户的意愿,用户体验较好,解决了现有技术的如下问题:基于离线模型且脱离了实时搜索进行的推荐,推荐速度较慢,也无法实现真正的实时个性化推荐,系统性能较差,用户体验较低。
附图说明
图1是本发明第一实施例中实时推送信息的方法的流程图;
图2是本发明第二实施例中实时推送信息的装置的结构示意图;
图3是本发明第二实施例中实时推送信息的装置的优选结构示意图;
图4是本发明第三实施例中实时更新相似度矩阵的流程图。
具体实施方式
为了解决现有技术的如下问题:基于离线模型且脱离了实时搜索进行的推荐,推荐速度较慢,也无法实现真正的实时个性化推荐,系统性能较差,用户体验较低;本发明提供了一种实时推送信息的方法和装置,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本发明第一实施例提供一种实时推送信息的方法,该方法的流程如图1所示,包括步骤s102至s106:
s102,通过发布订阅消息系统实时接收用户的当前行为数据,并将当前行为数据保存在数据库中。
s104,从数据库中获取最接近当前行为数据发生时刻前的n个历史行为数据,并确定n个历史行为数据对应的n个项目item,其中,n为正整数。
s106,根据item倒查表分别计算n个item中每个item与当前行为数据对应的item的相似度,并根据相似度更新存储在数据库中的相似度矩阵。
实现时,上述的发布订阅消息系统可以是kafka系统,该kafka系统就是实时接收用户行为的一个系统;对于数据库,其可以是多种类型的数据库,例如较为常用的redis数据库。
本发明实施例实时接收用户的当前行为数据,并对其进行保存,然后从保存的数据库中获取用户之前的历史行为数据,以确定各个历史行为数据对应的item,并根据每个item对应的item倒查表计算与当前行为数据对应的item的相似度,进而根据相似度来推送相关信息,整个过程采取根据实时历史行为数据进行计算,实效性强,推送结果较为符合用户的意愿,用户体验较好,解决了现有技术的如下问题:基于离线模型且脱离了实时搜索进行的推荐,推荐速度较慢,也无法实现真正的实时个性化推荐,系统性能较差,用户体验较低。
根据item倒查表分别计算n个item中每个item与当前行为数据对应的item的相似度时,先从数据库中获取每个item的倒查表,其中,倒查表至少包括以下信息之一:发生时间,所处类别,搜索字段,用户年龄,搜索地域;根据倒查表和相似度公式计算每个item与当前行为数据对应的item的相似度。其中,相似度公式可以采用较为经典的jaccard公式。
如果倒查表包括发生时间和搜索字段两项,即itema(发生时间,搜索字段),则在与当前行为数据对应的itemb比较时,将itema的倒查表和itemb的倒查表进行相似度计算,即计算发生时间和搜索字段的总体相似度。
在计算完相似度,并根据相似度更新存储在数据库中的相似度矩阵之后,还需要更新当前行为数据对应的item的倒查表,并将其存储在数据库中。
在进行了上述的各种更新之后,需要根据更新的结果为当前用户或者后续的用户进行推荐。本实施例以为当前用户进行推荐为例,其推荐过程如下:在更新完数据库后,先根据用户的m个历史行为数据查询数据库,以根据相似度矩阵确定m个历史行为数据对应item的p个待推荐item。该过程中,由于每个item都对应着多个相似度较高的item,所以,由m个item可确定p个待推荐的item。
在选出p个待推荐的item之后,按照预设筛选条件从p个待推荐的item中选择q个item推荐至用户。在该过程中,预设筛选条件可以是每个item待推荐的所有item中前3个item,也可以是相似度计算确定相似度超过一定相似度值的那些item。其中,上述m、p、q均为正整数,p大于等于q。
在按照预设筛选条件从p个待推荐的item中选择q个item推荐至用户时,其预设筛选条件可以为多个,也可以为一个。在预设筛选条件为多个的情况下,分别按照每个预设筛选条件从p个待推荐的item中选择q个item,以得到多组推荐item;再按照预设筛选条件的优先级由高到低的顺序依次推荐每组item至用户。
本发明上述过程通过不同方式来确定多组推荐item,推荐过程更加多元化,更贴近用户需求。
本发明第二实施例一种实时推送信息的装置,该装置的结构示意如图2所示,包括:
接收模块10,用于通过发布订阅消息系统实时接收用户的当前行为数据;保存模块20,与接收模块10耦合,用于将当前行为数据保存在数据库中;获取模块30,与保存模块20耦合,用于从数据库中获取最接近当前行为数据发生时刻前的n个历史行为数据,并确定n个历史行为数据对应的n个项目item,其中,n为正整数;计算模块40,与获取模块30耦合,用于根据item倒查表分别计算n个item中每个item与当前行为数据对应的item的相似度,并根据相似度更新存储在数据库中的相似度矩阵。
其中,上述计算模块40包括:第一计算单元,用于从数据库中获取每个item的倒查表,其中,倒查表至少包括以下信息之一:发生时间,所处类别,搜索字段,用户年龄,搜索地域;第二计算单元,与第一计算单元耦合,用于根据倒查表和相似度公式计算每个item与当前行为数据对应的item的相似度。
在实现的过程中,上述保存模块20,还用于更新当前行为数据对应的item的倒查表并存储在数据库中。
上述装置的优选结构示意如图3所示,上述装置还包括:推荐模块50,与计算模块40耦合,用于根据用户的m个历史行为数据查询数据库,以根据相似度矩阵确定m个历史行为数据对应item的p个待推荐item;按照预设筛选条件从p个待推荐的item中选择q个item推荐至用户;其中,m、p、q均为正整数,p大于等于q。
其中,推荐模块50,还用于在预设筛选条件为多个的情况下,分别按照每个预设筛选条件从p个待推荐的item中选择q个item,以得到多组推荐item;按照预设筛选条件的优先级由高到低的顺序依次推荐每组item至用户。
本实施例提供的装置在于解决个性化推荐的实时性问题,一方面能够更准确的为用户进行个性化推荐,另一方面是用户可以根据实时性的推荐结果更快进行反馈,进而可以对推荐模型进行尽快更新,使得推荐模型更加精确。
本发明第三实施例以58同城的业务场景为例进行详细说明,比如,用户在搜索查询二手房时,系统会根据离线的模型给用户推荐一些房源,这时候是没有用户行为实时性的考虑,比如:给用户推荐的均为朝阳区的400~500万的房源,但用户在浏览访问或者搜索时,其访问点击行为并不关注这类房源,而是关注通州区300~400万的房源,那么这时候,系统应该及时将推荐的房源修正为通州区300~400万的房源或者是与该用户类似(如地区、年龄、性别)的用户访问较多的房源,然而,这是现有技术中无法实现的。
为了解决上述技术问题,本发明第三实施例提供了一种实时推送信息的方法。在该方法的原理如下:
cf(协同过滤)算法是个性化推荐中最常用的推荐算法,cf算法中主要是依赖于相似度矩阵,本实施例用的是item的相似度矩阵,item可以称为条目或项目,例如58同城网站上的一个房源就可以认为是一个item,相似度矩阵可以是通过两个房源的位置、户型、价格、楼龄、学区、访问的用户类型等众多信息组成的矩阵来体现两个房源的相似度,相似度取的是用于判断集合间相似度的jaccard相似度。
实现时,只要先保存一份全量的相似度矩阵(例如,计算所有房源直接的相似度),以后用当前的用户的实时行为增量去更新相似度矩阵(例如,如果同一个用户,先后访问了两个房源,则可以认为这两个房源的相似度较高,因此,可以实时的更新这两个房源的相似度)。由于相似度矩阵实时的变化,为用户呈现的推荐结果也在实时的变化,达到了个性化推荐的实时性,同时也保证了推荐结果的新颖性和多样性。
本实施例实现实时推荐的方案分为两个过程,下面针对数据库为redis数据库,发布订阅消息系统为kafka系统为例,对每个过程进行说明。
一、实时更新相似度矩阵。该过程的流程如图4所示。
(1)首先redis中存储三种类型数据,即,用户行为数据(例如,搜索行为、点击行为、页面访问时长等)、item与item相似度矩阵(例如,记录两个房源的位置、户型、价格、楼龄等各个因素的相似度矩阵)、item倒查表(以房源为维度、记录访问该房源的用户信息,表示被哪些用户产生过行为,比如一套房源,先后被用户a、c、d搜索、点击或者浏览)。
(2)通过kafka接收实时的用户行为(比如点击等),从redis中获取该用户的历史行为(按时间倒序的topn个行为,比如最近点击的10个房源)。
(3)将用户的当前行为和历史行为进行组合得到n个item与item之间的关联性(计算多个房源直接的关联性)。
(4)从redis中得到item的倒查表,根据jaccard的公式
(5)更新用户的行为、item倒查表、相似度矩阵,并将增量的写入到redis中。
二、实时地为用户进行推荐。
(1)继续通过kafka接收实时的用户行为,保留用户最近tops个行为。
(2)根据每个用户最近的tops个行为去查询redis中相似度矩阵,以得到topd个预选的推荐item。对这d个预选的根据相关的条件(比如类别和地域等因素)进行过滤,最终得到k个推荐结果。
(3)为每个用户实时存储三种不同的推荐结果,以满足推荐的多样性。
本发明带来的有益效果:使用实时的cf算法,做到的相似度矩阵的实时的更新;cf算法可以得到不同类别的结果,满足了用户的新颖性,即不同业务之间可以进行推荐,当用户浏览二手物品的时候,我们的可以给他推荐二手车、二手房等。还有相同业务更可以进行推荐,当用户浏览二手房的时候,我们也可以给他推荐租房,合租房等;并且,从时间上看,整个过程实现了实时为用户进行推荐,在用户使用感上,任何时间上的更新进步,都会使用户体验明显增加。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
1.一种实时推送信息的方法,其特征在于,包括:
通过发布订阅消息系统实时接收用户的当前行为数据,并将所述当前行为数据保存在数据库中;
从所述数据库中获取最接近所述当前行为数据发生时刻前的n个历史行为数据,并确定所述n个历史行为数据对应的n个项目item,其中,所述n为正整数;
根据item倒查表分别计算所述n个item中每个item与所述当前行为数据对应的item的相似度,并根据所述相似度更新存储在所述数据库中的相似度矩阵;
根据更新的结果为当前用户或者后续的用户推送信息。
2.如权利要求1所述的方法,其特征在于,根据item倒查表分别计算所述n个item中每个item与所述当前行为数据对应的item的相似度,包括:
从所述数据库中获取每个所述item的倒查表,其中,所述倒查表至少包括以下信息之一:发生时间,所处类别,搜索字段,用户年龄,搜索地域;
根据所述倒查表和相似度公式计算每个所述item与所述当前行为数据对应的item的相似度。
3.如权利要求1所述的方法,其特征在于,根据所述相似度更新存储在所述数据库中的相似度矩阵之后,还包括:
更新所述当前行为数据对应的item的倒查表并存储在所述数据库中。
4.如权利要求1至3中任一项所述的方法,其特征在于,根据更新的结果为当前用户或者后续的用户推送信息,包括:
根据用户的m个历史行为数据查询所述数据库,以根据所述相似度矩阵确定所述m个历史行为数据对应item的p个待推荐item;
按照预设筛选条件从所述p个待推荐的item中选择q个item推荐至所述用户;其中,所述m、p、q均为正整数,p大于等于q。
5.如权利要求4所述的方法,其特征在于,按照预设筛选条件从所述p个待推荐的item中选择q个item推荐至所述用户,包括:
在所述预设筛选条件为多个的情况下,分别按照每个所述预设筛选条件从所述p个待推荐的item中选择q个item,以得到多组推荐item;
按照所述预设筛选条件的优先级由高到低的顺序依次推荐每组item至所述用户。
6.一种实时推送信息的装置,其特征在于,包括:
接收模块,用于通过发布订阅消息系统实时接收用户的当前行为数据;
保存模块,用于将所述当前行为数据保存在数据库中;
获取模块,用于从所述数据库中获取最接近所述当前行为数据发生时刻前的n个历史行为数据,并确定所述n个历史行为数据对应的n个项目item,其中,所述n为正整数;
计算模块,用于根据item倒查表分别计算所述n个item中每个item与所述当前行为数据对应的item的相似度,并根据所述相似度更新存储在所述数据库中的相似度矩阵;
推荐模块,用于根据更新的结果为当前用户或者后续的用户推送信息。
7.如权利要求6所述的装置,其特征在于,所述计算模块包括:
第一计算单元,用于从所述数据库中获取每个所述item的倒查表,其中,所述倒查表至少包括以下信息之一:发生时间,所处类别,搜索字段,用户年龄,搜索地域;
第二计算单元,用于根据所述倒查表和相似度公式计算每个所述item与所述当前行为数据对应的item的相似度。
8.如权利要求6所述的装置,其特征在于,
所述保存模块,还用于更新所述当前行为数据对应的item的倒查表并存储在所述数据库中。
9.如权利要求6至8中任一项所述的装置,其特征在于,
所述推荐模块,用于根据用户的m个历史行为数据查询所述数据库,以根据所述相似度矩阵确定所述m个历史行为数据对应item的p个待推荐item;按照预设筛选条件从所述p个待推荐的item中选择q个item推荐至所述用户;其中,所述m、p、q均为正整数,p大于等于q。
10.如权利要求9所述的装置,其特征在于,
所述推荐模块,还用于在所述预设筛选条件为多个的情况下,分别按照每个所述预设筛选条件从所述p个待推荐的item中选择q个item,以得到多组推荐item;按照所述预设筛选条件的优先级由高到低的顺序依次推荐每组item至所述用户。
技术总结