广告召回方法及装置、系统、计算机存储介质、电子设备与流程

文档序号:27970651发布日期:2021-12-14 20:59阅读:82来源:国知局
1.本公开涉及索引构建
技术领域
:,特别涉及一种广告召回方法、广告召回装置、广告召回系统、计算机可读存储介质及电子设备。
背景技术
::2.在线广告是一种常见的商业变现方式,对于在线广告而言,广告索引的结构和实现方式会直接影响广告系统的服务性能。随着机器学习、深度神经网络的发展,数据向量化已经成为一种趋势。向量化索引是通过数学量化模型,对向量构建一种时间和空间都比较高效的数据索引结构。3.目前向量化索引方法主要有四大类,基于树的方法、哈希方法、矢量化方法和基于图的方法,但是现有的向量化索引方法存在构建难度大、内存消耗大,并且检索效率较慢的问题。4.鉴于此,本领域亟需开发一种新的广告召回方法及装置。5.需要说明的是,在上述
背景技术
:部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。技术实现要素:6.本公开的目的在于提供一种广告召回方法、广告召回装置、广告召回系统、计算机可读存储介质及电子设备,进而至少在一定程度上提高索引构建效率,减小内存消耗,并且能够提高检索效率。7.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。8.根据本公开的一个方面,提供一种广告召回方法,包括:9.获取广告更新数据,对所述广告更新数据进行预处理,以获取目标广告更新数据;10.根据所述目标广告更新数据生成索引树高度;11.根据所述索引树高度、目标节点包含的数据量和所述目标节点对应的层级对所述目标广告更新数据进行聚类,以形成索引树;12.根据前端广告召回请求在所述索引树中进行检索,并将检索得到的目标广告数据返回至前端。13.在本公开的示例性实施例中,所述根据所述目标广告更新数据生成索引树高度,包括:14.获取所述目标广告更新数据的数量级信息,并获取所述数量级信息的常用对数值;15.将所述常用对数值和预设值中的最大值作为所述索引树高度。16.在本公开的示例性实施例中,所述目标节点为所述索引树中已存在节点中的任意一个;17.所述根据所述索引树高度、目标节点包含的数据量和所述目标节点对应的层级对所述目标广告更新数据进行聚类,以获取索引树,包括:18.根据所述索引树高度、所述目标节点包含的数据量和所述目标节点对应的层级确定所述目标节点对应的聚类数;19.根据所述聚类数对所述目标节点中的广告数据进行聚类;20.遍历所述索引树中的所有目标节点,重复上述步骤,直至达到结束条件,以获取所述索引树。21.在本公开的示例性实施例中,所述根据所述索引树高度、所述目标节点包含的数据量和所述目标节点对应的层级确定所述目标节点对应的聚类数,包括:22.获取所述索引树高度与所述目标节点对应的层级之间的差值;23.根据所述差值和所述目标节点包含的数据量确定所述聚类数。24.在本公开的示例性实施例中,所述结束条件为所述索引树的高度达到所述索引树高度,或者所述目标节点中包含的数据量小于预设阈值。25.在本公开的示例性实施例中,所述获取广告更新数据,包括:26.获取数据更新检测间隔时间;27.根据所述数据更新检测间隔时间对输入广告数据进行多线检测,以获取多组初始广告数据;28.将各组所述初始广告数据和与各组所述初始数据对应的检测时间对应存储于无序容器中,并多线程检测各组所述初始广告数据是否发生更新;29.当判定所述初始广告数据发生更新时,对所述初始广告数据进行校验更新,以获取所述广告更新数据。30.在本公开的示例性实施例中,所述更新数据的数量为多组,相应地,所述索引树的数量为多个;所述方法还包括:31.在获取多个所述索引树后,对各所述索引树中的数据进行序列化处理并存储。32.在本公开的示例性实施例中,所述根据前端广告召回请求在所述索引树中进行检索,并将检索得到的目标广告数据返回至前端,包括:33.解析所述前端广告召回请求,获取用户行为特征;34.对所述用户行为特征进行处理,以获取多个处理结果;35.根据各所述处理结果分别在对应的序列化处理后的索引树中进行检索,以获取目标索引数据;36.根据所述目标索引数据确定所述目标广告数据,并将所述目标广告数据返回至所述前端。37.在本公开的示例性实施例中,所述根据所述目标索引数据确定所述目标广告数据,包括:38.对所述目标索引数据进行打分排序,以获取索引数据序列;39.从所述索引数据序列中依次截取预设数量的索引数据作为所述目标广告数据。40.根据本公开的一个方面,提供一种广告召回装置,包括:41.广告数据索引装置,用于获取广告更新数据,并对所述广告更新数据进行预处理,以获取目标广告更新数据;42.根据所述目标广告更新数据生成索引树高度;43.根据所述索引树高度、目标节点包含的数据量和所述目标节点对应的层级对所述目标广告更新数据进行聚类,以形成索引树;44.广告数据检索装置,用于根据前端广告召回请求在所述索引树中进行检索,并将检索得到的目标广告数据返回至前端。45.根据本公开的一个方面,提供一种广告召回系统,包括:46.广告数据存储装置;47.广告数据索引装置,用于获取所述广告数据存储装置发送的输入广告数据,并根据所述输入广告数据构建索引树;48.广告数据检索装置,用于接收所述广告数据索引装置发送的索引树,根据接收到的前端广告召回请求在所述索引树中进行检索,并将检索得到的目标广告数据返回至前端;49.其中,根据所述输入广告数据构建索引树,包括:50.根据配置的数据更新检测间隔时间对所述输入广告数据进行多线检测,以获取初始广告数据;51.检测所述初始广告数据是否发生更新,当判定所述初始广告数据发生更新时,对所述初始广告数据进行校验更新,以获取广告更新数据;52.对所述广告更新数据进行预处理以获取目标广告更新数据,并根据所述目标广告更新数据生成索引树高度;53.根据所述索引树高度、目标节点包含的数据量和所述目标节点对应的层级对所述目标广告更新数据进行聚类,以形成所述索引树。54.在本公开的示例性实施例中,所述根据配置的数据更新检测间隔时间对所述输入广告数据进行多线检测,以获取初始广告数据,包括:55.获取多个广告召回模型的模型参数和所述数据更新检测间隔时间;56.通过具有所述模型参数的广告召回模型根据所述数据更新检测间隔时间对所述输入广告数据进行检测,以获取所述初始广告数据。57.在本公开的示例性实施例中,所述广告数据索引装置包括数据调度单元;所述根据所述输入广告数据构建索引树,包括:58.在对所述初始广告数据进行校验更新之前,通过所述数据调度单元将各组所述初始广告数据、与各组所述初始广告数据对应的广告召回模型的模型参数和与各组所述初始广告数据对应的检测时间对应存储于无序容器中。59.在本公开的示例性实施例中,所述广告数据索引装置还包括多个数据管理单元;60.所述对所述初始广告数据进行校验更新,以获取广告更新数据,包括:61.通过与所述初始广告数据对应的数据管理单元对所述初始广告数据进行校验更新,以获取所述广告更新数据。62.根据本公开的一个方面,提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的广告召回方法。63.根据本公开的一个方面,提供一种电子设备,包括:64.处理器;以及65.存储器,用于存储所述处理器的可执行指令;66.其中,所述处理器配置为经由执行所述可执行指令来执行如上所述的广告召回方法。67.由上述技术方案可知,本公开示例性实施例中的广告召回方法及装置、计算机可读存储介质、电子设备至少具备以下优点和积极效果:68.本公开中的广告召回方法,首先获取广告更新数据,接着对广告更新数据进行预处理以获取目标广告更新数据;然后根据目标广告更新数据生成索引树高度;接着根据索引树高度、目标节点包含的数据量和目标节点对应的层级进行聚类,以形成索引树;最后根据前端广告召回请求在索引树中进行检索,并将检索得到的目标广告数据返回至前端。本公开的广告召回方法能够基于目标广告更新数据确定索引树高度,并基于索引树高度、目标节点包含的数据量和目标节点对应的层级进行聚类,形成索引树,一方面提高了索引树构建的效率和索引树的质量,并且降低了内存和耗时;另一方面保证了索引树高度的可控性以及数据的分散性和均衡性,使得索引树的结构更稳定,广告召回结果更精准。69.本公开应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明70.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。71.图1示出相关技术中二维空间内kd树对全空间的划分过程;72.图2示出相关技术中kd树的结构示例图;73.图3示出相关技术中局部敏感哈希算法的结构示意图;74.图4示出本公开示例性实施例中广告召回方法的流程示意图;75.图5示出本公开示例性实施例中聚类的流程示意图;76.图6示出本公开示例性实施例中确定聚类数的流程示意图;77.图7示出本公开示例性实施例中索引树的结构示意图;78.图8示出本公开示例性实施例中索引更新的流程示意图;79.图9示出本公开示例性实施例中索引存储结构的示意图;80.图10示出本公开示例性实施例中广告召回系统的架构示意图;81.图11示出本公开示例性实施例中广告数据索引装置的结构示意图;82.图12示出本公开示例性实施例中对输入广告数据进行处理的流程示意图;83.图13示出本公开示例性实施例中广告召回装置的结构示意图;84.图14示出本公开示例性实施例中计算机存储介质的结构示意图;85.图15示出本公开示例性实施例中电子设备的结构示意图。具体实施方式86.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。87.本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标识使用,不是对其对象的数量限制。88.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标识表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。89.在本领域的相关技术中,通常采用四大类方法构建向量化索引,分别为基于树的方法、哈希方法、矢量化方法和基于图的方法,其中,基于树的方法典型的算法是kd树,哈希方法的代表是lsh、矢量化方法的典型算法是pq、基于图的方法的代表是hnsw。90.几乎所有的近似最近邻搜索(anns)算法都是对全空间的划分,基于树的方法采用树结构来表示对全空间的划分,kd树是一个二叉树结构,每个节点表示一个空间范围,节点中记载了特征坐标、切分轴、指向左子树的指针、指向右子树的指针等。图1示出了在二维空间内kd树对全空间的划分过程,如图1所示,首先通过轴a将二维空间划分为左右两部分,接着分别通过轴b、c分别将左边空间、右边空间沿水平方向划分为两部分,然后通过轴d、e、f、g将其所在的空间沿竖直方向划分为两部分,最后通过轴h、i将其所在空间沿水平方向划分为两部分,并且在各个空间和轴b、c上存在p1-p10的坐标点。基于图1所示的空间划分过程可以构建kd树,如图2所示。91.局部敏感哈希(lsh)算法的基本思想类似于空间域转换思想,将原始数据空间中的两个相邻数据点通过相同的映射或投影变换后,这两个数据点在新的数据空间中仍然相邻的概率很大,而不相邻的数据点被映射到同一个桶的概率很小。对原始数据集合中所有的数据都进行hash映射后,会得到一个hashtable,这些原始数据集被分散到了hashtable的桶内,每个桶会落入一些原始数据,属于同一个桶内的数据就有很大可能是相邻的,这样将原始数据集合分成了多个子集合,而每个子集合中的数据间是相邻的且该子集合中的元素个数较小,因此将一个在超大集合内查找相邻元素的问题转化为了在一个很小的集合内查找相邻元素的问题,这样计算量下降了很多。图3示出了局部敏感哈希算法的结构示意图,图3所示,原始数据经hash映射后,会被分散到hashtable的桶内。92.乘积量化(pq)算法是将原来的向量空间分解为若干个低位向量空间的笛卡尔积,并利用kmeans算法对分解得到的低维向量空间分别做量化,这样每个向量就能由多个低维空间的量化组合进行表示。93.hierarchicalnavigablesmallworldgraphs(hnsw)是典型的基于图的方法,hnsw通过采用层状结构,将边按特征半径进行分层,把一张图分成多张,越接近上层的图,平均度数越低,节点之间的距离越远,越接近下层的图平均度数越高,节点之间的距离也就越近。94.但是相关技术中的索引构建方法存在相应地缺陷:kd树算法在向量维度稍大的一些情况下,索引的性能会急剧下降,极端情况下性能不如暴力索引;lsh算法需要建立大量的hash表,这会使索引大小膨胀数倍,机器内存使用情况不可控,在大数据量情况下不适用于线上索引;基于图的算法构建索引时间开销高,在近邻图上节点的出度、边的选择、图的连通性等方面都需要根据实际的应用场景进行改变;pq算法存在无法避免的缺陷,在构建索引后,为了提高搜索精度,只能增大搜索空间,在最坏的情况下需要扫描几乎整个数据集,这对实时广告检索是无法接受的。95.基于相关技术中存在的问题,在本公开的一个实施例中提出了一种广告召回方法,以对上述问题进行优化处理。接下来以构建在线广告向量化索引为例对本公开实施例中的广告召回方法进行详细介绍,该方法可以由服务器执行,该服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,当然也可以由与服务器具有相同功能的终端设备执行。图4示出了广告召回方法的流程示意图,如图4所示,至少包括以下步骤:96.步骤s410:获取广告更新数据,对所述广告更新数据进行预处理,以获取目标广告更新数据;97.步骤s420:根据所述目标广告更新数据生成索引树高度;98.步骤s430:根据所述索引树高度、目标节点包含的数据量和所述目标节点对应的层级对所述目标广告更新数据进行聚类,以形成索引树;99.步骤s440:根据前端广告召回请求在所述索引树中进行检索,并将检索得到的目标广告数据返回至前端。100.本公开实施例中的广告召回方法一方面提高了索引树构建的效率和索引树的质量,并且降低了内存和耗时;另一方面保证了索引树高度的可控性以及数据的分散性和均衡性,使得索引树的结构更稳定,广告召回结果更精准。101.为了使本公开的技术方案更清晰,接下来对本公开中的广告召回方法的各个步骤进行详细说明。102.在步骤s410中,获取广告更新数据,对所述广告更新数据进行预处理,以获取目标广告更新数据。103.在本公开的示例性实施例中,在接收到输入广告数据之后,对输入广告数据进行处理,以获取发生更新的广告数据,即广告更新数据,然后再根据广告更新数据构建索引树。具体地,可以通过多个广告召回模型对输入广告数据进行处理生成多组初始广告数据,进而根据初始广告数据获取广告更新数据。104.在本公开的示例性实施例中,在根据广告更新数据构建索引树时,可以先对广告更新数据进行预处理,获取目标广告更新数据,然后再根据目标广告更新数据构建索引树。对广告更新数据进行预处理,具体为,对广告更新数据进行反序列化处理和去重处理,其中,反序列化处理是根据广告更新数据的字节流中所保存的对象状态及描述信息,通过反序列化重建对象;去重处理是去除反序列化处理后的广告更新数据中重复存在的数据。通过对广告更新数据进行反序列化处理和去重处理,可以得到目标广告更新数据,根据目标广告更新数据即可构建索引树。105.在步骤s420中,根据所述目标广告更新数据生成索引树高度。106.在本公开的示例性实施例中,在获得目标广告更新数据后,可以基于目标广告更新数据构建索引树。在构建索引树的过程中,索引树的高度以及数据的分散性和均衡性是衡量索引树的重要指标,在本公开的实施例中,可以动态计算索引树的高度,并且可以通过动态计算聚类数,保证数据的分散性和均衡性。107.在本公开的示例性实施例中,在计算索引树高度时,可以根据目标广告更新数据和一预设值确定,具体地,可以先获取目标广告更新数据的数量级信息,接着获取数量级信息的常用对数值;然后选取常用对数值和预设值中的最大值,并将该最大值作为索引树高度。该预设值具体可以为2,当然也可以设置为1或3等,当然该预设值不宜设置过大,否则索引树的高度过高,影响索引结果的精准性。索引树高度可以采用式(1)进行表示,具体如下:108.h=max(2,log10total_data_size)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(1)109.其中,h为索引树高度,total_data_size为目标广告更新数据的数量级信息。110.例如,目标广告更新数据包含的数据量为100w,即106,那么对106求常用对数即可获得其所对应的数量级信息为6,然后可以从2和6中取最大值6作为索引树高度,也就是说,最终构建得到的索引树的高度为6。111.在步骤s430中,根据所述索引树高度、目标节点包含的数据量和所述目标节点对应的层级对所述目标广告更新数据进行聚类,以形成索引树。112.在本公开的示例性实施例中,在确定了索引树高度后,可以通过聚类的方式构建根节点下的每一级树节点、叶子节点,具体地,可以根据索引树高度、目标节点包含的数据量和目标节点对应的层级对目标广告更新数据进行聚类,以形成索引树。其中目标节点为索引树中已经存在的节点,例如根据一级树节点,即根节点形成二级树节点时,目标节点即为一级树节点;根据二级树节点形成三级树节点时,目标节点即为各二级树节点,以此类推。113.在本公开的示例性实施例中,图5示出了聚类的流程示意图,如图5所示,在步骤s501中,根据索引树高度、目标节点中包含的数据量和目标节点对应的层级确定与目标节点对应的聚类数;在步骤s502中,根据聚类数对目标节点中的数据进行聚类;在步骤s503中,遍历索引树中的所有目标节点,重复步骤s501-s502,直至达到结束条件,以获取索引树。114.接下来,对图5所示的聚类流程进行详细说明。115.在本公开的示例性实施例中,图6示出了确定聚类数的流程示意图,如图6所示,在步骤s601中,获取索引树高度与目标节点对应的层级之间的差值;在步骤s602中,根据差值和目标节点包含的数据量确定聚类数;具体地将差值作为根指数,目标节点包含的数据量作为根底数,计算与目标节点包含的数据量对应的算术根,并将该算术根作为聚类数。聚类数可由式(2)表示,具体如下:[0116][0117]其中,k为聚类数,h为索引树高度,level为目标节点的层级,node_data_size为目标节点包含的数据量。[0118]例如,一级树节点包含100w的数据量,索引树高度为6,那么一级树节点对应的聚类数为计算得到的数值为15.85,由于节点数为整数,所以可以采取四舍五入的方式确定聚类数,小数点后小于5的取其整数部分作为聚类数,小数点后大于等于5的取整数部分加一作为聚类数,以上述例子为例,可以确定聚类数为16,也就是说,根据索引树高度、一级树节点包含的数据量和一级树节点的层级可以确定与一级树节点对应的二级树节点的数量为16个。在确定二级树节点后,可以将二级树节点中的各个节点作为目标节点,然后重复上述步骤,直至达到结束条件,获取最终的索引树。在本公开的实施例中,结束条件为构建的索引树的高度达到步骤s420中确定的索引树高度,或者目标节点中包含的数据量小于预设阈值,该预设阈值可以根据实际需要设定,例如可以设置为50,等等,本公开实施例对此不做具体限定。[0119]在本公开的示例性实施例中,在确定了聚类数后,便可以根据聚类数对目标节点中的广告数据进行聚类。在本公开的实施例中,可以根据聚类数对目标节点中的广告数据进行k-means聚类,当然也可以采用其它聚类算法,例如层次聚类算法,但是由于其它聚类算法的内存消耗过大,并且无法控制树的高度和平衡性,所以在本公开的实施例中,优选采用k-means聚类算法。[0120]图7示出了索引树的结构示意图,如图7所示,索引树共包含三级树节点,一级树节点即为根节点,对应的聚类数为k=100,也就是说二级树节点包含100个节点;二级树节点中的第一个节点对应的聚类数为k=123,也就是说与该节点对应的三级树节点包含123个节点,等等。当达到索引树高度或者目标节点中包含的数据量小于预设阈值时,便停止生成树节点,直接生成叶子节点即可,例如三级树节点下再无树节点,第二个二级树节点下没有树节点,只有叶子节点。[0121]在本公开的示例性实施例中,对广告更新数据进行预处理、计算索引树高度和对目标广告更新数据进行聚类均采用多线程处理模式,通过多线程并行处理数据,并行多个索引,能够提高数据处理效率,进而提高索引树的构建效率。[0122]在本公开的示例性实施例中,如图7所示的索引树,其中的椭圆为树节点,矩形为叶子节点,树节点中为各个广告数据的质心,该质心为对各广告数据中所有维度的数据求平均值所得的数据,叶子节点中为实际的sku数据,sku(stockkeepingunit,库存量单位)是对每一个产品和服务的唯一标示符,每种产品均对应有唯一的sku号。[0123]在本公开的示例性实施例中,由于平台中的广告数据是实时动态更新的,并且数据更新检测也是周期性进行的,因此索引树的构建也是周期性进行的,也就是说,每当检测到输入广告数据发生更新时,便根据广告更新数据构建索引树。图8示出了索引更新的流程示意图,如图8所示,在步骤s801中,程序初始化,加载配置;在步骤s802中,构建多个数据管理模块;在步骤s803中,检测数据的更新;在步骤s804中:索引构建;在步骤s805中:更新索引;在步骤s806中:返回至步骤s803,重复执行步骤s803-s806。[0124]在本公开的示例性实施例中,根据与多个广告召回模型分别对应的更新数据生成索引树后,可以对各个索引树中的数据进行序列化处理并存储。序列化与反序列化是相对的,序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化处理后,可以将序列化处理的索引树存储于存储介质中,图9示出了索引存储结构的示意图,如图9所示,结构体tree通过vector数组管理treenode树节点,并且保存树根节点指针,作为操作索引树的入口。索引树中节点间的父子关系通过编号seq确定,编号seq在构建索引时即以建立,例如根节点的编号为1,根节点下的二级树节点的编号依次为2、3、4、……n,二级树节点下的三级树节点的编号依次为n+1、……,等等。treenode树节点汇总还包含level层数,孩子节点数组以及当前树节点的embedding数据,该embedding数据即为具体的广告数据。[0125]在步骤s440中,根据前端广告召回请求在所述索引树中进行检索,并将检索得到的目标广告数据返回至前端。[0126]在本公开的示例性实施例中,在完成对索引树的序列化处理后,可以根据前端广告召回请求和模型参数从各个序列化处理后的索引树中获取目标索引数据,进而根据目标索引数据确定目标广告数据,并将目标广告数据返回至前端,具体地可以通过广告数据检索装置根据前端广告召回请求和模型参数在索引树中进行检索。在将序列化处理后的索引树和与各索引树对应的广告召回模型的模型参数传送至广告数据检索装置时,可以按照预设协议进行传送,该预设协议是根据预先制定的打包规则所形成的协议;前端广告召回请求为用户在前端发起的广告召回请求,在接收到前端广告召回请求后,首先可以对其进行解析,以获取该用户的用户行为特征,用户行为特征具体可以是用户的浏览记录、购物车记录和购买记录,当然还可以是其它的信息,接着可以通过具有不同模型参数的多个广告召回模型对用户行为特征进行处理,以获取多个处理结果,最后根据各个处理结果分别在与各个模型参数对应的序列化处理后的索引树中进行检索,即可获取目标索引数据。[0127]上文中提到,广告召回模型可以对用户行为特征进行处理,并根据处理结果获取与用户最匹配的广告数据,这是因为广告召回模型为双塔模型,在模型训练的过程中,是根据用户行为特征和与用户行为特征最相似的广告数据进行训练的,因此在模型应用时,可以根据用户行为特征的处理结果在对应的索引树中检索得到最匹配的广告数据。[0128]在本公开的示例性实施例中,由于对应同一前端广告召回请求,可以从不同的索引树中获取不同的索引结果,因此需要对得到的索引结果进行相应的后处理,以获取最终可以返回至前端的目标广告数据。具体地,可以调用在线模型服务,根据预设规则对目标索引数据进行打分排序,以获取索引数据序列;接着从索引数据序列中依次截取预设数量的索引数据作为目标广告数据,并将目标广告数据返回至前端。其中,预设规则可以根据各个广告对应的报价信息、点击率和转化率对各个广告进行打分,例如可以对三个因素进行加权求和,然后根据加权求和所得的值进行排序,当然也可以采用其它方式进行打分排序。同时,预设数量可以根据实际需要进行设定,例如10条、20条等等,本公开实施例对此不作具体限定。[0129]本公开的广告召回方法,首先通过对发生更新的广告数据进行索引树的构建,由于在构建索引树时,根据数据量的不同,动态计算索引树的高度,保证了树高度的可控性,防止树的高度过长;另外由于根据节点包含数据量的不同,计算出不同的聚类数,能够更好的保证数据的分散性和均衡性,提高了索引树的构建效率和质量,同时减少了内存及耗时。其次,通过广告召回模型对输入广告数据进行处理,并根据用户行为特征在索引树中进行检索,能够保证相似的广告数据聚集在一起,提高了检索召回的效率,进一步提升了用户体验。[0130]在本公开的一个实施例中还提出了一种广告召回系统,图10示出了广告召回系统的架构示意图,如图10所示,广告召回系统1000包括:广告数据存储装置1001,广告数据索引装置1002和广告数据检索装置1003。其中,广告数据存储装置1001用于存储平台中所有商品的广告信息,并且实时更新商品的广告信息;广告数据索引装置1002与广告数据存储装置1001连接,用于接收广告数据存储装置1001发送的输入广告数据,并根据输入广告数据构建索引树;广告数据检索装置1003与广告数据索引装置1002连接,用于接收广告数据索引装置1002发送的索引树和与索引树对应的模型参数,并基于接收到的前端广告召回请求和模型参数对索引树进行检索,以获取目标数据。[0131]广告数据索引装置1002在根据输入广告数据构建索引树时,具体可以包括以下步骤:首先,根据配置的数据更新检测间隔时间对输入广告数据进行多线检测,以获取多组初始广告数据;接着,检测初始广告数据是否发生更新,当判定初始广告数据发生更新时,对初始广告数据进行校验更新,以获取广告更新数据;然后,对广告更新数据进行预处理以获取目标广告更新数据,并根据目标广告更新数据生成索引树高度;最后,根据索引树高度、目标节点包含的数据量和目标节点对应的层级对目标广告更新数据进行聚类,以形成索引树。[0132]图11示出了广告数据索引装置1002的结构示意图,如图11所示,广告数据索引装置1002包括数据调度单元1101、数据管理单元1102和索引构建单元1103。在索引构建单元1103根据目标广告更新数据构建索引树之前,需要数据调度单元1101和数据管理单元1102对广告数据存储装置1001发送的输入广告数据进行相应处理。[0133]基于图11所示的广告数据索引装置1002的架构,图12示出了对输入广告数据进行处理的流程示意图,如图12所示,在步骤s1201中,获取多个广告召回模型的模型参数和数据更新检测间隔时间,广告召回模型的数量与数据管理单元的数量相同;在步骤s1202中,通过具有该模型参数的广告召回模型根据数据更新检测间隔时间分别对输入广告数据进行检测,以获取多组初始广告数据;在步骤s1203中,通过数据调度单元1101将各组初始广告数据、与各组初始广告数据对应的广告召回模型的模型参数和与各组初始广告数据对应的检测时间对应存储于无序容器中,并通过多线程检测初始广告数据是否发生更新;在步骤s1204中,当判定初始广告数据发生更新时,通过数据管理单元1102对初始广告数据进行校验更新,以获取广告更新数据。[0134]其中,步骤s1201中的广告召回模型的模型参数和数据更新检测间隔时间是提前配置好的,以配置文件的形式存在,在程序启动时会通过配置文件获取模型参数和数据更新检测时间间隔,其中广告召回模型可以为dssm双塔模型,其可以对广告数据存储装置中的广告数据进行处理,将非结构化的广告数据转换为结构化数据,也可以对广告数据检索装置接收到的前端广告召回请求所对应用户的行为特征进行处理,进而可以根据用户行为特征的处理结果从索引树中索引得到与用户最匹配的目标广告数据;数据更新检测时间间隔可以根据实际需要设置,例如可以是10s检测更新一次,等等。[0135]配置文件中有多个广告召回模型的模型参数,也就是说,对于广告数据存储装置1001中的广告数据,可以同时通过多个广告召回模型分别进行处理,并通过索引构建单元1103基于与不同广告召回模型生成的初始广告数据所对应的目标广告更新数据生成不同的索引树,进而使得广告数据检索装置1003能够对不同的索引树进行检索并生成最终的检索结果,以提高检索结果的精准度。由于广告召回模型的数量为多个,生成的数据也有多组,因此可以设置相应数量的数据管理单元1102,用于对各个广告召回模型生成的数据进行管理,具体可以是数据版本更新、数据校验等。在通过数据管理单元1102对广告数据进行管理之前,可以通过数据调用单元1101对各个广告召回模型的模型参数以及各个广告召回模型生成的数据进行调度,具体地,可以通过unordered-map(无序容器)结构进行数据独立性存储,也就是将各组初始广告数据、与各组初始广告数据对应的广告召回模型的模型参数和与各组初始广告数据对应的检测时间对应存储于无序容器中,进一步地,还可以调用各个数据管理单元1102来进行相应地服务。[0136]在数据调度单元1101完成数据调度后,可以通过多线程检测初始广告数据是否发生更新。当判定初始广告数据发生更新时,可以调用数据管理单元1102对初始广告数据进行校验更新,以获取广告更新数据。数据管理单元1102对初始广告数据进行校验更新主要是进行数据版本更新和数据校验的服务,其中数据版本更新即为将旧版本的数据更新为新版本的数据,数据校验即为数据完整性和正确性的校验,在校验数据正确性时可以根据数据版本信息进行校验,如果新旧数据的版本信息相同则说明数据是正确的,如果新旧数据的版本信息不同则说明数据是不正确的;在校验数据完整性时可以根据接收到的根据数据版本信息和数据信息生成的哈希值及数据管理单元根据接收到的数据版本信息和数据信息生成的哈希值进行比对确定,如果两个哈希值相同说明数据是完整的,如果两个哈希值不同说明数据是不完整的。[0137]当数据管理单元1102对初始广告数据校验更新通过,生成广告更新数据后,可以调用索引构建单元1103根据广告更新数据进行索引树的构建,索引树的构建方法与上述实施例中的构建方法相同,在此不再赘述。[0138]以下介绍本公开的装置实施例,可以用于执行本公开上述的广告召回方法。对于本公开装置实施例中未披露的细节,请参照本公开上述的广告召回方法的实施例。[0139]图13示意性示出了根据本公开的一个实施例的广告召回装置的框图,如图13所示,广告召回装置1300至少包括:[0140]广告数据索引装置1301,用于获取广告更新数据,并对所述广告更新数据进行预处理,以获取目标广告更新数据;[0141]根据所述目标广告更新数据生成索引树高度;[0142]根据所述索引树高度、目标节点包含的数据量和所述目标节点对应的层级对所述目标广告更新数据进行聚类,以形成索引树;[0143]广告数据检索装置1302,用于根据前端广告召回请求在所述索引树中进行检索,并将检索得到的目标广告数据返回至前端。[0144]上述广告召回装置中各具体装置的具体细节已经在对应的广告召回方法中进行了详细的描述,因此此处不再赘述。[0145]应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。[0146]此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。[0147]通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。[0148]在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。[0149]所属
技术领域
:的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。[0150]下面参照图14来描述根据本公开的这种实施方式的电子设备1400。图14显示的电子设备1400仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。[0151]如图14所示,电子设备1400以通用计算设备的形式表现。电子设备1400的组件可以包括但不限于:上述至少一个处理单元1410、上述至少一个存储单元1420、连接不同系统组件(包括存储单元1420和处理单元1410)的总线1430和显示单元1440。[0152]其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1410执行,使得所述处理单元1410执行本说明书上述“具体实施方式”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元1410可以执行如图4中所示的步骤s410:获取广告更新数据,并对所述广告更新数据进行预处理,以获取目标广告更新数据;步骤s420:根据所述目标广告更新数据生成索引树高度;步骤s430:根据所述索引树高度、目标节点包含的数据量和所述目标节点对应的层级对所述目标广告更新数据进行聚类,以形成索引树;步骤s440:根据前端广告召回请求在所述索引树中进行检索,并将检索得到的目标广告数据返回至前端。[0153]存储单元1420可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)14201和/或高速缓存存储单元14202,还可以进一步包括只读存储单元(rom)14203。[0154]存储单元1420还可以包括具有一组(至少一个)程序模块14205的程序/实用工具14204,这样的程序模块14205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。[0155]总线1430可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。[0156]电子设备1400也可以与一个或多个外部设备1700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1400交互的设备通信,和/或与使得该电子设备1400能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1450进行。并且,电子设备1400还可以通过网络适配器1460与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1460通过总线1430与电子设备1400的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。[0157]通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。[0158]在本公开的示例性实施例中,还提供了一种计算机存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。[0159]参考图15所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品1500,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。[0160]所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。[0161]计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。[0162]可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。[0163]可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。[0164]此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。[0165]本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1