基于动态配置的视频推荐分流的系统
技术领域
本申请涉及视频推荐领域,更具体地,涉及一种基于动态配置的视频推荐分流的系统。
背景技术
现有技术中,在视频推荐系统,客户端在向服务器发送推荐请求时,通常会携带如用户身份标识,请求发起的场景等参数,所述服务器根据这些不同的参数的不同,会按照事先定义好的规则进行分流,以便决定调用哪些推荐算法产生对应的推荐结果。目前分流配置就是服务端用以对客户端请求参数进行匹配的规则集合。
具体地,视频推荐系统是这样的一套系统,它可以根据用户当前播放的视频,运用一定的算法得出与之相关联的其它视频,或者根据用户的近期观看记录,来计算出该用户可能感兴趣的视频,前者称之为相关视频推荐,后者为个性化视频推荐,它们是以不同方式产生的推荐结果。相应的,产生这些推荐结果的算法就称为相关推荐算法或个性化推荐算法,相关或个性化推荐算法都是一系列算法的统称,它们都有着不同的具体实现。视频推荐系统的功能就是提供一组规范,按照这个规范,使得系统的整体推荐效果能够达到最优,也即展示给用户的视频尽量多的被点击观看。
现有技术中,当前的分流配置无法根据实际需要灵活调整,如在增改推荐算法时,往往需要对线上系统造成影响;在对某些推荐算法进行小流量测试时,也难以实现或不够灵活;此外,当前还存在一个推荐请求需要多个推荐算法产生的结果进行组合这种情况,现有方案都难以满足。
例如:在多个场景进行多组对比测试情况下,如何能够让测试结果互不干扰便成为问题。如图1和2所示(旧的分流方式举例),对于同一个用户uid=123,按照现有的方式始终都会被分到算法Alg11和Alg21,其他任一用户都有类似的情况,这样就难以区分用户行为的变化是由哪种算法引起的。
所以,如何实现当客户端在发起推荐请求时,系统能够根据客户所传递的各种参数(包括:用户的身份标识、发起请求的设备类型、发起请求时的所在页面与模块、当前正在播放视频的相关信息等)相组合后推荐一定的策略来决定调用不同的推荐算法以此产生最佳的推荐结果,成为亟待解决的技术问题。
发明内容
有鉴于此,本申请提供一种基于动态配置的视频推荐分流的系统,以解决如何当客户端在发起推荐请求时,系统能够根据客户所传递的各种参数(包括:用户的身份标识、发起请求的设备类型、发起请求时的所在页面与模块、当前正在播放视频的相关信息等)相组合后推荐一定的策略来决定调用不同的推荐算法以此产生最佳的推荐结果问题。
本申请公开了一种基于动态配置的视频推荐分流的系统,其特征在于,包括:客户端、推荐服务器、算法模块以及分流配置模块;其中,
所述推荐服务器中包含有一规则路由单元;
所述客户端、与所述推荐服务器相耦接,用于根据用户信息发送推荐请求信息给所述推荐服务器,该推荐服务器再将经过处理后的响应信息反馈给所述客户端;
所述推荐服务器,与所述客户端、算法模块以及分流配置模块相耦接,用于在启动后,指示所述规则路由单元从所述分流配置模块中调取加载分流规则,然后接收所述客户端发送的推荐请求信息,将该推荐请求信息中包含的用户信息和场景情况信息,发送至所述规则路由单元并根据加载的所述分流规则,查找所述分流规则中对应该用户信息和场景情况信息的至少一条规则信息,并根据该规则信息调取所述算法模块中对应的推荐算法信息,将该推荐算法信息整合成响应信息反馈给所述客户端;
所述算法模块,与所述推荐服务器相耦接,用于存储对应不同所述规则信息的推荐算法信息;
所述分流配置模块,与所述推荐服务器相耦接,用于存储不同的分流规则,通过所述规则路由单元调取所述分流规则。
优选地,其中,所述客户端中的用户信息包括:用户身份标识信息、请求类型信息、请求长度信息、终端设备信息、网页页面信息和/或应用信息。
优选地,其中,所述推荐服务器,进一步用于:
在启动后,指示所述规则路由单元从所述分流配置模块中调取加载分流规则,然后接收所述客户端发送的推荐请求信息,将该推荐请求信息中包含的用户信息和场景情况信息,发送至所述规则路由单元并根据加载的所述分流规则,查找所述分流规则中对应该用户信息和场景情况信息,按照利用哈希散列算法结合对应的分流规则选择对应的规则信息,并根据该规则信息调取所述算法模块中对应的推荐算法信息,将该推荐算法信息整合成响应信息反馈给所述客户端。
优选地,其中,所述推荐服务器,进一步用于:
在启动后,指示所述规则路由单元从所述分流配置模块中调取加载分流规则,然后接收所述客户端发送的推荐请求信息,将该推荐请求信息中包含的用户信息和场景情况信息,发送至所述规则路由单元并根据加载的所述分流规则,查找所述分流规则中对应该用户信息和场景情况信息,按照利用哈希散列算法结合对应的分流规则选择对应的规则信息,并根据该规则信息调取所述算法模块中对应的多个推荐算法信息,将多个所述推荐算法信息按照链式处理方式整合成响应信息反馈给所述客户端。
优选地,其中,所述分流配置模块设置在所述推荐服务器内。
与现有技术相比,本申请所述的基于动态配置的视频推荐分流的系统,达到了如下效果:
1)本发明实现了分流配置、算法文件与服务器相互分离,服务端定时重载配置与算法文件,支持分场景、按流量占比进行分流。
2)本发明还实现了分流规则中引入参数hash_seed(哈希散列),满足多重测试需求,经过哈希散列后用户uid=123的请求被分到哪个算法完全随机,因此就避免了两组测试相互干扰的问题。
3)本发明同时还解决了在有的情况下,单个推荐算法产生的推荐结果并不能够达到最优的效果,往往需要将多个算法结果组合起来,而上面的设计无法满足要求,为了实现这一目的需要增加配置,将多个算法串连起来形成链式处理逻辑,支持多个推荐结果进行组合。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1和2为现有技术中旧的分流方式的流程示意图;
图3为依据本发明实施例一所述的基于动态配置的视频推荐分流的系统结构示意图。
图4和5为依据本发明实施例一中的基于动态配置的视频推荐分流的系统中利用哈希散列算法的新的分流规则示意图。
图6为依据本发明实施例一中的基于动态配置的视频推荐分流的系统中利用链式处理方式的新的分流规则示意图。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
图1为依据本发明实施例一所述的基于动态配置的视频推荐分流的系统的结构示意图,该系统包括:客户端101、推荐服务器102、算法模块103以及分流配置模块104;其中,
所述推荐服务器102中包含有一规则路由单元1021;
所述客户端101、与所述推荐服务器102相耦接,用于根据用户信息发送推荐请求信息给所述推荐服务器102,该推荐服务器102再将经过处理后的响应信息反馈给所述客户端101;
所述推荐服务器102,与所述客户端101、算法模块103以及分流配置模块104相耦接,用于在启动后,指示所述规则路由单元1021从所述分流配置模块104中调取加载分流规则,然后接收所述客户端101发送的推荐请求信息,将该推荐请求信息中包含的用户信息和场景情况信息,发送至所述规则路由单元1021并根据加载的所述分流规则,查找所述分流规则中对应该用户信息和场景情况信息的至少一条规则信息(最为匹配的一条规则信息),并根据该规则信息调取所述算法模块103中对应的推荐算法信息,将该推荐算法信息整合成响应信息反馈给所述客户端101;
所述算法模块103,与所述推荐服务器102相耦接,用于存储对应不同所述规则信息的推荐算法信息;
所述分流配置模块104,与所述推荐服务器102相耦接,用于存储不同的分流规则,通过所述规则路由单元调取所述分流规则。(另外,分流配置模块104还可以设置在所述推荐服务器102内)。
其中,所述客户端101中的用户信息包括:用户身份标识信息(唯一的身份标识信息)、请求类型信息、请求长度信息、终端设备信息、网页页面信息和/或应用信息等参数;
其中,所述推荐服务器102,用于在启动后,指示所述规则路由单元1021从所述分流配置模块104中调取加载分流规则,然后接收所述客户端101发送的推荐请求信息,将该推荐请求信息中包含的用户信息和场景情况信息,发送至所述规则路由单元1021并根据加载的所述分流规则,查找所述分流规则中对应该用户信息和场景情况信息的至少一条规则信息(最为匹配的一条规则信息),并根据该规则信息调取所述算法模块103中对应的推荐算法信息,将该推荐算法信息整合成响应信息反馈给所述客户端101。如何调取出对应的推荐算法信息,具体为:
查找所述分流规则中对应该用户信息和场景情况信息,按照如下2的方式对应的分流规则选择对应的规则信息,并根据该规则信息调取所述算法模块103中对应的推荐算法信息,将该推荐算法信息整合成响应信息反馈给所述客户端101;
在上述方式中,对于“根据该规则信息调取所述算法模块103中对应的推荐算法信息”还可以具体按照如下3的方式,将不同的推荐算法信息进行组合,将组合后的推荐算法信息整合成响应信息反馈给所述客户端101。
现有技术中,基本的处理方式为:
1、在同一场景下,这里以apt、pg、md分别表示不同的终端设备信息、网页页面信息和应用信息;具体地其中,apt=1代表PC浏览器、apt=2代表PC客户端,pg=1代表单视频,pg=2代表节目视频,md=1代表正在播放的页面信息,md=2代表播放结束页面信息,其中apt、pg、md这三个参数的不同组合需要对应哪一种推荐算法信息,这需要在规则路由单元1021中的分流规则中配置指定。(这样就是在应用背景中提到,用户获得的最终视频推荐结果受多种因素的影响,这些因素以请求参数的形式传递给推荐服务器)。
具体地参数的组合方式以及对应的分流规则如下:
以下是几条分流规则示例:
R1:apt=1,pg=1,md=2 à 0.9:Alg1, 0.1:Alg2
R2:apt=1,pg=2,md=1 à 1:Alg3
R3:apt=2,pg=1,md=2 à 1:Alg2
其中,规则R1表示的是,如果参数满足apt=1、pg=1、md=2,也即如果是PC浏览器的单视频播放结束页面信息形成的推荐请求信息,将该推荐请求信息中包含的用户信息发送至所述规则路由单元1021并根据加载的所述分流规则,查找所述分流规则中对应该用户信息的至少一条规则信息R1,并根据该规则信息R1调取所述算法模块103中对应的推荐算法信息,则以90%概率调用算法Alg1,以10%的概率调用算法Alg2来产生推荐算法信息,其它规则同理。以用户id尾号为例,具体的分流方式为:如果id mod 100∈[0, 90),则调用推荐算法信息Alg1,否则调用推荐算法信息Alg2。
而本发明所要解决的是不论在同一个场景还是多个场景都能够顺利解决背景技术提到的问题;
2、在多个场景情况下时,为上述在同一场景下的每条规则设置一个哈希种子(hash_seed),同时利用哈希散列算法可以对数值进行散列的特点,这样以用户id尾号进行分流的方式就由原来的id mod 100变为了hash(id+hash_seed) mod 100。当如下的规则(如图4和5所示)Ri与Rj的hash_seed不相等时,同一个用户在这两组测试中的分流结果就互不相关;如果需要有一致的分流结果,则将这两条规则中的hash_seed设置为相同即可。
改进后的分流规则为:
Ri:apt=1,pg=1,md=1 à 0.5:Alg11, 0.5:Alg12,hash_seed=1
Rj:apt=1,pg=1,md=2 à 0.5:Alg21, 0.5:Alg22,hash_seed=2
3、通过上述两种针对不同场景的情况,另一种分流规则(如图6所示),还可以将不同的推荐算法信息进行组合,这一步骤的分流规则如下:
Ri:apt=1,pg=1,md=1 à 0.5: chain1, 0.5: chain2
chain1:Alg1, Alg2
chain2:Alg3
当参数满足apt=1,pg=1,md=1的推荐请求,会以50%的占比遵循chain1的链式处理流程,即依次调用推荐算法信息Alg1与Alg2,并将得到的结果组合起来作为最终的推荐算法信息,具体的组合方式可根据业务的需要自行定义,这里并不做具体限定,对于本领域技术人员来说均能了解操作(如图6所示);而另外50%的概率会遵循chain2的逻辑,这种情况下推荐算法信息Alg3产生的结果会作为另一个最终的推荐算法信息。
需要说明的是:不论是一个链式处理结点还是多个结点,都按照上述3的方式这样的分流规则的配置来设置。这里表示有两条处理链,chain1链中有两个算法,chain2中只有一个算法,所以一个算法也可以组成一条链。
不仅如此,即使不进行分流规则的处理,也没有对应的不同的多个推荐算法信息,也可以使用3的这种方式去进行分流规则的配置,如下面的情况:
Ri:apt=1,pg=1,md=1 à 1.0: chain1
chain1:Alg1
实际上,再加上对多个场景下的支持,最终一条完整的配置如下:
Ri:apt=1,pg=1,md=1 à 1.0: chain1
chain1:Alg1
hash_seed=1
因此,所述推荐服务器102,它既支持分流规则(通过1的方式这样的参数实现),也支持多场景(2的方式,通过设置hash_seed实现),还支持链式处理(3的方式,通过chain实现)。
综上所述,本发明的灵活性主要体现在:
(1)对需要对比的推荐算法信息进行上下线操作简单,只需要修改对应的分流规则,系统下次自动读取该分流规则时即可生效;
(2)进行对比的推荐算法信息的个数不受限制,可支持多个推荐算法信息同时测试;
(3)每个推荐算法信息对应的分流规则的流量可任意调整,如将95%的主流量分配到表现比较稳定的推荐算法信息,剩余5%的小流量分配到需要测试的其它推荐算法信息,这样既达到了测试的目的,又不至于影响线上稳定。
与现有技术相比,本申请所述的基于动态配置的视频推荐分流的系统,达到了如下效果:
1)本发明实现了分流配置、算法文件与服务器相互分离,服务端定时重载配置与算法文件,支持分场景、按流量占比进行分流。
2)本发明还实现了分流规则中引入参数hash_seed(哈希散列),满足多重测试需求,经过哈希散列后用户uid=123的请求被分到哪个算法完全随机,因此就避免了两组测试相互干扰的问题。
3)本发明同时还解决了在有的情况下,单个推荐算法产生的推荐结果并不能够达到最优的效果,往往需要将多个算法结果组合起来,而上面的设计无法满足要求,为了实现这一目的需要增加配置,将多个算法串连起来形成链式处理逻辑,支持多个推荐结果进行组合。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者系统中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。