具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
根据本申请实施例的一个方面,提供了一种信息推送方法。可选地,该方法可以在服务器或者类似的运算装置中执行。以运行在服务器上为例,图1是根据本申请实施例的一种可选的服务器的硬件结构框图。如图1所示,服务器10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于MCU(Microcontroller Unit,微处理器)或者FPGA(Field Programmable Gate Array,现场可编程逻辑们阵列)等的处理装置)和用于存储数据的存储器104,可选地,上述服务器还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述服务器的结构造成限定。例如,服务器10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的信息推送方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器10的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个NIC(Network Interface Controller,网络适配器),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为RF(Radio Frequency,射频)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述服务器的信息推送方法,图2是根据本申请实施例的一种可选的信息推送方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,接收目标对象的客户端发送的获取请求,其中,获取请求用于获取向目标对象推送的推送信息;
步骤S204,获取向目标对象推送的目标推送信息,其中,目标推送信息包括与目标对象具有关联关系的关联对象所浏览的物品的物品信息;
步骤S206,将目标推送信息发送给客户端,以通过客户端显示目标推送信息。
可选地,上述步骤的执行主体可以为服务器、终端设备等,但不限于此,其他能够进行信息推送的装置,均可以用于执行本申请实施例中的方法。
通过本实施例,采用向目标对象推送关联对象浏览过的物品的物品信息的方式,由于向一个用户推送的推送信息包括了关联用户浏览过的物品的物品信息,而不仅仅是关联用户或者本用户购买过的物品的物品信息,解决了相关技术中的物品信息推送方式存在的由于推送的物品信息单一导致用户体验差的问题,提高了推送信息的多样性,进而提升了用户体验。
下面结合图2对本申请实施例中的信息推送方法进行解释说明。
在步骤S202中,接收目标对象的客户端发送的获取请求,其中,获取请求用于获取向目标对象推送的推送信息。
目标对象(用户)可以使用目标应用的客户端,上述目标应用可以是能够物品浏览、交换(例如,购买)功能的应用,而上述客户端为允许进行物品浏览、交换功能的客户端,例如,上述目标应用可以是能够提供在线商城的应用,通过该应用的客户端所浏览的物品为在线商城中的商品,上述交换可以是将对象的对象资源与在线商城中的商品进行的交换,也就是,使用对象所持有的金额购买在线商城中的商品。
用户在使用客户端进行物品浏览和/或交换或者其他时间,可以使用目标账号登录该客户端,也就是,该客户端为使用目标账号登录的客户端,该目标账号对应于该目标对象。
作为一种可选的实施例,通过目标对象的客户端检测到对客户端执行的目标操作,其中,目标操作用于触发获取向目标对象推送的推送信息;响应目标操作,通过客户端向服务器发送获取请求。
客户端可以检测目标对象对客户端(例如,客户端的界面显示的内容)执行的操作。如果检测到对客户端执行的目标操作,客户端可以向服务器发送获取请求。上述目标操作用于触发获取向目标对象推送的推送信息,例如,向目标对象推荐的物品信息,可以包括但不限于以下至少之一:对客户端的交换物品页面或者交换物品页面的目标区域执行的操作,上述目标操作可以是:点击,双击,滑动(上滑、下滑、左滑、右滑、或者任意角度的滑动)。对于目标操作的具体方式,本实施例中不作具体限定。
例如,用户A打开电商(电子商务)页面,电商页面可以向用户A推荐商品,则可以向后台服务器发送查询推荐商品的请求。又例如,用户A打开电商页面后,下拉电商页面,则可以向后台服务器发送查询推荐商品的请求。
服务器上可以运行有物品交易***(例如,在线商城),其可以通过网络(可以经由多个中间节点)与客户端相连。上述服务器可以是物品交易***的后台服务器,可以包括:一个或多个服务器,或者,云服务器。
服务器可以根据用户当前的行为进行实时地物品信息推送。该服务器可以接收客户端发送的获取请求,该获取请求用于获取向目标对象推送的推送信息。
通过本实施例,通过在检测到客户端执行的目标操作触发获取向目标对象推送的推送信息,可以保证向用户推送信息及时性的同时,减少客户端与服务器的交互,从而减少对用户设备的资源占用。
在步骤S204中,获取向目标对象推送的目标推送信息,其中,目标推送信息包括与目标对象具有关联关系的关联对象所浏览的物品的物品信息。
服务器接收到客户端发送的获取请求之后或者之前,可以获取向目标对象推送的目标推送信息。上述目标推送信息可以包括:与目标对象具有关联关系的关联对象所浏览的物品的物品信息,上述关联关系可以是:相似关系。
上述目标推送信息还可以包括:关联对象所交换的物品的交换信息,或者,与关联对象所交换的物品类似的物品的物品信息;目标对象所购买过的物品的物品信息,或者,与目标对象交换过的物品类似的物品(例如,消耗周期短的物品)的物品信息;目标对象所浏览过的物品的物品信息,或者,与目标对象浏览过的物品类似的物品的物品信息。
向目标对象推荐推送的目标推送信息可以是根据目标关联信息确定的,上述目标关联信息可以包括:用于表示多个对象之间的相似关系的信息和用于多个对象与多个物品之间的操作关系的信息,上述多个物品可以是:在预定时刻已被多个对象操作过的物品,预定时刻可以是接收到获取请求的时刻,或者是最新一次信息更新所使用的更新信息所对应的时刻。对象对物品的操作可以包括但不限于以下至少之一:浏览,交换。
作为一种可选的实施例,可以获取初始关联信息,其中,初始关联信息包括用于表示多个对象之间的相似关系的信息和用于表示多个对象与多个第一物品之间的操作关系的信息;周期性地获取待更新信息,其中,待更新信息用于表示当前周期的上一个周期内的新增业务数据;使用待更新信息更新初始关联信息,得到目标关联信息。
服务器可以在启动时、或者在获取到初始化指令时,获取初始关联信息,该初始关联信息可以包括:用于表示多个对象之间的相似关系的信息,用于表示多个对象与多个第一物品之间的操作关系的信息。
初始关联信息可以包括用于表示多个对象之间的相似关系的信息。上述多个对象可以是使用物品交换***的所有对象,也可以是属于同一对象组中的多个对象(例如,属于相同社区的对象,被划分与同一对象组中的、具有相似关系的对象)等。上述相似关系可以是根据不同对象的历史浏览物品(已浏览过的物品)和/或历史交换物品(已购买过的物品出)的相似度确定的,也可以是根据好友关系确定的,例如,一度好友(直接好友)的相似度大于两度好友(不是好友,但是有共同好友)的相似度,依次类推。多个对象可以包括:目标对象和关联对象。
初始关联信息还可以包括用于表示多个对象与多个第一物品之间的操作关系的信息。上述多个第一物品为在目标时刻之前被多个对象操作过的物品,该目标时刻可以是获取初始关联信息的时刻,或者,之前的某一时刻。目标时刻可以根据保存的历史数据确定,本实施例中不作具体限定。上述操作包括以下至少之一:交换,浏览。
在获取到初始关联信息之后,可以周期性地获取待更新信息,以对初始关联信息进行更新,可以保证更新后的关联信息的实时性。对于当前周期,上述待更新信息可以用于表示当前周期的上一个周期内的新增业务数据,即,多个对象中的第二对象操作第二物品的目标操作记录。
需要说明的是,上述周期可以是更新初始关联信息的周期,由于每个周期内新增业务数据的数据量不同,每个更新周期的时间可以不同,也就是,此次更新完之后,可以重新获取新增业务数据,并使用获取的新增业务数据进行关联信息的更新。
在获取到待更新信息之后,服务器可以使用获取的待更新信息更新初始关联信息,得到目标关联信息。使用待更新信息更新初始关联信息的方式可以是:使用待更新信息更新用于表示多个对象之间的相似关系的信息和用于表示多个对象与多个第一物品之间的操作关系的信息。而目标关联信息可以用于确定向目标对象推送的目标推送信息。
需要说明的是,待更新信息更新的是本周期的上一个周期所更新的关联信息,而不是初始化得到的初始关联信息。
通过本实施例,通过周期性获取待更新信息并进行关联信息的更新,可以保证推荐信息的获取效率,提高获取请求的响应速度,避免推荐算法运行的时机依赖输入数据的情况。
相关技术中的推荐***可以结合代数相关算法实现。在本示例中,采用基于图的推荐算法,可以保证推荐过程更直观,可解释性更强,容易跟踪推荐效果。对于采用基于图的推荐方式,上述关联信息可以是关系图,在关系图中可以包括顶点和顶点之间的边,顶点可以对应于对象或者物品,边的权重可以对应于关联关系的强弱。
作为一种可选的实施例,获取初始关联信息包括:获取初始业务数据;根据初始业务数据,构建初始关系图。
初始关系图可以是根据初始业务数据确定的。物品交换***上可以展示多种不同类型的物品。在目标时刻之前,多个对象可以操作物品交换***上所展示的物品中的多个第一物品,不同的第一物品,其所属的物品类型可以不同。
在目标时刻之前多个对象对物品交换***上的多个第一物品的操作,可以记录为初始业务数据,上述操作记录可以包括以下至少之一:浏览记录,交换记录。为了避免初始化过程复杂,操作记录可以仅包括交换记录,以避免由于记录的数据过多导致的存储负担。
根据记录的初始业务数据,可以构建初始关系图。在初始关系图上,可以包括:
(1)对应于多个对象的多个对象顶点;
(2)对应于多个第一物品的多个物品顶点;
(3)具有相似关系的两个对象所对应的两个顶点之间的第一边,第一边的权重与相似关系对应;
(4)具有操作关系的对象和第一物品所对应的两个顶点之间的第二边,第二边的权重与操作关系对应。
需要说明的是,在目标时刻之前,在多个对象中,并不是任意两个对象均具有相似关系,对于一个对象,该对象可能操作过部分第一物品,甚至没有操作过任何第一物品,因此,在初始关系图,可以并不是所有的对象顶点之间均具有边,并不是所有的对象顶点与物品顶点之间均具有边。
通过本实施例,根据多个对象操作物品交换***上的多个第一物品的操作记录构建初始关系图,可以提高推荐结果的可解释性,便于进行推荐结果追踪。
为了适用于关系图,更新初始关系图所使用的待更新信息可以表示为<对象顶点标识,物品顶点标识,边的权重>的形式。
作为一种可选的实施例,周期性地获取待更新信息包括:检测消息队列中存在新增业务数据;确定用于标识与第二对象对应的顶点的第一顶点标识和用于标识与第二物品对应的顶点的第二顶点标识;生成待更新信息。
相关技术中,将用户的浏览记录保存到Cookie。由于Cookie容量较小,过多的使用会影响终端性能,从而影响用户体验。并且,Cookie的存储形式简单,无法记录复杂的用户行为。因此,物品推荐方法可以将用户当前的点击流日志、行为日志等缓存到服务端的第三方存储***中;物品推荐***再访问第三方存储***获取用户的行为记录;最后,结合物品推荐算法计算出推荐的商品,该第三方存储***可以是Redis(Remote DictionaryServer,远程字典服务)。
然而,由于用户的浏览、点击流日志或其它行为的业务数据通过第三方存储实现缓存,在需要进行推荐算法的计算时,需要将这些业务数据进行转换才能作为算法的输入,以匹配推荐算法,上述处理过程需要消耗较长的处理时间。因此,相关技术中的物品信息推送方式存在耗时长的问题。并且,当推荐算法未完成时只能返回预先设定的默认值,不能实时地查询到最新的推荐结果。
本实施例中的物品推荐***(物品信息推送***)可以采用实时图计算引擎,也就是,实时计算关系图的引擎,该引擎可以提供实时接数(实时接收数据)功能,即,实时地接收通过MQ(Message Queue,消息队列)发来的用户行为数据(例如,新增业务数据),并自动完成业务数据到抽象数据的转换,形成图结构编码(例如,待更新信息)。
服务器可以检测消息队列中存在新增业务数据,该新增业务数据为实时推送到消息队列中的、第二对象操作物品交换***上的第二物品产生的目标操作记录(浏览记录,交换记录等)。
一个对象或者一个物品可以通过一个顶点标识来唯一标识。根据新增业务数据,可以确定用于标识与第二对象对应的顶点的第一顶点标识和用于标识与第二物品对应的顶点的第二顶点标识,并生成待更新信息,待更新信息可以包括:第一顶点标识,第二顶点标识,第三边的目标权重的权重信息,目标权重与目标操作记录对应。
该第三边为与第二对象对应的顶点和与第二物品对应的顶点之间的边。在初始关系图上已经存在与第二对象对应的顶点和与第二物品对应的顶点的情况下,该第三边为初始关系图中,与第二对象对应的顶点和与第二物品对应的顶点之间的边。在初始关系图上没有与第二对象对应的顶点和/或与第二物品对应的顶点的情况下,该第三边为待添加到初始关系图中的、与第二对象对应的顶点和与第二物品对应的顶点之间的边。
通过本实施例,实时地接收通过消息队列发来的用户行为数据,并自动完成业务数据到抽象数据的转换,形成图结构编码,可以保证物品信息推送的及时性。
第二物品可以是多个第一物品中的一个,也可以不属于多个第一物品中的任意一个。
作为一种可选的实施例,确定第一顶点标识和第二顶点标识包括:确定与第二对象对应的第一顶点标识;在不存在与第二物品对应的顶点标识的情况下,确定当前已存在的顶点标识中的最大顶点标识;在最大顶点标识增加目标值,得到与第二物品对应的第二顶点标识。
如果第二物品不属于多个第一物品中的任意一个,即,此时关系图中没有与第二物品对应的顶点,则可以生成与第二顶点对应的顶点标识。
各个顶点的顶点标识可以是顺序编号的,生成与第二顶点对应的顶点标识的方式可以是:确定当前已存在的顶点标识中的最大顶点标识,在最大顶点标识增加目标值(例如,1,2等),得到与第二物品对应的第二顶点标识。
例如,服务器可以对顶点进行顺序编号,对象节点和物品节点可以采用相同的编号方式,或者不同的编号方式。多个对象包括:对象A,对象B,对象C,多个第一物品包括:橘子,橙子、苹果、手机、卫生纸,对对象和物品进行顺序编号,得到如图3所示的编号结果。
需要说明的是,各个物品对应的顶点标识也可以采用其他方式进行编号,例如,属于相同物品类型的物品顶点可以顺序编号,属于相同物品类型且相同层级的物品顶点可以顺序编号,先奇数编号后偶数编号,在预定标识范围内随机编号,只要能够唯一标识物品的顶点编号方式,均可用于本实施例。
通过本实施例,通过对顶点标识进行顺序编号,并为不存在对应顶点标识的物品分配对应的顶点标识,可以保证顶点标识分配的准确性,从而推送的物品信息的合理性。
如果初始关联信息为初始关系图,则可以根据待更新信息更新初始关系图,得到目标关系图。
例如,实时图计算引擎可以具有计算功能,接收增量抽象图(例如,待更新信息)到全量图(例如,初始关系图)中,不断地在最新全量抽象图上运行基于图的推荐算法,输出图计算最新结果(目标关系图)。
作为一种可选的实施例,使用待更新信息更新初始关联信息,得到目标关联信息包括:在初始关系图上不存在与第二对象对应的顶点和与第二物品对应的顶点之间的边的情况下,在初始关系图上添加与第二对象对应的顶点和与第二物品对应的顶点之间的第三边,得到目标关系图;在初始关系图上存在与第二对象对应的顶点和与第二物品对应的顶点之间的第三边的情况下,将第三边的权重更新为与目标操作记录对应的目标权重,得到目标关系图。
如果第二对象之前未操作过第二物品,则初始关系图上没有与第二对象对应的顶点和与第二物品对应的顶点之间的边。可以在初始关系图上添加与第二对象对应的顶点和与第二物品对应的顶点之间的第三边,得到目标关系图,该第三边的权重与目标操作记录对应,也就是目标权重。
如果第二对象之前操作过第二物品,则初始关系图上存在与第二对象对应的顶点和与第二物品对应的顶点之间的边。可以将第三边的权重更新为与目标操作记录对应的目标权重,得到目标关系图,也可以比较第三边的当前权重和目标权重,取两者中的较大值或者较小值作为第三边的权重,权重的设置方式可以根据需要设定,本实施例中对此不作具体限定。
需要说明的是,两个对象顶点之间的边的权重与相似关系对应,两个对象越相似,其对应的顶点之间的边的权重可以越小,也就是,权重与相似度负相关,例如,权重为相似度的倒数。对象顶点与物品顶点之间的边的权重与操作关系对应,不同的操作关系,其对应的边的权重可以不同,例如,交换关系对应的权重可以小于浏览关系对应的权重。权重的大小可以标识两个顶点之间的关联程度,关联程度越高,两点顶点之间的边的权重越小。
为了减小服务器的负担,本实施例未给出物品之间的相似度。用户之间的相似度值可以直接获取,例如,由其他服务器确定之后传输给本服务器,也可以根据其它离线算法计算得到,本实施例中对此不作具体限定。
下面结合可选示例对关系图的更新进行说明。可以设置用户与商品之间的购买权重为1/2,浏览权重为1/1,用户与用户之间的相似权重为相似度的倒数,还可以添加商品与商品之间的相似权重。对象A购买过橘子,橙子、苹果、手机和卫生纸,对象B购买过橘子、橙子和苹果,对象C购买过橘子、橙子、苹果和手机。对象A和对象B的相似度为3分,对象A和对象C的相似度为4分,对象B和对象C的相似度为3分,则可以确定如图4所示的边数据。
服务器可以运行实时图计算***,接收用户的行为数据。电商页面采集到“Action1:对象B浏览了香蕉”并将这条业务数据记录<对象B,浏览,香蕉>通过MQ发送到实时图计算***。实时图计算***的接收与编码服务时刻运行,一旦探测到消息队列中有新数据就立即获取,然后根据业务数据进行图编码工作:查询K/V,确定是否有对象B和香蕉的映射关系,可查的对象B对应的顶点ID是2,不存在香蕉的ID,可以为香蕉编码ID为9。最后将顶点映射<9,香蕉>和抽象边<2,9,1/1>记录在***的K/V存储中,并发往图计算服务。同理,“Action2:对象A浏览了充电宝”可将顶点映射<10,充电宝>和抽象边<1,10,1/1>记录在***的K/V存储中,如图3和图4虚线部分所示。
实时图计算***的计算与查询模块中,如果图计算引擎正在运行相关图算法,就暂时将抽象边<2,9,1/1>和<1,10,1/1>缓存。当下一轮图计算开始时,新增边与存量边共同作为基于图的推荐算法的输入。图计算引擎是可以在超大规模的图数据集上高效运行图算法的框架,可以不断在最新的全量抽象边上运行基于图的推荐算法。运行得到的关系图所展示的信息可以如图4所示。
通过本实施例,通过设置或者更新对象顶点与物品顶点之间的边的权重,可以提高更新操作的准确性。
服务器还可以提供推送信息查询功能,生成各个对象最近的推送信息并进行保存。
例如,实时图计算引擎可以提供查询功能,查询请求可以基于最新结果集进行查询,实时图计算引擎的K/V存储模块可以存储业务值和抽象顶点之间的映射关系,并为查询请求返回业务上的推荐结果(推送信息的一种)。在线商城如果向实时图计算***发起推荐请求,可以立即获取最新的推荐结果,无需转换就可渲染对应的推荐位。
作为一种可选的实施例,在使用待更新信息更新初始关联信息,得到目标关联信息之后,可以从目标关系图中确定与目标对象顶点对应的推送物品顶点;在推送物品顶点为多个的情况下,根据在目标关系图上目标对象顶点与多个推送物品顶点之间的最短路径的长度,确定多个推送物品顶点的排序结果。
在得到目标关系图之后,服务器可以自动或者由查询请求(查询最近推送信息)触发确定多个对象中的任一对象(例如,目标对象,关联对象,或者其他任意对象)的推送信息。对于多个对象顶点中的目标对象顶点(对应于目标对象),可以从目标关系图中确定与目标对象顶点对应的推送物品顶点,该推送物品顶点与推送物品对应,推送物品为与待向目标对象推送的物品信息所对应的物品,可以是待向目标对象推荐的物品,即,推荐物品。
推送物品顶点为目标物品顶点集合中与目标对象顶点非一度相连的顶点,上述目标物品顶点集合为多个物品顶点和与第二物品对应的顶点的合集。即,目标关系图中与目标对象顶点非一度相连的所有物品顶点。非一度相连是指:相连但非直接相连,例如,通过其他对象顶点相连。推送物品顶点所对应的物品可以是向目标对象推荐的物品。
如果推送物品顶点有多个,则对应的推送物品可以有多个。可以根据在目标关系图上目标对象顶点与多个推送物品顶点之间的最短路径的长度,确定多个推送物品顶点的排序结果。路径长度越短,排序越靠前。多个推送物品顶点的排序结果可以用于确定多个推送物品的物品信息的顺序。
例如,图计算引擎可以是一个在超大规模的图数据集上高效运行图算法的框架,可以不断在最新的全量抽象边上运行基于图的推荐算法,并以图的最短路径算法计算推荐结果。可以计算出每个用户与所有商品之间的最短路径长度,路径越短则说明用户购买此商品的概率越高。
需要说明的是,推送物品的数量可以预先设定,例如,可以预先设定推送物品的数量,也可不设定。推送物品还可以是关联对象浏览过的物品,或者,与关联对象浏览过的物品属于相同类型的物品(品牌可以不同),或者,相同品牌的物品(型号可以不同),或者,其他类似的推送方案,本实施例中对此不作限定。
通过本实施例,通过对象顶点与物品顶点的相连关系,及两者之间的最短路径确定推送物品和推送物品的顺序,可以提高信息推送的准确性和推荐物品顺序的合理性,减少用户查找所需物品的时间消耗。
在确定出推荐物品,服务器可以获取推送物品的物品信息(目标推送信息)。
在步骤S206中,将目标推送信息发送给客户端,以通过客户端显示目标推送信息。
在获取到目标推送信息之后,可以将目标推送信息发送给目标对象的客户端,以便通过该客户端显示目标推送信息。
作为一种可选的实施例,在将目标推送信息发送给客户端之后,通过客户端接收并显示服务器返回的目标推送信息。
客户端可以接收服务器返回的目标推送信息,并在客户端的界面上显示目标推送信息。
可选地,在本实施例中,对于用户终端,可以检测到对目标对象的客户端执行的目标操作,其中,目标操作用于触发获取向目标对象推送的推送信息;响应目标操作,获取目标推送信息,其中,目标推送信息包括:与目标对象具有关联关系的关联对象所浏览的物品的物品信息;通过客户端显示目标推送信息。
例如,对于如图4所示的关系图,如果“Action3:对象C打开电商页面”发生时电商页面需要向对象C推荐商品。服务器可以向实时图计算***发送查询推荐商品的请求。
***的查询服务首先从K/V中获取对象C对应的顶点ID为3,然后再查询图计算结果集中3的最短路径有<3,1,10,d>,再从K/V的顶点映射中获取到10对应的商品为充电宝,中间关系人1对应的是对象A,即电商为对象C推荐了充电宝,同理路径<3,2,9,e>则表示向对象C推荐香蕉。如果电商此时需要为对象B推荐商品,同理则可以推荐卫生纸和充电宝。推荐顺序则可根据路径长度进行调整。
通过本实施例,通过客户端获取并显示目标对象的关联对象所浏览的物品的物品信息,可以提高推送信息的多样性,提高用户获取其所需物品的能力。
下面结合可选示例对本实施例中的信息推送方法进行说明,物品交换***为在线商城,推送的是为向目标对象推荐的推荐物品的物品信息。本示例中的信息推送方法可以运行在如图5所示的***架构中,如图5所示,该***可以为实时图计算***,包括:接数&编码模块,计算&查询模块,K/V(Key/Value)存储模块。
为了根据用户最新行为即时进行商品推荐,如图6所示,本示例中的信息推送方法可以包括以下步骤:
步骤S602,实时图计算***运行之前,根据历史购买数据构造存量图数据。
电商平台上已经存在一些用户和历史购买数据。实时图计算***(一种物品推荐***,可以通过实时图计算引擎实时进行关系图计算)运行之前可以根据历史购买数据构造存量图数据。服务器或者实时图计算***可以首先进行业务值编号:依次为用户和商品进行自然数编号,并将它们与业务值(对应于商品或者用户)之间的映射关系记录在实时图计算***的K/V存储中(如图3所示)。
然后基于关联关系的创建抽象边。上述关联关系可以是用户与商品之间的购买与被购买关系,也可以是用户与用户的相似关系。
可以根据已发生的购买行为创建抽象边,也可以创建具有相似关系的用户与用户之间的抽象边,还可以为每个抽象边添加对应的权重,同样记录在K/V存储中(如图4所示)。
通过进行上述业务值编号以及基于关联关系的创建抽象边,K/V存储中保存有:
(1)编号与业务值(对应于用户或者商品)之间的映射关系;
(2)与已发生的购买行为对应的抽象边。
步骤S604,运行实时图计算***,接收用户的行为数据,并生成新增边。
在线商城上的全部用户产生一系列的浏览记录,点击记录以及任何的活动信息都被实时的推送进消息队列中。实时图计算引擎的接数&编码功能可以通过MQ实时接收业务数据,根据规则生成增量抽象边,将业务值和抽象顶点的映射关系和新增的抽象边保存到K/V存储中。
步骤S606,使用新增的抽象边和存量边计算推荐结果。
在计算与查询模块中,如果图计算引擎正在运行相关图算法,就暂时将新增的抽象边缓存。当下一轮图计算开始时,新增边与存量边共同作为基于图的推荐算法的输入,以图的最短路径算法计算推荐结果,可以计算出每个用户与所有商品(相连商品)之间的最短路径长度,路径越短说明用户购买此商品的概率越高,优先进行推荐。
利用实时图计算引擎的实时图计算功能,即,实时地运行基于图的推荐算法,完成推荐结果的计算无需控制算法运行的时机。
步骤S608,图计算引擎完成基于图的推荐算法后,将推荐结果缓存在结果集中,供查询模块随时读取。
图计算引擎完成基于图的推荐算法(最短路径算法)后,可以将将推荐结果缓存在结果集中,供查询模块随时读取。***的图计算结果集有新旧两个,当图计算引擎完成当前轮次的算法后就将最新结果填充到旧的结果集中并立即切换新旧关系,这样查询模块读取的是最新的算法结果。根据最短路径的算法理论,如图4所示,最新的结果集中将会保存:<2李四,1张三,10充电宝,a>、<2李四,3王五,8卫生纸,b>、<1张三,2李四,9香蕉,c>和<3王五,1张三,10充电宝,d>、<3王五,2李四,9香蕉,e>这样的抽象结果(a,b,c,d,e分别代表具体的路径长度值,直接一度相连的边不作为推荐结果)。
利用实时图计算引擎的实时查询功能,推荐***可随时查询最新的计算结果,无需等待计算过程。
步骤S610,根据用户的查询推荐商品的请求,向用户发送推荐商品的列表。
如果需要向用户推荐商品,则向实时图计算***发送查询推荐商品的请求。***的查询服务首先从K/V中获取用户对应的顶点ID,然后再查询图计算结果集中该顶点ID的最短路径,得到推荐商品,推荐顺序则可根据路径长度进行调整。
根据路径可以获知由于哪些中间用户为本用户推荐了物品。例如,对于结果<2,1,10,a>,从K/V的顶点映射中获取到10对应的商品为充电宝,中间关系人“1”对应的是对象A,即电商为对象C推荐了充电宝,同理路径<3,2,9,e>则表示向对象C推荐香蕉。如果电商此时需要为对象B推荐商品,同理则可以推荐卫生纸和充电宝。
通过本示例,根据用户最新的行为,为其提供实时的商品推荐服务,不仅可以向用户推荐关联用户已购买过的商品,也可以推荐关联用户“刚刚”浏览过的商品,同时可以保证推荐结果显示的实时性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,提供了一种用于实施上述实施例中的信息推送方法的信息推送装置。可选地,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本申请实施例的一种可选的信息推送装置的结构框图,如图7所示,该装置包括:
(1)第一接收单元72,用于接收目标对象的客户端发送的获取请求,其中,获取请求用于获取向目标对象推送的推送信息;
(2)第一获取单元74,与第一接收单元72相连,用于获取向目标对象推送的目标推送信息,其中,目标推送信息包括与目标对象具有关联关系的关联对象所浏览的物品的物品信息;
(3)第一发送单元76,与第一获取单元74相连,用于将目标推送信息发送给客户端,以通过客户端显示目标推送信息。
可选地,第一接收单元72可以用于上述实施例中的步骤S202,第一获取单元74可以用于上述实施例中的步骤S204,第一发送单元76可以用于执行上述实施例中的步骤S206。
通过本实施例,采用向目标对象推送关联对象浏览过的物品的物品信息的方式,由于向一个用户推送的推送信息包括了关联用户浏览过的物品的物品信息,而不仅仅是关联用户或者本用户购买过的物品的物品信息,解决了相关技术中的物品信息推送方式存在的由于推送的物品信息单一导致用户体验差的问题,提高了推送信息的多样性,进而提升了用户体验。
作为一种可选的实施例,上述装置还包括:
(1)第二获取单元,用于在获取向目标对象推送的目标推送信息之前,获取初始关联信息,其中,初始关联信息包括用于表示多个对象之间的相似关系的信息和用于表示多个对象与多个第一物品之间的操作关系的信息,多个第一物品为在目标时刻之前被多个对象操作过的物品,多个对象包括目标对象和关联对象;
(2)第三获取单元,用于周期性地获取待更新信息,其中,待更新信息用于表示当前周期的上一个周期内的新增业务数据,新增业务数据为多个对象中的第二对象操作第二物品的目标操作记录;
(3)更新单元,用于使用待更新信息更新初始关联信息,得到目标关联信息,其中,目标关联信息用于确定向目标对象推送的目标推送信息。
作为一种可选的实施例,在初始关联信息为初始关系图的情况下,第二获取单元包括:
(1)第一获取模块,用于获取初始业务数据,其中,初始业务数据为在目标时刻之前多个对象操作物品交换***上的多个第一物品的操作记录;
(2)构建模块,用于根据初始业务数据,构建初始关系图,其中,初始关系图包括:对应于多个对象的多个对象顶点,对应于多个第一物品的多个物品顶点,具有相似关系的两个对象所对应的两个顶点之间的第一边,具有操作关系的对象和第一物品所对应的两个顶点之间的第二边,第一边的权重与相似关系对应,第二边的权重与操作关系对应。
作为一种可选的实施例,第三获取单元包括:
(1)检测模块,用于检测消息队列中存在新增业务数据,其中,新增业务数据为实时推送到消息队列中的、第二对象操作物品交换***上的第二物品产生的目标操作记录;
(2)确定模块,用于确定第一顶点标识和第二顶点标识,其中,第一顶点标识用于标识与第二对象对应的顶点,第二顶点标识用于标识与第二物品对应的顶点;
(3)生成模块,用于生成待更新信息,其中,待更新信息包括第一顶点标识,第二顶点标识,第三边的目标权重的权重信息,第三边为与第二对象对应的顶点和与第二物品对应的顶点之间的边,目标权重与目标操作记录对应。
作为一种可选的实施例,确定模块包括:
(1)第一确定子模块,用于确定与第二对象对应的第一顶点标识;
(2)第二确定子模块,用于在不存在与第二物品对应的顶点标识的情况下,确定当前已存在的顶点标识中的最大顶点标识;
(3)增加子模块,用于在最大顶点标识增加目标值,得到与第二物品对应的第二顶点标识。
作为一种可选的实施例,在目标关联信息为目标关系图的情况下,更新单元包括:
(1)添加模块,用于在初始关系图上不存在与第二对象对应的顶点和与第二物品对应的顶点之间的边的情况下,在初始关系图上添加与第二对象对应的顶点和与第二物品对应的顶点之间的第三边,得到目标关系图,其中,第三边的权重为与目标操作记录对应的目标权重;
(2)更新模块,用于在初始关系图上存在与第二对象对应的顶点和与第二物品对应的顶点之间的第三边的情况下,将第三边的权重更新为与目标操作记录对应的目标权重,得到目标关系图。
作为一种可选的实施例,上述装置还包括:
(1)第一确定单元,用于在使用待更新信息更新初始关联信息,得到目标关联信息之后,从目标关系图中确定与目标对象顶点对应的推送物品顶点,其中,目标对象顶点与目标对象对应,推送物品顶点与推送物品对应,推送物品为与待向目标对象推送的物品信息所对应的物品,推送物品顶点为目标物品顶点集合中与目标对象顶点非一度相连的顶点,目标物品顶点集合为多个物品顶点和与第二物品对应的顶点的合集;
(2)第二确定单元,用于在推送物品顶点为多个的情况下,根据在目标关系图上目标对象顶点与多个推送物品顶点之间的最短路径的长度,确定多个推送物品顶点的排序结果,其中,排序结果用于确定多个推送物品的物品信息的顺序。
作为一种可选的实施例,上述装置还包括:检测单元,第二发送单元,第二接收单元,显示单元,其中,
(1)检测单元,用于在接收目标对象的客户端发送的获取请求之前,通过目标对象的客户端检测到对客户端执行的目标操作,其中,目标操作用于触发获取向目标对象推送的推送信息;
(2)第二发送单元,用于响应目标操作,通过客户端向服务器发送获取请求;
(3)第二接收单元,用于在将目标推送信息发送给客户端之后,通过客户端接收服务器返回的目标推送信息;
(4)显示单元,用于通过客户端显示目标推送信息。
需要说明的是,上述检测单元、第二发送单元、第二接收单元和显示单元可以位于用户设备侧。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
根据本申请实施例的又一个方面,提供了一种计算机可读的存储介质。可选地,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行本申请实施例中所提供的上述任一项方法中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,接收目标对象的客户端发送的获取请求,其中,获取请求用于获取向目标对象推送的推送信息;
S2,获取向目标对象推送的目标推送信息,其中,目标推送信息包括与目标对象具有关联关系的关联对象所浏览的物品的物品信息;
S3,将目标推送信息发送给客户端,以通过客户端显示目标推送信息。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM(Read-OnlyMemory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
根据本申请实施例的又一个方面,提供了一种电子装置,包括:处理器(该存储器可以是图1中的处理器102)和存储器(该存储器可以是图1中的存储器104),该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行本申请实施例中所提供的上述任一项方法中的步骤。
可选地,上述电子装置还可以包括传输设备(该传输设备可以是图1中的传输设备106)以及输入输出设备(该输入输出设备可以是图1中的输入输出设备108),其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,接收目标对象的客户端发送的获取请求,其中,获取请求用于获取向目标对象推送的推送信息;
S2,获取向目标对象推送的目标推送信息,其中,目标推送信息包括与目标对象具有关联关系的关联对象所浏览的物品的物品信息;
S3,将目标推送信息发送给客户端,以通过客户端显示目标推送信息。
可选地,本实施例中的可选示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。