CN111159436B - 一种推荐多媒体内容的方法、装置及计算设备 - Google Patents

一种推荐多媒体内容的方法、装置及计算设备 Download PDF

Info

Publication number
CN111159436B
CN111159436B CN201811319186.1A CN201811319186A CN111159436B CN 111159436 B CN111159436 B CN 111159436B CN 201811319186 A CN201811319186 A CN 201811319186A CN 111159436 B CN111159436 B CN 111159436B
Authority
CN
China
Prior art keywords
bloom filter
partition
user
multimedia content
partitions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811319186.1A
Other languages
English (en)
Other versions
CN111159436A (zh
Inventor
张�杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201811319186.1A priority Critical patent/CN111159436B/zh
Publication of CN111159436A publication Critical patent/CN111159436A/zh
Application granted granted Critical
Publication of CN111159436B publication Critical patent/CN111159436B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种推荐多媒体内容的方法、装置及计算设备,属于计算机技术领域,用于降低重复推荐率和提高推荐的有效性。该方法中,在得到用户匹配的候选多媒体内容后,再通过改进型的用于存储用户已经观看过的多媒体内容的布隆过滤器将候选多媒体内容进行排除筛选,以得到欲推荐给用户的多媒体内容,由于改进型布隆过滤器包括至少两个分区,且每个分区是按照时间先后存储用户观看过的多媒体内容,以及在需要重置时是按照时间先后顺序重置时间靠前的分区,通过分区重置的方式,可以将先存储的分区先释放掉,并将其余分区的多媒体内容暂时保留,这样可以延长其它分区中的多媒体内容在布隆过滤器中的存放时间,以减小重复推荐率。

Description

一种推荐多媒体内容的方法、装置及计算设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种推荐多媒体内容的方法、装置及计算设备。
背景技术
推荐系统在向用户推荐资源时,可能会出现重复推荐的情形,例如在进行短视频推荐时,短视频推荐系统可能会将用户已经观看过的短视频再次推荐给用户,这样用户就可能重复观看,浪费时间,造成不好的用户体验。
为了尽量减少重复推荐,目前一般使用布隆过滤器来映射存储用户已经观看过的短视频,在推荐的过程中可以先检测待推荐的短视频是否已经存在于布隆过滤器之中,再根据检测结果决定将哪些短视频推荐给用户。当布隆过滤器中映射存储的短视频数量达到一定值时,会出现较大的哈希(hash)碰撞,即判断一个元素(例如短视频)是否存在于该布隆过滤器中的准确性降低,为了确保较准确的判断,降低误判率,可以将布隆过滤器重置后再重新进行存储。
目前,在布隆过滤器重置时,是将布隆过滤器中存储的所有元素全部清空,再进行新一轮的存储映射,例如在存储200条短视频后就将布隆过滤器重置,也就是将这200条用户已经观看过的短视频全部从该布隆过滤器中清除,进而再往清空后的布隆过滤器中存储用户观看过的其它短视频。然而,如果用户的观看量较大,例如一天观看上百条短视频,那么从布隆过滤器中清除的这200条短视频就很可能又被重复推荐给用户,导致重复推荐的短视频数量增多,重复推荐的概率加大,也就是说,目前的推荐系统在推荐资源时的重复推荐率较大,导致用户体验不佳。
发明内容
本发明实施例提供一种推荐多媒体内容的方法、装置及计算设备,用于解决多媒体内容重复推荐的概率较大的技术问题,以降低多媒体内容的重复推荐率,提高多媒体内容推荐的有效性。
一方面,提供一种推荐多媒体内容的方法,所述方法包括:
根据用户标识,从多媒体内容推荐池中确定与所述用户标识对应的用户匹配的候选多媒体内容;
从所述候选多媒体内容中排除所述用户标识对应的布隆过滤器中存储的所述用户已观看过的多媒体内容;其中,所述布隆过滤器的二进制位组包括至少两个分区,每个分区按照时间先后存储所述用户观看过的多媒体内容,当所述布隆过滤器满足预设重置条件需要重置时,按照时间先后顺序重置时间靠前的分区;
将所述候选多媒体内容的剩余部分推荐给所述用户。
一方面,提供一种推荐多媒体内容的装置,所述装置包括:
确定模块,用于根据用户标识,从多媒体内容推荐池中确定与所述用户标识对应的用户匹配的候选多媒体内容;
筛选模块,用于从所述候选多媒体内容中排除所述用户标识对应的布隆过滤器中存储的所述用户已观看的多媒体内容,其中,所述布隆过滤器的二进制位组包括至少两个分区,每个分区按照时间先后映射所述用户观看过的多媒体内容,当所述布隆过滤器满足预设重置条件需要重置时,按照时间先后顺序重置时间靠前的分区;
推荐模块,用于将所述候选多媒体内容的剩余部分推荐给所述用户。
一方面,提供一种计算设备,所述计算设备包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中任一方法包括的步骤。
一方面,提供一种可读存储介质,所述可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面中任一方法包括的步骤。
本发明实施例中,在得到用户匹配的候选多媒体内容后,再通过改进型的用于存储用户已经观看过的多媒体内容的布隆过滤器将候选多媒体内容进行排除筛选,以得到欲推荐给用户的多媒体内容,由于改进型布隆过滤器包括至少两个分区,且每个分区是按照时间先后存储用户观看过的多媒体内容,以及在需要重置时是按照时间先后顺序重置时间靠前的分区,通过分区重置的方式,可以先将部分分区(例如最早写满多媒体内容的分区)释放掉,并将其余分区的多媒体内容暂时保留,这样可以尽量延长其它分区中的多媒体内容在布隆过滤器中的存放时间,通过尽量延长存放时间可以尽量保持其是已被观看的状态,进而在后续被释放时可以使得间隔发布的时间尽量延长,从而减小被重复推荐的概率,达到整体上减少重复推荐的数量以实现减小重复推荐率的目的。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为现有技术中的推荐短视频的流程示意图;
图2A为现有技术中的布隆过滤器的示意图;
图2B为现有技术中将短视频映射到布隆过滤器中的示意图;
图3为本发明实施例中的一种应用场景的示意图;
图4为本发明实施例中的推荐多媒体内容的方法的流程示意图;
图5A为本发明实施例中的分区后的布隆过滤器的示意图;
图5B为本发明实施例中的分区后的布隆过滤器的另一示意图;
图6A为本发明实施例中的布隆过滤器中的所有分区被“填满”的示意图;
图6B为本发明实施例中的将布隆过滤器的部分分区重置后的示意图;
图6C为本发明实施例中的将重置后的分区重新映射短视频后的示意图;
图7为本发明实施例中的推荐多媒体内容的装置的结构框图;
图8为本发明实施例中的推荐多媒体内容的装置的另一结构框图;
图9为本发明实施例中的计算设备的结构示意图;
图10为本发明实施例中的计算设备的另一结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例中,“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
以下对本文中涉及的部分用语进行说明,以便于本领域技术人员理解。
1、多媒体内容,是指组合两种或两种以上媒体的一种人机交互式信息交流和传播媒体的内容,使用的媒体可以包括文字、图片、照片、声音(包含音乐、语音旁白、特殊音效)、动画和影片,等等,具体来说,多媒体内容可以包括短视频、资讯或其它类型的内容。
2、短视频,是一种互联网内容传播方式,一般是在互联网新媒体上传播的时长在5分钟以内(例如几秒到几分钟不等)的视频传播内容,是适合在移动状态和短时休闲状态下观看的、高频推送的视频内容。随着生活节奏加快,短视频目前成为了争夺用户碎片化时间的热点领域。
3、布隆过滤器,是一种数据结构,包括一个二进制向量(又称作二进制位组)和一系列随机映射函数(例如hash函数),常用于检索一个元素是否在一个集合中,布隆过滤器的空间效率和时间效率都较高,但也存在一定的误判率。在使用布隆过滤器时常用的操作包括Test(key)和Add(key),Test(key)用于检查一个元素是否存在于一个集合中,Add(key)用于将一个元素加入一个集合中,可以理解为将一个元素映射到二进制位组中。
为了便于理解,下面先对本发明实施例的技术背景进行介绍。
如前所述,在一些推荐系统中,常使用布隆过滤器来存储用户已经观看过的资源,例如短视频推荐系统、资讯推荐系统或其它多媒体内容推荐系统,为了便于理解,以下以短视频推荐系统为例进行说明,对于其它的多媒体内容推荐系统可以进行类似理解。以下结合图1对短视频推荐系统向用户推荐短视频的过程进行说明。
请参见图1所示的推荐短视频的流程示意图,短视频发布者发布短视频之后,短视频推荐写服务将新发布的短视频写入推荐数据池,短视频推荐读服务会定期读取推荐数据池并缓存。当用户发起拉取短视频列表请求的时候,例如用户使用终端设备发起短视频推荐请求的时候,短视频推荐读服务首先从分布式缓存中拉取该用户最近访问过的短视频列表X,然后将本地缓存的所有短视频D与X做个差集,即计算D-X,这个差集就是适用于该用户的候选推荐数据(例如又称作待推荐短视频)。然后从该差集D-X中提取一定数量的短视频S返回给该用户即可,返回数据前需要将S追加到该用户的最近访问列表中,以备该用户下次拉取短视频列表时,推荐系统能够将S也作为用户已经观看过的短视频。另外,在将本地缓存的所有短视频D与用户已经访问过的短视频列表X做差集以计算本次的待推荐短视频时,可以先根据该用户的偏好从所有短视频D中进行初步筛选,例如根据该用户的历史观看记录或者设置的观看偏好等因素选择用户可能比较感兴趣的部分短视频,然后再将该部分短视频与X做差集进而得到本次的待推荐短视频,以作为与该用户匹配的待推荐短视频,这里所说的初步筛选所采用的方式可以采用现有的任何筛选策略,具体的筛选方式不做限制。
图1中的分布式缓存可用于缓存多个用户最近观看过的短视频,针对每个用户观看过的短视频,可以分别使用一个对应的布隆过滤器来缓存映射,为了便于理解,以下结合布隆过滤器的实现原理对将用户已观看过的短视频进行缓存映射的过程进行说明。
布隆过滤器的核心实现是一个二进制位组和几个哈希函数,该二进制位组包括的二进制位的数量根据分配给该布隆过滤器的存储空间而定,二进制位又称作比特(bit),例如一个布隆过滤器的存储空间是8千字节((Kilobyte,KB),那么按照KB与字节(Byte,B)以及B与bit的换算关系,可知8KB对应8*1024*8=65536bit,即该布隆过滤器的二进制位组包括65536个比特。新创建的布隆过滤器的二进制位组中的所有bit均为0,假设一布隆过滤器包括20个bit及3个hash函数(例如f1(x)、f2(x)、f3(x)),对应的请参见图2A所示的示意图,图2A可以表示布隆过滤器新创建时的状态,也可以表示布隆过滤器清空后的状态,清空后的状态是指将布隆过滤器的二进制位组中的所有bit均置为0后的状态,需要说明的是,为了图示简化,图2A中只是以20个bit和3个hash函数进行图示举例,在实际中,布隆过滤器所包括的bit数量一般是比较多的,例如前面所说的8KB即对应65536个比特,以及hash函数的数量例如还可以是4或者8,等等。
假设与某一用户对应的布隆过滤器的二进制数组包括N个bit以及K个hash函数,当需要将该用户观看过的一条短视频映射到布隆过滤器中时,可以使用K个hash函数分别对该短视频进行K次hash运算以得到不同的K个哈希值,例如是对短视频的标识(Identification,ID)进行hash运算,短视频的ID例如可以feedid表示,也就是说,可以对一个短视频的feedid进行K轮hash运算以得到对应的K个哈希值,计算得到的K个哈希值即对应该短视频在二进制位组中的K个映射位置,然后再将二进制位组中的与该K个映射位置分别对应的bit置为1,请参见图2B,图2B所示的是将短视频1、短视频2和短视频3分别以f1(x)、f2(x)、f3(x)进行3轮hash运算后映射到二进制位组中的示意,可见,短视频1的3个映射位置是该二进制位组中的第2个比特、第12个比特和第16个比特,短视频2的3个映射位置是该二进制位组中的第4个比特、第7个比特和第14个比特,短视频3的3个映射位置是该二进制位组中的第10个比特、第14个比特和第18个比特。
在映射的过程中,若发现某个映射位置的bit已经是1,那么则可以跳过该映射位置再映射下一个bit,例如继续参见图2B,短视频2通过f3(x)进行hash运算后得到的映射位置与短视频3通过f2(x)进行hash运算后得到映射位置是相同的,假设短视频3晚于短视频2映射,那么在以f2(x)映射短视频3得到的映射位置处已经是1,所以则可以跳过该映射位置,短视频2和短视频3相同的映射位置由于同时承载有短视频2和短视频3的映射信息,可以将该相同映射位置对应的bit称作复用比特。需要说明的是,前述所说的以3个hash函数进行3轮hash运算,在具体实施过程中可以是指通过3个不同的hash函数进行hash运算;或者,也可以是以一个hash分别进行3次hash运算,但是在每次运算过程中,会采用不同的随机因子进行运算以确保运算得到的多个hash值不同。
继续前述例子,当需要检测某个短视频是否存在于该布隆过滤器中以判断该短视频是否是用户已经观看过的短视频时,可以对该短视频以f1(x)、f2(x)、f3(x)进行3轮hash运算以得到3个映射位置,再检验该布隆过滤器对应这3个映射位置的bit是否全是1,若全是1,则表明该短视频在很大可能上存在于该布隆过滤器中,如果不全为1,则表明该短视频一定不存在于该布隆过滤器中,可见,可以通过布隆过滤器来检测一个元素是否存在于一个集合中。需要说明的是,因为在实际中,不同的元素进行hash运算之后得到的hash值可能相同,即由于前述提到的复用比特可能存在的原因,所以在校验的时候可能会出现误判的可能,即,由于hash碰撞的原因,在使用布隆过滤器进行元素是否存在的检测时可能存在一定的误判率,在二进制位组足够大且存储的元素较少的时候,由于复用比特而导致的误判率一般是可以容忍的,所以对于布隆过滤器,需要在误判率、存储空间占用大小之间做出的一个权衡,理想的情形是,在占用越少的存储空间的基础上保持越小的误判率,即在布隆过滤器的缓存容量越大的情形下希望尽量小的误判率,以提高存储空间的有效利用率。
通过上述介绍,可见布隆过滤器的二进制位组存储的是短视频的存在关系,而并不保存短视频本身,本发明实施例中提到的通过布隆过滤器存储短视频是指均是指通过布隆过滤器存储短视频的存在关系,所以所需的存储开销相比于将短视频本身进行存储所需要的存储开销要小很多,由于大多数推荐系统都需要进行去重检验,同时基于存储开销的考虑,这也就是大多数推荐系统使用布隆过滤器的主要原因。
当布隆过滤器的二进制位组中被置为1的比特数达到该二进制位组的比特总数的一定比例时,hash碰撞的可能性增大,hash碰撞可以近似理解为前述介绍过的复用比特太多及复用比特的复用次数较多,当hash碰撞较大时,误将一个并未存在的元素判定为存在于布隆过滤器的概率增大,从而导致误判率增大,例如一个元素本不存在布隆过滤器中,但是由于hash碰撞却将其误判为存在于布隆过滤器中了,例如经过验证,当二进制数组中为1的比特数超过比特总数的一半时,布隆过滤器的误判率将会大幅增大,例如可以将误判率达到容忍值时的布隆过滤器的状态称作“填满”。基于此考虑,为了确保较低的误判率,在布隆过滤器“填满”时,需要将布隆过滤器中的所有的1重置为0,这个过程可以称作布隆过滤器的重置,在布隆过滤器重置之后,存放于布隆过滤器中的所有短视频的存在关系也被清除,对于推荐系统而言,也就会将这些被清除的短视频重新认为是未被观看过的短视频了。
例如,对于短视频推荐系统来说,当使用的布隆过滤器中存储200条短视频时就被“填满”了,为了降低误判率,目前采用的方式就是将存储的200条短视频全部清除,再重新存储其它的用户最近观看的短视频。然而,由于推荐系统一般是按照短视频的发布时间向用户优先推荐最新发布的短视频,如果用户的观看量较大,例如一天观看上百条短视频,新发布的短视频可能很快就被看完,那么从布隆过滤器中清除的这200条短视频就很可能很快又被重复推荐给用户,例如2天后就被重复推荐给用户了,从而导致重复推荐的概率较大,所以,目前的推荐系统在推荐短视频等多媒体内容时的重复推荐率较大,这样会降低其它还未被观看过的短视频的曝光率,当用户看到一些重复推荐的短视频时,可能会质疑推荐平台的短视频的生态丰富度,从而降低用户的使用体验。
本发明人对现有技术进行分析,发现在现有的短视频推荐系统中导致重复推荐率大的主要原因是用户观看过的部分短视频是从布隆过滤器中被突兀的一次性释放,这导致大量的已观看过的短视频瞬间全部又被标记为未被观看的状态,所以在用户观看量较大时就很容易又被重复推荐,鉴于此,本发明人考虑到可以采用一种平滑、渐变的释放方式将短视频从布隆过滤器中清除,具体来说例如可以分批将布隆过滤器中的短视频清除,这样可以将一些短视频保存在布隆过滤器中的时间尽量延长,因为推荐系统在推荐短视频时是按照发布时间越近越优先推荐的原则进行推荐的,所以已被观看过的短视频在布隆过滤器中保存的时间越长,在其延长保存的这段时间内推荐系统就可以将更多的最近发布的短视频进行推荐,那么当其从布隆过滤器中释放时,其发布时间相对于又新发布的大量短视频来说间隔时长就更久了,所以其被重复推荐的概率也就减小,简言之,就是使得布隆过滤器中已“填满”的短视频能够分批次地平滑式地释放,通过尽量延长短视频在布隆过滤器中的存放时间以增加其发布间隔时间,从而减小被重复推荐的可能。
以上是以短视频推荐系统为例进行说明,对于其它的一些推荐系统,例如资讯推荐系统、网页推荐系统等其它与上述的短视频推荐系统采用相同的推荐机制的推荐系统而言,均可以参照上述进行类似的理解。为了便于描述和理解,以下以短视频推荐系统向用户推荐短视频为例对本发明实施例中的技术方案进行介绍。
根据以上发明构思,本发明人设计出了一种分区对布隆过滤器中的短视频进行分批清除的方案,实施该方案的前提是需要布隆过滤器具备分区重置的能力,基于此,本发明人对现有的布隆过滤器进行改进,即将现有的布隆过滤器的二进制数组划分为至少两个分区,每个分区可以分别作为一个独立的存储区域来存储映射已观看过的短视频,也就是说,本发明实施例中的改进型的布隆过滤器可以在多个分区中相互独立的存储映射短视频,从而实现真正意义上的分区存储以及分区清除的目的。通过分区释放的方式,可以先将部分分区(例如最早写满短视频的分区)优先释放掉,并将其余分区的短视频暂时保留,这样可以尽量延长其它分区中的短视频在布隆过滤器中的存放时间,即尽量保持其是已被观看的状态,进而在后续被释放时可以使得间隔发布的时间尽量延长,从而减小被重复推荐的概率,达到整体上减少重复推荐的数量以实现减小重复推荐率的目的。
在介绍完本发明实施例的设计思想之后,下面对本发明实施例中的推荐多媒体内容的方案适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本发明实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本发明实施例提供的技术方案。
请参见图3,图3为本发明实施例中的推荐多媒体内容的方案适用的一种应用场景,在该应用场景中包括服务器304、第一终端设备301、第二终端设备302和第三终端设备303,其中的服务器304可以是服务于多媒体推荐平台的服务器,例如是资讯推荐服务器、短视频推荐服务器,等等。每个终端设备可以对应一个用户,以第二终端设备302及短视频推荐场景为例,第二终端设备302对应用户2,用户2可以操作第二终端设备302向服务器104发送短视频推荐请求,进一步地,服务器304可以采用本发明实施例中的推荐多媒体内容的方法向第二终端设备302推荐短视频以便用户2观看。需要说明的是,图3中的每个终端设备既可以作为短视频请求端请求短视频资源,同时也可以上传短视频以通过服务器104发布,即同时也可以是短视频发布端。
图3中的每个终端设备可以是手机、平板电脑、掌上电脑(Personal DigitalAssistant,PDA),笔记本电脑、智能穿戴式设备(例如智能手表和智能头盔)、个人计算机,等等。以及,图3中的服务器304可以是个人计算机、大中型计算机、计算机集群,等等。
为进一步说明本发明实施例提供的推荐多媒体内容的方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本发明实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本发明实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的应用环境)。
请参见图4,本发明实施例提供一种推荐多媒体内容的方法,为了便于理解,以下先对本发明实施例中的技术方案所使用的布隆过滤器(即前述提到的改进型的布隆过滤器)进行说明。
本发明实施例中,对布隆过滤器进行分区,是指将布隆过滤器的二进制位组划分为多个连续的分区,例如图5A所示的将二进制位组划分为2个连续的分区,得到分区1和分区2,或者如图5B所示的将二进制位组划分为3个连续的分区,得到分区1、分区2和分区3,在分区时可以将二进制位组包括的bit数均分以得到多个相同大小的分区,每个分区所包括的bit数是相等的;或者,也可以采用不均分的方式,即,划分的所有分区是未均分的,在该分区方式中,每个分区所包括的bit数不是全部相等的,即,划分的所有分区中有至少两个分区所包括的bit数不相等,例如划分成了分区1、分区2、分区3和分区4这4个分区,在一种可能的实施方式中,这4个分区所包括的bit数可以均不相等,或者,在另一种可能的实施方式中,这4个分区中的分区1和分区3所包括的bit数相等(例如均包括T个bit),而分区2和分区4所包括的bit数相等(例如均包括R个bit),但是,T和R是不相等的。
另外,分区的数量可以根据布隆过滤器预定的缓存容量及对应要求的误判率阈值确定,例如,对于当前推荐系统而言,预定的参数要求是保证对于存储映射在布隆过滤器中的2000条短视频其对应的误判率不高于1/1000,那么这里的2000条短视频即可以理解为是布隆过滤器的缓存容量,而1/1000可以理解为是布隆过滤器的误判率阈值,这里所说的误判是指将一个未存在于布隆过滤器中的元素误判为存在于布隆过滤器中,由于误判,可能使得推荐系统不会将该误判的短视频再推荐给用户,站在用户侧来说,对于误判的短视频就不能够观看到。例如在将布隆过滤器均分为两个分区之后,按照前述的缓存容量和误判率阈值,经过计算,可以得到每个分区的缓存容量为1000且每个分区的误判率阈值为1/2000。采用由缓存容量及对应要求的误判率阈值确定分区数量的方式,可以尽量考虑每个分区能够存储映射的短视频数量,同时保证每个分区不能出现较大的hash碰撞,以尽量在缓存容量和误判率之间进行权衡,以尽量同时满足这个参数的要求。
对于分区后的布隆过滤器,在映射存储短视频时,可以按顺序依次将短视频映射写到多个分区中,例如先“填满”分区1,再写分区2,分区2“填满”后再写分区3,……,直到所有的分区全部被“填满”时即可认为布隆过滤器被“填满”。另外,在映射短视频时,可以按照相邻分区连续写入,即如前所述的先写分区1,再写分区2,然后写分区3,等等,或者也可以不按照相邻的方式连续写入,例如可以先写分区1,在分区1“填满”之后再写分区3,分区3“填满”之后再写分区2,等等,不管采用何种方式写入,可以记录每个分区写入短视频的顺序,又由于在写入时是按照将用户观看过的短视频的时间先后写入,所以通过分区的写入顺序也可以侧面知晓各个分区中所写入的短视频大概被观看的时间先后,例如分区1中的短视频先于分区3写入,那么即可以认为分区1中的短视频是先于分区3中的短视频被用户观看。
在介绍完布隆过滤器的分区之后,以下再介绍本发明实施例中的推荐多媒体内容的方法,该方法可以应用于推荐系统中的推荐服务器,例如可以应用于图3中的服务器304,即该方法可以由推荐系统执行,具体来说,可以由推荐系统中的推荐服务器执行。继续参见图4,本发明实施例中的推荐多媒体内容的方法的流程描述如下。
步骤401:获得携带有用户的用户标识的多媒体内容推荐请求。
首先说明的是,为了便于描述和理解,在后文的介绍中均以多媒体内容为短视频为例进行说明,所以在后文的介绍中,大多数描述中是以短视频表示多媒体内容。
当用户登录短视频推荐平台需要观看短视频时,可以操作自己的终端设备以下拉短视频列表,基于该操作,终端设备可以生成短视频推荐请求(即多媒体内容推荐请求),并将该短视频请求发送给短视频推荐系统,短视频推荐系统即可获得终端设备发送的该短视频推荐请求,并且为了对各个用户进行标识,终端设备发送的每条短视频请求中可以携带自身的用户标识,以便于短视频推荐系统可以根据不同的用户标识对不同用户的请求推送相应的短视频资源,以满足不同用户的差异化需求。
步骤402:根据用户标识,从多媒体内容推荐池中确定与用户匹配的候选多媒体内容。
在获得短视频推荐请求之后,短视频推荐系统可以根据该视频推荐请求中携带的用户标识确定出对应的用户,在确定出用户之后,如前所述的,可以先从短视频推荐池中拉取出最近发布的短视频,再基于该用户的历史观看记录或者偏好设置筛选得到适用于该用户的匹配的待推荐短视频,本发明实施例中将筛选出的匹配的待推荐短视频称作候选短视频(即候选多媒体内容),通过筛选可以使得选择出的候选短视频是能够尽量满足该用户的观看需求的,由于筛选出的候选短视频中可能包括该用户已经观看过的短视频,所以为了避免重复推荐,短视频推荐系统还可以将这些候选短视频与该用户对应配置的布隆过滤器进行比较,以进一步筛选出该用户已经观看过的短视频。
步骤403:确定与用户标识对应的布隆过滤器。
在发明实施例中,可以基于用户标识为每个用户配置对应的布隆过滤器,配置的布隆过滤器用于存储映射对应的用户已观看过的短视频,所以,在获得了短视频推荐请求之后,还可以基于短视频推荐请求中的用户标识确定出对应配置的布隆过滤器,由于该布隆过滤器是用于存放映射该用户观看过的短视频,所以在得到候选短视频后,可以检验该布隆过滤器中是否包括这些候选短视频,即通过该布隆过滤器来检测候选短视频中的已观看短视频,进而将已观看过的短视频排除。
如前所述,本发明实施例中的布隆过滤器是采用分区方式进行改进后的改进型布隆过滤器,所以该布隆过滤器的二进制位组被划分为了至少两个分区,每个分区按照时间先后映射有该用户观看过的短视频,映射的每条短视频经过K次哈希运算得到在相应分区中的K个映射位置,其中的K例如为3、4、8或其它正整数,K表示针对每个短视频进行哈希运算的轮数。
针对布隆过滤器中的任一分区,在向该分区映射一条短视频之后,可以统计该分区中映射为1的比特数,在该分区映射为1的比特数与该分区包括的总比特数的比例大于等于预设比例时,例如大于1/2时,可以确定该分区被“填满”。按照此方式,可以判断每个分区是否被“填满”,例如图6A所示的布隆过滤器的二进制位组被划分为2个分区且该2个分区均被“填满”的示意图。在一种可能的实施方式中,例如可以在当前所有的分区均被“填满”,即当前没有空闲分区可用时,即认为布隆过滤器整体上被“填满”,在填满之后,如果希望继续往该布隆过滤器中存储映射短视频的话,则需要先将该布隆过滤器重置,此处需要说明的是,本发明实施例中是通过分区重置的方式来实现对布隆过滤器的重置的,重置的具体实施在后文中详细介绍。
步骤404:从候选多媒体内容中排除布隆过滤器中存储的用户已观看过的多媒体内容。
在确定了欲推荐给用户推荐的候选短视频以及为用户对应配置的布隆过滤器之后,则可以采用前述介绍的如何判断一个元素是否存在于布隆过滤器之中的校验方式,再依次校验每个候选短视频是否存在于布隆过滤器中,若确定某待校验的候选短视频存在于布隆过滤器中,则表明用户已经观看过这些待校验的候选短视频,为了避免重复推荐,可以将其从候选短视频中排除,采用相似的方式,可以对每个候选短视频进行是否已被观看过的校验,进而可以从之前初步筛选出的候选短视频中排除布隆过滤器的所有分区映射的短视频。
由于在存储映射的时候,每个分区是独立对短视频进行存储映射的,也就是说,通过对某个短视频进行多轮(例如4轮)哈希运算后所得到的4个映射位置均是在布隆过滤器的一个独立分区中,所以在校验的时候,也是以一个独立的分区对待校验的每个候选短视频的所有映射位置对应的比特是否全为1进行校验,从而提高对候选短视频是否已被观看的准确辨识。
在从候选短视频中将布隆过滤器中的所有短视频排除之后,即将候选短视频中用户已经观看过的短视频过滤掉之后,即得到剩下的候选短视频,即得到候选多媒体内容的剩余部分。
步骤405:将候选多媒体内容的剩余部分推荐给用户。
对于剩余的候选短视频,可以将其全部推荐给用户,或者可以基于用户的观看量或者网络状态选择一部分推荐,等等,从而完成对用户的短视频的推荐,以成功完成对用户的短视频推荐请求的响应,满足用户即时的短视频观看需求,并且是在筛选和过滤之后进行的推荐,这样可以进一步地的符合用户的观看需求,同时可以尽量减少重复推荐,提升用户的使用体验。
在实际中,随着时间的推移,用户观看过的短视频的数量也是在逐渐增加的,所以在布隆过滤器中映射的短视频也需要进行动态的更新,在布隆过滤器创建之后,就可以将用户观看过的短视频往其中存储映射,具体来说,如前所介绍的,可以依次往布隆过滤器的二进制位组的各个分区中进行存储映射,待所有分区都被“填满”时,则可以认为布隆过滤器被“布隆过滤器”,此时则需要对布隆过滤器进行重置,本发明实施例中是按照分区重置的方式来实现对布隆过滤器中存储映射的短视频进行分批次地、平滑地进行清除的目的,为了便于理解,以下继续结合图4对本发明实施例中的分区重置进行说明。
步骤406:判断布隆过滤器是否满足预设重置条件。
其中,预设重置条件是指在确保布隆过滤器的误判率不超过预定的误判率阈值时需要对布隆过滤器进行重置的条件,例如,当布隆过滤器中的所有分区均被“填满”而使得布隆过滤器被“填满”时则可以认为布隆过滤器满足预设重置条件,或者,在布隆过滤器包括分区数量较多时,另一种预设重置条件还可以是指已被“填满”的分区数量占总分区数量的比例大于规定的比例阈值时,例如总分区有10个,当已被“填满”的分区有8个时也可以认为布隆过滤器满足预设重置条件。
无论是何种预设重置条件,在满足预设重置条件时,为了确保误判率,则可以对布隆过滤器进行重置。
步骤407:在布隆过滤器满足预设重置条件时,根据映射时间先后顺序,从该布隆过滤器的所有分区中确定映射时间靠前的部分分区。
在需要对布隆过滤器进行清除重置时,基于本发明实施例中的分区的方式,可以先获得记录的各个分区的写入顺序,再根据映射时间先后顺序从已被“填满”的所有分区中找到先映射的一个或多个分区,为了便于描述,例如可以将确定出的该一个或多个分区称作目标分区,例如可以将最早写入的一个分区确定为目标分区,或者可以将写入最早的两个分区确定为目标分区,需要说明的是,所确定出的目标分区的个数必定小于划分的所有分区的总数量,则目标分区是布隆过滤器的所有分区中的部分分区,这样可以确保至少有一个分区没有被一同全部清除,换言之,按照分区重置的方式,可以保留部分分区继续存储映射在布隆过滤器,以尽量延长这些分区中存储映射的短视频的“已被观看”的状态,避免过早释放而又被重复推荐。
步骤408:将确定出的部分分区中所有为1的比特置为0。
在选择出部分的目标分区之后,通过将其所有已经被映射为1的比特全部置为0的方式实现对这些目标分区的重置,即将目标分区中写入的用户观看过的短视频全部清除,以得到重置后的分区。例如图6B所示的被划分为2个分区的二进制位组的示意图,可以将最先被“填满”的分区1确定为目标分区,并且将分区1进行重置,即将分区中的所有1重置为0。
步骤409:在对选择出的部分分区重置之后,可以再将用户观看过的多媒体内容映射到重置后的分区中。
在将映射时间靠前的部分分区重置之后,可以再将用户最近观看过的短视频采用前述介绍的方式映射到清空后的分区中,例如图6C所示的对重置后的分区1再写入短视频的示意图,通过该方式可以继续“填满”分区1,在此时,除分区1之外的其它分区(即分区2)中的短视频仍旧是保存在布隆过滤器中的,而并非是像现有技术一样全部随同分区1中的短视频被同时清除,这样可以尽量延长分区2中的已被观看的短视频保存在布隆过滤器中的时间,避免过早地被释放而被重复推荐,从而降低被重复推荐的概率。
在对重置后的分区重新写入用户最近观看过的短视频写入之后,布隆过滤器中用户观看过的短视频得到了一定程度的更新,当此时接收到用户的短视频推荐请求时,则可以基于布隆过滤器中更新后的已观看短视频对再次筛选出的候选短视频进行过滤,以避免对用户的重复推荐。
需要说明的是,用户的短视频推荐请求可以是不定时的,即用户在具有观看需求的时候均可以向推荐系统发送短视频推荐请求,对于短视频推荐系统而言,只要接收到用户的短视频推荐请求,则可以采用前述步骤401-步骤405的方式对用户进行短视频的推荐,而在推荐的过程中,无论布隆过滤器当前是何种状态,短视频推荐系统都可以布隆过滤器当前已经存储映射的短视频对候选短视频进行过滤,以对用户进行及时有效地推荐。
也就是说,在本发明实施例中,短视频推荐系统使用布隆过滤器对候选短视频进行过滤的过程与布隆过滤器的维护(例如映射存储、重置、重置后更新)过程可以不具有必要的关联关系,当短视频推荐系统需要使用布隆过滤器进行重复过滤时,可以不关心布隆过滤器当前的实际状态,而布隆过滤器的维护可以是一个独立的过程,例如短视频推荐系统可以在获得用户已观看的短视频之后,即将这些已观看过的短视频按照观看时间的先后或者按照发布时间的先后顺序写入布隆过滤器的各个分区中,当布隆过滤器满足预设重置条件时则采用前述介绍的步骤406-步骤409的方式进行分区重置和更新,在更新之后还可以继续检测布隆过滤器是否再次满足预设重置条件,即在步骤409之后可以再执行步骤406,以实现对布隆过滤器中的用户观看过的短视频的更新,以确保后续在基于该布隆过滤器对欲推荐给用户的候选短视频进行去重过滤时,可以满足过滤要求,进而实现有效的去重,尽量降低重复推荐率,例如在图4中,在步骤403、步骤406和步骤409之后均可以执行步骤404,即在多个时刻均可以使用布隆过滤器进行去重过滤,总的来说,在短视频推荐系统需要对用户的短视频推荐请求进行响应而进行短视频推荐时均可以执行步骤404。
本发明实施例中,通过改进后的布隆过滤器可以将用户观看过的多媒体内容(例如短视频)分区映射存储,这样在布隆过滤器满足预设重置条件时可以选取其中先映射的部分分区进行重置,例如选择最先映射的一个分区重置,通过分区重置的方式,可以先将部分分区先释放掉,并将其余分区的多媒体内容暂时保留,这样可以尽量延长其它分区中的多媒体内容在布隆过滤器中的存放时间,通过尽量延长存放时间可以尽量保持其是已被观看的状态,进而在后续被释放时可以使得间隔发布的时间尽量延长,从而减小被重复推荐的概率,达到整体上减少重复推荐的数量以实现减小重复推荐率的目的。
针对每个推荐系统,根据预定的产品策略可以设置针对布隆过滤器的缓存容量及对应要求的误判率阈值,例如对于当前的短视频推荐系统而言,预定的产品策略要求是保证在布隆过滤器中存储2000条短视频时其误判率不高于1/1000,那么这里的2000条短视频即可以理解为是布隆过滤器的缓存容量,而1/1000可以理解为是布隆过滤器的误判率阈值。在现有技术中,布隆过滤器的缓存容量及对应要求的误判率阈值是人工设置的,例如根据经验值设定,在缓存容量及对应要求的误判率阈值被定好之后,再采用人工设定的布隆过滤器的比特数和hash函数轮数的方式来固定创建布隆过滤器,这种创建方式缺乏灵活性,并且人工设定的方式与设计人员自身的主观能力有很大关系,假设用P表示布隆过滤器的缓存容量,以及用Q表示对应要求的误判率阈值,所以在现有的方式下难以精确实现P与Q之间的平衡,并且灵活性较低。
鉴于以上分析,本发明实施例提供一种可以根据P、Q动态计算布隆过滤器所包括的bit数(例如以bits表示)以及hash轮数(例如以hashes表示)的方式,具体来说,可以获得预定要求的缓存容量及对应要求的误判率阈值,然后再缓存容量和对应要求的误判率阈值输入预定确定函数,以得到二进制位组包括的比特数和K的值,即得到bits和hashes,最后根据得到的bits和hashes创建布隆过滤器,例如按照以下计算方式计算得到bits和hashes。
bits=P*lnQ/(ln2)2
bpe=bits/P
hashes=bpe*ln2
其中,P表示要求的缓存容量,Q表示对应要求的误判率阈值,bpe表示存储一个元素需要的bit数。本发明实施例通过预定确定函数的方式可以动态地计算得到创建布隆过滤器的总bit数和hash运算的轮数,也就是说,可以通过动态计算的方式,根据期望的要存储的缓存容量P和误判率阈值Q直接计算出需要的存储空间、hash轮数的合理参考值,在使用参考值过程中保证可以在缓存容量不超过P的情况下误判率不超过误判率阈值Q,相比于现有技术中的人工设置的固定方式可以提高布隆过滤器创建的灵活性,同时可以通过合理的设置bits和hashes,可以保证在映射时各个映射位置的随机性更大且分布更均匀,这样可以在一定程度上降低hash碰撞率,继而提高布隆过滤器的存储效率并降低误判率。
此外,在推荐系统的使用过程中,可能面临着产品策略调整,例如随着市场的变化以及用户的观看需求的变化,可能需要调整P和对应要求的Q,例如原始的参数要求是P1和Q1,即要求布隆过滤器在存储P1条短视频时误判率不超过Q1,但是随着用户观看需求的变化,可能需要将参数调整为P2和Q2,即要求布隆过滤器在存储P2条短视频时误判率不超过Q2,按照现有的方式,还是会继续使用之前创建的布隆过滤器,然而随着产品要求的变化,还是使用原始配置的布隆过滤器则可能难以满足参数要求,然而目前并没有什么较好的处理方案,所以使得产品策略调整之后,难以在缓存容量和对应要求的误判率阈值之间取得平衡。鉴于此,本发明实施例提供一种可以根据调整后的参数要求创建新的布隆过滤器的方式来满足参数调整后的缓存要求,即通过多个布隆过滤器实例来满足产品策略调整的需求。
本发明实施例中,推荐系统可以获得策略调整指令,该策略调整指令用于指示调整短视频的缓存容量且对应要求的误判率阈值,假设调整前的参数为P1和P2,而调整后的要求是P2和Q2,那么则可以根据P2和Q2重新创建一个布隆过滤器,例如可以按照前述介绍的创建原始的布隆过滤器的方式创建新的布隆过滤器,进而再通过新创建的布隆过滤器继续映射用户观看过的短视频。例如将创建之前使用的布隆过滤器称作旧的布隆过滤器,以及将新创建的布隆过滤器称作新的布隆过滤器,在策略调整之后,即可以使用新的布隆过滤器再对用户观看过的短视频进行缓存映射。也就是说,可以通过创建新的布隆过滤器实例的方式理满足产品策略的调整,即通过多布隆过滤器实例的方式可以适应产品策略调整,在缓存容量和误判率之间取得平衡,这样可以尽量满足无论是产品侧还是运营侧的调整运营策略,通过新创建的布隆过滤器可以尽量满足策略调整的参数要求,以尽量满足缓存需求和对应要求的误判率要求,在确保缓存效率的前提下还保证了必须的误判率,从而满足产品动态的策略调整,同时也能满足用户的使用需求。
在创建新的布隆过滤器之后,旧的布隆过滤器可以暂时保留,即可以让旧的布隆过滤器中缓存的短视频暂时仍然保留为已被观看的状态,这样可以为了保证策略变更期间用户体验仍然能够有所保证,避免废弃旧的布隆过滤器而新的布隆过滤器中又还没有记录足够数量的浏览记录的情况下,导致用户看到大量的最近已经浏览过的短视频记录,这可能在较大程度上造成大量的重复推荐,使得用户质疑推荐平台的产品丰富性,降低用户体验。
在具体实施过程中,为了节约存储空间,可以设置一个过渡时间阈值,该过渡时间阈值例如设置为1周,在从新创建布隆过滤器开始达到该过渡时间阈值示,则可以删除旧的布隆过滤器,例如可以将旧的布隆过滤器中的所有1均置为0,以实现对旧的布隆过滤器的清空重置,重置后的布隆过滤器相当于是一个空的布隆过滤器,清空后的布隆过滤器可以另做它用,例如再用来存储其它的元素,或者可以直接将旧的布隆过滤器所占用的内存进行释放,以提高内存利用率。
其中,过渡时间阈值可以根据经验值设置,例如1周或2周,或者还可以根据用户的观看历史来计算,例如根据用户的观看历史可知用户的观看量很小,那么则可以尽早的将旧的布隆过滤器清空释放,因为由于用户的观看量很小即使将旧的布隆过滤器清楚,其中被释放的短视频被重复推荐给该用户的概率也是比较小的,如果确定某用户的观看量较大,那么则可以将旧的布隆过滤器保留稍微长一段时间,无论过渡时间阈值如何设置,其设置的依据是能够确保尽量能够完全过渡到新的布隆过滤器上来,以实现新旧布隆过滤器的彻底切换,以满足推荐系统侧和用户侧的实际需求,确保准确的切换过渡。
基于同一发明构思,本发明实施例提供一种推荐多媒体内容的装置,该推荐多媒体内容的装置可以是服务器,该推荐多媒体内容的装置能够实现前述的推荐多媒体内容的方法中推荐系统或推荐服务器的功能;或者,该推荐多媒体内容的装置也可以是能够支持推荐系统或推荐服务器实现前述的推荐多媒体内容的方法中推荐系统或推荐服务器的功能的装置。该推荐多媒体内容的装置可以是硬件结构、软件模块、或硬件结构加软件模块。该推荐多媒体内容的装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。请参见图7所示,本发明实施例提供的推荐多媒体内容的装置包括确定模块701、筛选模块702和推荐模块703,其中:
确定模块701,用于根据用户标识,从多媒体内容推荐池中确定与用户标识对应的用户匹配的候选多媒体内容;
筛选模块702,用于从候选多媒体内容中排除用户标识对应的布隆过滤器中存储的用户已观看过的多媒体内容;其中,布隆过滤器的二进制位组包括至少两个分区,每个分区按照时间先后存储用户观看过的多媒体内容,当布隆过滤器满足预设重置条件需要重置时,按照时间先后顺序重置时间靠前的分区;
推荐模块703,用于将候选多媒体内容的剩余部分推荐给用户。
本发明实施例中的二进制位组划分的分区的数量是根据布隆过滤器的缓存容量及对应要求的误判率阈值确定的。
请参见图8,本发明实施例中的推荐多媒体内容的装置还可以包括判断模块801,用于针对当前使用的分区,在向该分区映射一条多媒体内容之后,统计该分区中映射为1的比特数;在当前使用的分区映射为1的比特数与该分区包括的总比特数的比例大于等于预设比例时,确定当前使用的分区填满;以及在没有空闲分区可用时,确定布隆过滤器满足预设重置条件。
继续参见图8,本发明实施例中的推荐多媒体内容的装置还可以包括重置模块802,用于根据存储时间先后顺序从布隆过滤器的所有分区中确定映射时间靠前的部分分区;以及将部分分区中所有为1的比特重置为0。
继续参见图8,本发明实施例中的推荐多媒体内容的装置还可以包括创建模块803,用于将要求的缓存容量和对应的误判率阈值输入预定确定函数,以得到二进制位组包括的比特数和K的值,其中,存储到布隆过滤器的每条多媒体内容要求经过K次哈希运算得到在相应分区中的K个存储位置,K为正整数;以及根据得到的比特数和K的值创建布隆过滤器。
在一种可能的实施方式中,创建模块803还可以用于获得策略调整指令,其中,策略调整指令用于指示调整用于映射多媒体内容的缓存容量及对应要求的误判率阈值;根据策略调整后要求的缓存容量及对应的误判率阈值,创建新的布隆过滤器;以及通过新创建的布隆过滤器映射用户观看过的多媒体内容。
继续参见图8,本发明实施例中的推荐多媒体内容的装置还可以包括删除模块804,用于确定策略调整时期的过渡时间阈值;以及在从新创建布隆过滤器开始达到过渡时间阈值时,删除布隆过滤器。
在一种可能的实施方式中,删除模块804用于将布隆过滤器中所有映射为1的比特置为0;或者释放布隆过滤器所占用的内存。
前述的推荐多媒体内容的方法的实施例涉及的各步骤的所有相关内容均可以援引到本发明实施例中的推荐多媒体内容的装置所对应的功能模块的功能描述,在此不再赘述。
本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本发明各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于同一发明构思,本发明实施例还提供一种计算设备,该计算设备例如是前述的推荐系统或推荐服务器,如图9所示,本发明实施例中的计算设备包括至少一个处理器901,以及与至少一个处理器901连接的存储器902和通信接口903,本发明实施例中不限定处理器901与存储器902之间的具体连接介质,图9中是以处理器901和存储器902之间通过总线900连接为例,总线900在图9中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线900可以分为地址总线、数据总线、控制总线等,为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本发明实施例中,存储器902存储有可被至少一个处理器901执行的指令,至少一个处理器901通过执行存储器902存储的指令,可以执行前述的推荐多媒体内容的方法中所包括的步骤。
其中,处理器901是计算设备的控制中心,可以利用各种接口和线路连接整个计算设备的各个部分,通过运行或执行存储在存储器902内的指令以及调用存储在存储器902内的数据,计算设备的各种功能和处理数据,从而对计算设备进行整体监控。可选的,处理器901可包括一个或多个处理单元,处理器901可集成应用处理器和调制解调处理器,其中,处理器901主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器901中。在一些实施例中,处理器901和存储器902可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器901可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器902作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器902可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器902是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器902还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通信接口903是能够用于进行通信的传输接口,例如可以通过通信接口903接收数据或者发送数据。
参见图10所示的计算设备的进一步地的结构示意图,该计算设备还包括帮助计算设备内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1001、用于存储操作系统1002、应用程序1003和其他程序模块1004的大容量存储设备1005。
基本输入/输出系统1001包括有用于显示信息的显示器1006和用于用户输入信息的诸如鼠标、键盘之类的输入设备1007。其中显示器1006和输入设备1007都通过连接到系统总线900的基本输入/输出系统1001连接到处理器901。所述基本输入/输出系统1001还可以包括输入输出控制器以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1005通过连接到系统总线900的大容量存储控制器(未示出)连接到处理器901。所述大容量存储设备1005及其相关联的计算机可读介质为该服务器包提供非易失性存储。也就是说,大容量存储设备1005可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
根据本发明的各种实施例,该计算设备包还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即该计算设备可以通过连接在所述系统总线900上的通信接口903连接到网络1008,或者说,也可以使用通信接口903来连接到其他类型的网络或远程计算机系统(未示出)。
基于同一发明构思,本发明实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的推荐多媒体内容的方法的步骤。
基于同一发明构思,本发明实施例还提供一种推荐多媒体内容的装置,该推荐多媒体内容的装置包括至少一个处理器及存储介质,当该存储介质中包括的指令被该至少一个处理器执行时,可以执行如前述的推荐多媒体内容的方法的步骤。
基于同一发明构思,本发明实施例还提供一种推荐多媒体内容的装置,该推荐多媒体内容的装置包括至少一个处理器及存储介质,当该存储介质中包括的指令被该至少一个处理器执行时,可以执行如前述的推荐多媒体内容的方法的步骤。
基于同一发明构思,本发明实施例还提供一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现如前述的推荐多媒体内容的方法的步骤。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
在一些可能的实施方式中,本发明实施例提供的推荐多媒体内容的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机上运行时,所述程序代码用于使所述计算机执行前文述描述的根据本发明各种示例性实施方式的推荐多媒体内容的方法中的步骤。
基于同一发明构思,本申请实施例还提供一种推荐多媒体内容的装置,该推荐多媒体内容的装置包括:存储器,用于存储程序指令;处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行前文述描述的根据本发明各种示例性实施方式的推荐多媒体内容的方法中的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (11)

1.一种推荐多媒体内容的方法,其特征在于,所述方法包括:
根据用户标识,从多媒体内容推荐池中确定与所述用户标识对应的用户匹配的候选多媒体内容;
从所述候选多媒体内容中排除所述用户标识对应的布隆过滤器中存储的所述用户已观看过的多媒体内容;其中,所述布隆过滤器的二进制位组包括至少两个连续的分区,每个分区按照写入时间的先后顺序存储所述用户观看过的多媒体内容,当前一分区已填满时将所述用户观看过的多媒体内容写入下一个分区,当所述布隆过滤器满足预设重置条件需要重置时,按照写入时间的先后顺序重置写入时间靠前的分区,所述预设重置条件为使得所述布隆过滤器的误判率不超过预定的误判率阈值的条件;所述二进制位组划分的分区的数量是根据所述布隆过滤器的缓存容量及对应要求的误判率阈值确定的;
将所述候选多媒体内容的剩余部分推荐给所述用户;
获得策略调整指令,其中,所述策略调整指令用于指示调整用于映射多媒体内容的缓存容量及对应要求的误判率阈值;
根据策略调整后要求的缓存容量及对应的误判率阈值,创建新的布隆过滤器;
通过新创建的布隆过滤器映射所述用户观看过的多媒体内容。
2.如权利要求1所述的方法,其特征在于,确定所述布隆过滤器满足预设重置条件,具体包括:
针对当前使用的分区,在向该分区映射一条多媒体内容之后,统计该分区中映射为1的比特数;
在当前使用的分区映射为1的比特数与该分区包括的总比特数的比例大于等于预设比例时,确定当前使用的分区填满;
在没有空闲分区可用时,确定所述布隆过滤器满足所述预设重置条件。
3.如权利要求1所述的方法,其特征在于,按照写入时间的先后顺序重置写入时间靠前的分区,包括:
根据写入时间的先后顺序从所述布隆过滤器的所有分区中确定写入时间靠前的部分分区;
将所述部分分区中所有为1的比特重置为0。
4.如权利要求1所述的方法,其特征在于,所述至少两个连续的分区是均分的,或者,所述至少两个连续的分区未均分。
5.如权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
将要求的缓存容量和对应的误判率阈值输入预定确定函数,以得到所述二进制位组包括的比特数和K的值,其中,存储到所述布隆过滤器的每条多媒体内容要求经过K次哈希运算得到在相应分区中的K个存储位置,K为正整数;
根据得到的比特数和K的值创建所述布隆过滤器。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
确定策略调整时期的过渡时间阈值;
在从新创建布隆过滤器开始达到所述过渡时间阈值时,删除所述布隆过滤器。
7.如权利要求6所述的方法,其特征在于,删除所述布隆过滤器,具体包括:
将所述布隆过滤器中所有映射为1的比特置为0;或者,
释放所述布隆过滤器所占用的内存。
8.一种推荐多媒体内容的装置,其特征在于,所述装置包括:
确定模块,用于根据用户标识,从多媒体内容推荐池中确定与所述用户标识对应的用户匹配的候选多媒体内容;
筛选模块,用于从所述候选多媒体内容中排除所述用户标识对应的布隆过滤器中存储的所述用户已观看的多媒体内容,其中,所述布隆过滤器的二进制位组包括至少两个连续的分区,每个分区按照写入时间的先后顺序映射所述用户观看过的多媒体内容,当前一分区已填满时将所述用户观看过的多媒体内容写入下一个分区,当所述布隆过滤器满足预设重置条件需要重置时,按照写入时间的先后顺序重置写入时间靠前的分区,所述预设重置条件为使得所述布隆过滤器的误判率不超过预定的误判率阈值的条件;所述二进制位组划分的分区的数量是根据所述布隆过滤器的缓存容量及对应要求的误判率阈值确定的;
推荐模块,用于将所述候选多媒体内容的剩余部分推荐给所述用户;
创建模块,用于获得策略调整指令,其中,所述策略调整指令用于指示调整用于映射多媒体内容的缓存容量及对应要求的误判率阈值;并根据策略调整后要求的缓存容量及对应的误判率阈值,创建新的布隆过滤器;
映射模块,用于通过新创建的布隆过滤器映射所述用户观看过的多媒体内容。
9.如权利要求8所述的装置,其特征在于,所述装置还包括创建模块,用于:
将要求的缓存容量和对应的误判率阈值输入预定确定函数,以得到所述二进制位组包括的比特数和K的值,其中,存储到所述布隆过滤器的每条多媒体内容要求经过K次哈希运算得到在相应分区中的K个存储位置,K为正整数;
根据得到的比特数和K的值创建所述布隆过滤器。
10.一种计算设备,其特征在于,所述计算设备包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-7任一所述的方法包括的步骤。
11.一种可读存储介质,其特征在于,所述可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-7任一所述的方法包括的步骤。
CN201811319186.1A 2018-11-07 2018-11-07 一种推荐多媒体内容的方法、装置及计算设备 Active CN111159436B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811319186.1A CN111159436B (zh) 2018-11-07 2018-11-07 一种推荐多媒体内容的方法、装置及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811319186.1A CN111159436B (zh) 2018-11-07 2018-11-07 一种推荐多媒体内容的方法、装置及计算设备

Publications (2)

Publication Number Publication Date
CN111159436A CN111159436A (zh) 2020-05-15
CN111159436B true CN111159436B (zh) 2023-12-12

Family

ID=70555428

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811319186.1A Active CN111159436B (zh) 2018-11-07 2018-11-07 一种推荐多媒体内容的方法、装置及计算设备

Country Status (1)

Country Link
CN (1) CN111159436B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111836109A (zh) * 2020-07-16 2020-10-27 聚好看科技股份有限公司 显示设备、服务器及自动更新栏目框的方法
CN112162975A (zh) * 2020-09-25 2021-01-01 华南理工大学 基于单哈希均分布隆过滤器的重复数据删除技术实现方法
CN112528125A (zh) * 2020-12-23 2021-03-19 北京明略软件系统有限公司 避免内容重复推荐的方法、装置、电子设备及存储介质
CN113094192A (zh) * 2021-04-23 2021-07-09 杭州网易云音乐科技有限公司 一种数据处理方法、装置、介质和设备
US11520804B1 (en) 2021-05-13 2022-12-06 International Business Machines Corporation Association rule mining
CN113468274A (zh) * 2021-07-28 2021-10-01 浙江大华技术股份有限公司 数据存储方法和装置、存储介质及电子设备
US11762867B2 (en) 2021-10-07 2023-09-19 International Business Machines Corporation Association rule mining using max pattern transactions
US20230221864A1 (en) * 2022-01-10 2023-07-13 Vmware, Inc. Efficient inline block-level deduplication using a bloom filter and a small in-memory deduplication hash table
CN114385922A (zh) * 2022-01-17 2022-04-22 上海阿法迪智能数字科技股份有限公司 一种基于布隆滤波器的图书馆系统知识推荐方法
CN114245147B (zh) * 2022-02-24 2022-04-26 檀沐信息科技(深圳)有限公司 流媒体内容分发方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103383665A (zh) * 2013-07-12 2013-11-06 北京奇虎科技有限公司 适于url数据抓取中对数据缓存的方法及装置
US9043517B1 (en) * 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
CN106970930A (zh) * 2016-10-10 2017-07-21 阿里巴巴集团控股有限公司 消息发送确定方法及装置、数据表创建方法及装置
CN108133031A (zh) * 2017-12-29 2018-06-08 北京搜狐新媒体信息技术有限公司 一种过滤推荐视频候选结果的方法及装置
CN108140050A (zh) * 2016-04-25 2018-06-08 华为技术有限公司 一种使用布隆过滤器过滤文件的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103383665A (zh) * 2013-07-12 2013-11-06 北京奇虎科技有限公司 适于url数据抓取中对数据缓存的方法及装置
US9043517B1 (en) * 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
CN108140050A (zh) * 2016-04-25 2018-06-08 华为技术有限公司 一种使用布隆过滤器过滤文件的方法及装置
CN106970930A (zh) * 2016-10-10 2017-07-21 阿里巴巴集团控股有限公司 消息发送确定方法及装置、数据表创建方法及装置
CN108133031A (zh) * 2017-12-29 2018-06-08 北京搜狐新媒体信息技术有限公司 一种过滤推荐视频候选结果的方法及装置

Also Published As

Publication number Publication date
CN111159436A (zh) 2020-05-15

Similar Documents

Publication Publication Date Title
CN111159436B (zh) 一种推荐多媒体内容的方法、装置及计算设备
CN109947668B (zh) 存储数据的方法和装置
CN108829344A (zh) 数据存储方法、装置及存储介质
US20180027061A1 (en) Method and apparatus for elastically scaling virtual machine cluster
CN111049756B (zh) 请求响应方法、装置、电子设备及计算机可读存储介质
KR20060129873A (ko) 휴대단말기의 메모리 정리 방법
CN107092628B (zh) 时间序列数据的处理方法和装置
CN101635734A (zh) 非易失性存储介质上的下载数据存储管理方法及装置
CN111858067B (zh) 一种数据处理方法及装置
CN111737168A (zh) 一种缓存系统、缓存处理方法、装置、设备及介质
CN105653209A (zh) 一种对象存储数据传输方法及装置
CN112579692A (zh) 一种数据同步方法、装置、系统、设备及存储介质
CN113495889A (zh) 一种分布式对象存储方法、装置、电子设备及存储介质
CN108415962A (zh) 一种云存储系统
CN109325001B (zh) 基于元数据服务器删除小文件的方法、装置及设备
CN108958660B (zh) 分布式存储系统及其数据处理方法和装置
CN110427394B (zh) 数据操作方法及装置
CN110045924B (zh) 分级存储方法、装置、电子设备及计算机可读存储介质
US20160253591A1 (en) Method and apparatus for managing performance of database
CN112711726B (zh) 缓存视频数据的方法、装置、计算机设备和存储介质
CN101819589B (zh) 一种控制文件输入输出缓存的方法及装置
CN113986962A (zh) 排行榜生成方法、装置、设备及存储介质
CN110658999B (zh) 一种信息更新方法、装置、设备及计算机可读存储介质
CN113805864A (zh) 一种项目工程的生成方法、装置、电子设备及存储介质
CN115809263A (zh) 数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant