信息推荐方法、装置、设备及存储介质与流程

文档序号:31702635发布日期:2022-10-01 09:09阅读:51来源:国知局
信息推荐方法、装置、设备及存储介质与流程

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.图1是本技术实施例提供的信息推荐系统的一个可选的架构示意图;
33.图2是本技术实施例提供的信息推荐设备的结构示意图;
34.图3是本技术实施例提供的信息推荐方法的一个可选的流程示意图;
35.图4是本技术实施例提供的信息推荐方法的另一个可选的流程示意图;
36.图5是本技术实施例提供的信息推荐方法的再一个可选的流程示意图;
37.图6是本技术实施例提供的信息推荐方法的框架图;
38.图7是本技术实施例提供的以物品点击率数据为例实现的信息推荐方法的框架图;
39.图8是本技术实施例提供的信息推荐方法的整体流程图;
40.图9是本技术实施例提供的信息推荐方法的详细实现方案示意图;
41.图10是本技术实施例提供的信息推荐方法中对象池设计的详细实现方案示意图;
42.图11是本技术实施例提供的虚拟地址的结构示意图。
具体实施方式
43.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
44.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本技术实施例所使用的所有的技术和科学术语与属于本技术实施例的技术领域的技术人员通常理解的含义相同。本技术实施例所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
45.在解释本技术实施例的信息推荐方法之前,首先对相关技术中的方法进行说明。
46.目前,信息流推荐产品一般可以分为三个主要步骤:第一,云端召回服务:根据用户信息和召回模型,从百万级别内容池中粗略筛选出千级别候选物品;第二,云端排序服务:通过深度学习模型,在云端线上服务根据目标对象特征对召回的文章、视频、广告等物品进行打分排序,最终精选出十级别的候选物品;第三,云端策略服务:使用定制策略比对物品信息,过滤不符合策略条件的候选物品。最终根据排序和筛选结果向用户推荐可能感兴趣的物品。因此,云端线上服务使用的深度学习模型需要使用两方面的内容:一方面是数据库内存储或终端加载的用户实时行为和用户静态属性特征;另一方面是索引服务存储或终端加载的物品侧信息。云端线上服务加载的用户和物品信息一般采用词典的形式,即根据用户id查找用户信息或根据物品id查找物品信息。
47.相关技术中的方案,至少存在以下问题:
48.第一,离线数据格式多变,且分发量大。由于不同的云端线上服务所需加载的词典格式多变,导致离线生产的数据格式无法统一,且云端线上服务需严格按照约定协议解析,造成词典数量增多后,需额外维护数据协议文档。并且离线数据的存储方式多为明文,可读性好,但会导致离线文件分发量大。
49.第二,在线同质加载数据结构过多,且加载时间长。云端线上服务为了匹配离线数
据格式,需要为每个词典开发耦合的数据结构,且随着所需词典数量增多,数据结构种类也会增加。而且云端线上服务在解析离线数据时,均采用逐条解析加载的方式,会造成服务启动时间长,或在增量更新时占用较多服务器资源,导致服务性能下降。
50.第三,安全性低,且新数据上线效率低。存在离线推送文件出错,云端线上服务直接加载有解析出错导致服务宕机的风险。如果对加载的数据新增额外校验规则,不仅会增加新增词典的开发成本,还会额外占用线上服务器的性能。
51.基于相关技术中所存在的上述至少一个问题,本技术实施例提供一种信息推荐方法,该方法利用数据编码技术和连续内存设计,将信息流推荐中词典信息的存储和更新由原来的云端线上服务转移到通用数据服务中进行,云端线上服务只需通过网络请求即可查询词典内容。不仅避免了相同词典内容在云端服务重复加载造成内存空间的浪费,也可以减少相似数据加载解析重复开发的工作。同时,数据编码技术可以大幅减少存储空间的使用,以及连续地址空间的存储设计可以有效提升词典数据加载速度。通用数据服务支持本地和云端两种模式,云端模式将数据的加载和更新功能与原云端线上服务解耦,不仅在数据频繁更新的情况下,对云端线上服务不会产生性能影响,而且能使数据文件校验失败的风险与原云端线上服务产生隔离。
52.本技术实施例的信息推荐方法中,在离线端,不同词典定制各自格式,并生产通用词典;云端线上服务(即在线信息服务)通过文件分发系统拉取最新的所需通用词典文件后,按约定格式解析加载至内存当中。
53.本技术实施例提供的信息推荐方法中,首先,获取目标对象的离线统计数据;然后,基于预定义词典,对离线统计数据进行信息编码处理,得到二进制离线文件;再然后,通过通用数据服务,对二进制离线文件进行数据加载,形成目标对象的通用词典;最后,通过在线信息服务,基于通用词典从待推荐信息中确定目标推荐信息,并向目标对象推荐目标推荐信息。如此,将通用词典的加载工作和信息推荐工作分别部署在不同的服务中,实现通用词典的加载工作与在线信息服务的解耦,这样,不仅在数据频繁更新的情况下,对在线信息服务不会产生性能影响,而且能使数据文件校验失败的风险与原在线信息服务产生隔离,同时,能够极大地减少相似数据加载和解析的重复开发工作,提高数据加载的效率,进而提高信息推荐的效率。
54.下面说明本技术实施例的信息推荐设备的示例性应用,本技术实施例提供的信息推荐设备可以实施为终端,也可以实施为服务器。在一种实现方式中,本技术实施例提供的信息推荐设备可以实施为笔记本电脑,平板电脑,台式计算机,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)、智能机器人、智能家电和智能车载设备等任意的能够运行信息推荐应用和进行信息流推荐的终端;在另一种实现方式中,本技术实施例提供的信息推荐设备还可以实施为服务器,其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(cdn,content delivery network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本技术实施例中不做限制。下面,将说明信息推荐设备实施为服务器时的示例性应用。
55.参见图1,图1是本技术实施例提供的信息推荐系统的一个可选的架构示意图,为实现支撑任意一个信息推荐应用,本技术实施例的终端上至少安装有信息推荐应用,通过该信息推荐应用能够实现对目标对象进行准确的信息推荐。本技术实施例中,信息推荐系统10中至少包括终端100、网络200和服务器300,其中服务器300是信息推荐应用的服务器。服务器300可以构成本技术实施例的信息推荐设备。终端100通过网络200连接服务器300,网络200可以是广域网或者局域网,又或者是二者的组合。在运行信息推荐应用实现信息推荐时,终端100通过信息推荐应用的客户端获取用户的离线统计数据,并将离线统计数据通过网络200发送给服务器300,服务器300基于预定义词典,对离线统计数据进行信息编码处理,得到二进制离线文件;然后调用通用数据服务,通过通用数据服务对二进制离线文件进行数据加载,形成目标对象的通用词典;再然后调用在线信息服务,通过在线信息服务,基于通用词典从待推荐信息中确定目标推荐信息。服务器通过在线信息服务确定出目标推荐信息之后,通过网络200将目标推荐信息发送给终端100,终端100在信息推荐应用的客户端界面上显示目标推荐信息,从而实现向用户推荐目标推荐信息。
56.本技术实施例所提供的信息推荐方法还可以基于云平台并通过云技术来实现,例如,上述服务器300可以是云端服务器。云端服务器提供通用数据服务和在线信息服务,该通用数据服务和在线信息服务均可以为云端服务或者云端线上服务,或者,在线信息服务均可以为云端服务或者云端线上服务。
57.本技术实施例中,可以通过云端服务器获取目标对象的离线统计数据,或者,通过云端服务器基于预定义词典,对离线统计数据进行信息编码处理,得到二进制离线文件,或者,通过云端服务器调用通用数据服务,对二进制离线文件进行数据加载,形成目标对象的通用词典,或者,通过云端服务器调用在线信息服务,基于通用词典从待推荐信息中确定目标推荐信息,并向目标对象推荐目标推荐信息等。
58.在一些实施例中,还可以具有云端存储器,可以将离线统计数据存储至云端存储器中,或者,还可以将生成的通用词典存储至云端存储器中,或者,还可以将待推荐信息等存储至云端存储器中。这样,在进行信息推荐时,可以基于云端存储器中所存储的信息快速的确定出目标推荐信息,实现对目标对象进行准确和高效的信息推荐。
59.这里需要说明的是,云技术(cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
60.图2是本技术实施例提供的信息推荐设备的结构示意图,图2所示的信息推荐设备包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。信息推荐设备中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统340。
61.处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digital signal processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
62.用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,以及一个或多个输入装置332。
63.存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,read only memory),易失性存储器可以是随机存取存储器(ram,random access memory)。本技术实施例描述的存储器350旨在包括任意适合类型的存储器。在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
64.操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
65.网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universal serial bus)等;
66.输入处理模块353,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
67.在一些实施例中,本技术实施例提供的装置可采用软件方式实现,图2示出了存储在存储器350中的一种信息推荐装置354,该信息推荐装置354可以是信息推荐设备中的信息推荐装置,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块3541、信息编码模块3542、数据加载模块3543和信息推荐模块3544,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
68.在另一些实施例中,本技术实施例提供的装置可以采用硬件方式实现,作为示例,本技术实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本技术实施例提供的信息推荐方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(asic,application specific integrated circuit)、dsp、可编程逻辑器件(pld,programmable logic device)、复杂可编程逻辑器件(cpld,complex programmable logic device)、现场可编程门阵列(fpga,field-programmable gate array)或其他电子元件。
69.本技术各实施例提供的信息推荐方法可以由信息推荐设备来执行,其中,该信息推荐设备可以是任意一种能够运行信息推荐应用和进行信息流推荐的终端,或者也可以是服务器,即本技术各实施例的信息推荐方法可以通过终端来执行,也可以通过服务器来执行,或者还可以通过终端与服务器进行交互来执行。
70.参见图3,图3是本技术实施例提供的信息推荐方法的一个可选的流程示意图,下面将结合图3示出的步骤进行说明,需要说明的是,图3中的信息推荐方法是通过服务器作为执行主体为例来说明的。
71.步骤s301,获取目标对象的离线统计数据。
72.本技术实施例中,离线统计数据是统计的目标对象在终端上的数据,离线统计数据包括目标对象特征信息和操作数据。其中,终端上安装有信息推荐应用,目标对象特征信息可以是目标对象在信息推荐应用的客户端进行操作,所输入的目标对象特征信息。举例来说,目标对象特征信息包括但不限于以下至少之一:目标对象的名字、身份信息、学历信息、兴趣信息、擅长或兴趣领域信息等与目标对象特征相关的信息。
73.操作数据是指目标对象在客户端上执行交互操作所生成的数据,其中,交互操作包括但不限于以下至少之一:点击操作、选中操作、评论操作、点赞操作、购买操作、分享操作、浏览操作、收藏操作等能够在信息推荐应用的客户端进行交互的操作,对应地,操作数据包括但不限于以下至少之一:点击量、点击频率、点击对象、选中对象、选中时间、评论对象、评论内容、点赞对象、点赞数量、购买对象、购买数量、购买方式、购买频率、分享对象、浏览对象、收藏对象等数据。
74.本技术实施例中,可以周期性或非周期性的对目标对象特征信息和操作数据进行统计,得到离线统计数据,例如,可以每隔一个小时统计一次目标对象的操作数据,每隔一天采集一次目标对象特征信息。
75.离线统计数据不仅包括信息推荐应用的客户端在离线状态下的数据,还包括信息推荐应用的客户端在在线状态下的数据。这里,客户端在离线状态下的数据包括但不限于:目标对象的静态特征信息,例如,目标对象的名字、身份信息、学历信息等。客户端在在线状态下的数据包括但不限于:客户端在线时执行交互操作所生成的数据、客户端在线时目标对象实时更新的特征信息,其中,客户端在线时执行交互操作可以是上述交互操作中的至少一种,对应地,客户端在线时执行交互操作所生成的操作数据可以是上述操作数据中的至少一种;客户端在线时目标对象实时更新的特征信息包括但不限于:目标对象的兴趣信息、擅长或兴趣领域信息。由于本技术实施例中所统计的数据既包括离线状态下的数据,还包括在线状态下的数据,且在统计数据时是基于一定的时间间隔来实现的,因此,可以不关注客户端的在线状态,所以将统计得到的数据统称为离线统计数据。
76.当周期性的统计离线统计数据时,可以设置统计周期,本技术实施例中,针对于不同类型的统计数据,可以具有不同的统计周期,例如,对于点击操作和购买操作这两种操作对应的数据,就是两种不同类型的统计数据。当离线统计数据中包括多种类型的统计数据时,可以每种类型的统计数据具有各自的统计周期,且各自的统计周期互不相同,在进行多种类型的统计数据汇总时,可以将不同统计周期下统计得到的统计数据,以周期同步的方式进行汇总。
77.需要说明的是,这里的周期同步是指针对于不同统计周期的统计数据,将不同的统计周期同步到同一目标时刻,并对该目标时刻之前的数据进行汇总,得到离线统计数据。
78.举例来说,如果点击操作对应的点击数据的统计周期为1小时,购买操作对应的购买数据的统计周期为2小时,从上午的8点开始统计,则8点至9点统计得到点击数据1、9点至10点统计得到点击数据2、10点至11点统计得到点击数据3、1点至12点统计得到点击数据4;8点至10点统计得到购买数据1、11点至12点统计得到购买数据2。那么在进行周期同步时,可以是对8点至10点的点击数据和购买数据进行汇总,得到8点至10点的离线统计数据1,或者,也可以对8点至12点的点击数据和购买数据进行汇总,得到8点至12点的离线统计数据
2。
79.在一些实施例中,不同类型的统计数据可以具有相同的统计周期。
80.步骤s302,基于预定义词典,对离线统计数据进行信息编码处理,得到二进制离线文件。
81.这里,预定义词典具有预先定义的词典配置,预定义词典是基于该词典配置进行数据配置后得到的词典。
82.本技术实施例中,词典一般有三个特点:第一,使用的场景多,包括:物品辅助信息、黑白名单、过滤信息、相似性数据等。第二,使用词典的云端线上服务种类多,包括:召回、排序、策略等服务均需要用到词典来加载静态特征。第三,词典结构复杂,包括:定长类型、变长类型、自定义复杂结构等多种格式。
83.本技术实施例中,可以是基于词典配置对应的配置信息,确定出用于进行信息编码处理的编码方式,这里,编码方式是与配置信息对应的通用数据结构协议,通用数据结构协议定义了信息编码处理的数据结构,在进行信息编码处理时,是基于通用数据结构协议定义的数据结构来实现信息编码处理,得到具有固定数据结构和数据格式的二进制离线文件。
84.本技术实施例中,对于目标对象的不同的离线统计数据,可以基于相同的预定义词典,进行相同的信息编码处理,得到具有相同数据结构和数据格式的二进制离线文件。每一离线统计数据对应一个二进制离线文件。
85.步骤s303,通过通用数据服务,对二进制离线文件进行数据加载,形成目标对象的通用词典。
86.本技术实施例中,服务器中部署有通用数据服务,服务器在构建和更新通用词典时,可以调用通用数据服务来实现,即通用数据服务是独立于其他服务,且用于构建和更新通用词典的服务进程。
87.对二进制离线文件进行数据加载是指将二进制离线文件加载至预设内存的连续空间中,这里在对二进制离线文件进行加载时,是基于连续的内存空间进行数据写入的,也就是说,针对于预设内存的全部空间,在进行多个二进制连线文件的数据写入时,是基于每一二进制连续文件的数据大小进行连续的写入,将二进制连续文件写入至连续的多个内存单元(即本技术实施例中的存储单元块)中。
88.在完成对当前统计得到的全部二进制连续文件的写入之后,具有二进制连续文件信息的预设内存构成目标对象的通用词典。这样,在进行信息推荐时,可以直接访问预设内存,从预设内存中读取相应的信息和数据,实现对目标对象进行信息推荐。
89.步骤s304,通过在线信息服务,基于通用词典从待推荐信息中确定目标推荐信息,并向目标对象推荐目标推荐信息。
90.本技术实施例中,服务器中除了部署有通用数据服务,还部署有在线信息服务,在线信息服务是用于实现信息推荐的线上推荐服务。在线信息服务可以实现从百万级别的待推荐信息池中粗略筛选出千级别的候选推荐信息,即从百万级别的待推荐信息池中召回千级别的候选推荐信息,以及,基于预先训练好的深度学习模型,根据目标对象的特征信息对召回的候选推荐信息进行打分和排序,并最终基于排序结果筛选出一定数量的候选推荐信息作为目标推荐信息。
91.本技术实施例中,服务器在进行信息推荐时,可以调用在线信息服务来实现,由于通用词典是预先已经构建好的词典,且是由通用数据服务构建好的,即由通用数据服务已经加载好目标对象的通用词典,因此,在线信息服务可以直接使用该通用词典,即可以直接访问预设内存,得到词典信息,并基于从通用词典中获取的信息来确定出目标推荐信息。
92.本技术实施例中,针对于不同的目标对象,可以具有不同的通用词典,也就是说,每一目标对象对应一通用词典,在目标对象的离线统计数据实时更新或者周期性或非周期性的更新时,目标对象的通用词典也随之更新,也就是会周期性或非周期性地统计离线统计数据,并基于统计得到的最新的离线统计数据,对用户在当前时刻之前已经构建好的通用词典进行更新,形成更新后的通用词典。此时,在进行信息推荐时,则是基于更新后的最新的通用词典来确定目标推荐信息,并向目标对象推荐目标推荐信息。如此,能够实现对目标对象的通用词典进行及时更新,保证在进行信息推荐时能够基于最新的且最能反映目标对象的特征信息的通用词典进行目标推荐信息的确定,从而能够准确的确定出符合目标对象的兴趣的目标推荐信息,实现对目标对象准确的信息推荐。
93.本技术实施例提供的信息推荐方法,基于预定义词典,对目标对象的离线统计数据进行信息编码处理,得到二进制离线文件,然后通过通用数据服务对二进制离线文件进行数据加载,形成目标对象的通用词典,再通过在线信息服务,基于通用词典从待推荐信息中确定目标推荐信息并进行信息推荐。如此,将信息推荐过程中的词典信息的加载转移到通用数据服务中进行,在线信息服务只需通过网络请求即可查询通用词典中的内容,实现对目标对象的信息推荐,从而将通用词典的加载工作和信息推荐工作分别部署在不同的服务中,实现通用词典的加载工作与在线信息服务的解耦,这样,不仅在数据频繁更新的情况下,对在线信息服务不会产生性能影响,而且能使数据文件校验失败的风险与原在线信息服务产生隔离,同时,能够极大地减少相似数据加载和解析的重复开发工作,提高数据加载的效率,进而提高信息推荐的效率。
94.图4是本技术实施例提供的信息推荐方法的另一个可选的流程示意图,如图4所示,方法包括以下步骤:
95.步骤s401,终端采集并统计得到目标对象的离线统计数据。
96.在一些实施例中,信息推荐系统中至少包括终端和服务器,终端上安装有信息推荐应用,用户在信息推荐应用的客户端进行操作,输入用户特征信息,以及,执行交互操作生成操作数据等,其中,用户特征信息和操作数据等构成离线统计数据。本技术实施例中,用户特征信息包括但不限于以下至少之一:用户的名字、身份信息、学历信息、兴趣信息、擅长或兴趣领域信息等于用户特征相关的信息。交互操作包括但不限于以下至少之一:点击操作、选中操作、评论操作、点赞操作、购买操作、分享操作、浏览操作、收藏操作等能够在信息推荐应用的客户端进行交互的操作,对应地,操作数据包括但不限于以下至少之一:点击量、点击频率、点击对象、选中对象、选中时间、评论对象、评论内容、点赞对象、点赞数量、购买对象、购买数量、购买方式、购买频率、分享对象、浏览对象、收藏对象等数据。
97.步骤s402,终端对离线统计数据进行封装,形成信息推荐请求。
98.这里,信息推荐请求中用于请求服务器对信息推荐应用的客户端进行信息推荐,信息推荐请求中包括离线统计数据。
99.步骤s403,终端将信息推荐请求发送给服务器。
100.步骤s404,服务器解析信息推荐请求,得到离线统计数据。
101.步骤s405,终端在当前界面上显示配置页面。
102.这里,配置页面用于进行配置操作,输入词典的配置信息。配置页面中包括但不限于:协议选择按钮、协议输入区、自定义配置信息录入区。用户可以在配置页面执行配置操作,以输入配置信息。
103.本技术实施例中,配置信息包括但不限于:预定义词典的类型、预定义词典的数据个数、预定义词典的数据结构、预定义词典的大小、预定义词典的索引方式。
104.其中,预定义词典的类型包括定长类型的预定义词典、变长类型的预定义词典、重复结构的预定义词典和自定义结构的预定义词典,其中,在定长类型的预定义词典中,离线统计数据对应的二进制数据对象中每一字段的值,被填入至预定义词典的定长区中;在变长类型的预定义词典这中,离线统计数据对应的二进制数据对象中每一字段的值,被填入至预定义词典的变长区中,且变长内容的长度也填入至变长区中;在重复结构的预定义词典中,在离线统计数据对应的二进制数据对象中,全部字段中的重复字段对应的重复数量和重复字段的值,被填入至预定义词典的变长区中;在自定义结构的预定义词典中,是融合了上述定长类型的预定义词典、变长类型的预定义词典和重复结构的预定义词典的构造方式,所得到的预定义词典。
105.预定义词典的数据个数是指预先定义好的通用词典能够存储的离线统计数据的个数。预定义词典的数据结构包括整数型数据、浮点型数据、字符串型数据等。预定义词典的大小是指预定义词典能够存储的离线统计数据的大小。预定义词典的索引方式是指预定义词典中针对于每一离线统计数据进行数据索引的方式,即通过预定义词典的索引区的索引内容,如何索引出定长区和变长区中所存储的实际数据。
106.步骤s406,终端获取目标对象针对配置页面的配置操作,并响应于配置操作注册预定义词典的词典配置。
107.这里,注册预定义词典的词典配置,是指对配置操作对应的配置信息进行登记,生成词典配置。其中,词典配置中包括目标对象的配置操作所输入的全部配置信息。
108.步骤s407,终端将词典配置发送给服务器。
109.步骤s408,服务器将词典配置写入至预设数据库中,形成预定义词典。
110.这里,预设数据库是预先提供的用于存储词典配置的存储模块,将词典配置写入至预设数据库中,具有词典配置中的全部配置信息的预设数据库构成预定义词典。
111.需要说明的是,步骤s405至步骤s408中生成预定义词典的步骤,可以在执行步骤s401至步骤s404过程中的任意时刻执行。
112.在一些实施例中,词典配置至少包括通用数据结构协议。
113.步骤s409,服务器确定通用数据结构协议定义的数据结构。
114.步骤s410,服务器按照数据结构,对离线统计数据中的每一子数据依次进行序列化处理,生成至少一个二进制数据对象。
115.在一些实施例中,二进制数据对象包括定长区和变长区;步骤s410可以通过以下步骤s4101和步骤s4102(图中未示出)实现:
116.步骤s4101,确定离线统计数据中的每一子数据的多个字段的值。
117.步骤s4102,按照数据结构,依次将每一字段的值填入至定长区和变长区中的至少
一个,对应生成一个二进制数据对象。
118.本技术实施例中,二进制数据对象具有不同的类型,其中,二进制数据对象包括以下至少之一:定长类型的二进制数据对象、变长类型的所述二进制数据对象、重复结构的二进制数据对象和自定义结构的二进制数据对象。生成二进制数据对象可以通过以下方式中的任意一种方式实现:
119.方式一:将每一字段的值填入至定长区的对应位置,生成具有定长类型的二进制数据对象。
120.方式二:将字段的值填入至变长区,且将变长内容的长度填入至变长区,生成具有变长类型的所述二进制数据对象;其中,变长区的起始位置作为变长区内实际存储位置的偏移,且偏移被填入至所述定长区。
121.方式三:确定全部字段中的重复字段对应的重复数量;并将重复数量和重复字段的值填入至变长区,生成具有重复结构的二进制数据对象;其中,变长区的起始位置作为变长区内实际存储位置的偏移,且偏移被填入至定长区。
122.方式四:基于定长类型、变长类型和重复结构的二进制数据对象的构造方式,对全部字段的值进行递归构造,形成递归构造结果;然后,将递归构造结果填入至变长区,生成具有自定义结构的二进制数据对象;其中,变长区的起始位置作为变长区内实际存储位置的偏移,且偏移被填入至定长区。
123.步骤s411,服务器确定每一子数据对应的关键词和关键词对应的关键词字段。
124.本技术实施例中,子数据对应的关键词可以是子数据的id、子数据的摘要等信息。每一关键词对应一关键词字段。
125.步骤s412,服务器基于每一子数据的关键词字段和二进制数据对象,对预定义词典进行填充处理,形成二进制离线文件。
126.在一些实施例中,步骤s412可以通过以下步骤s4121和步骤s4122(图中未示出)实现:
127.步骤s4121,以每一子数据的关键词字段为键,且以子数据对应的二进制数据对象为值,形成键值对。
128.步骤s4122,将离线统计数据对应的全部键值对依次插入至预定义词典中,形成二进制离线文件。
129.本技术实施例中,在二进制离线文件中,基于关键词字段可以查找到二进制数据对象。也就是说,通过关键词字段可以索引到对应的二进制数据对象。
130.本技术实施例中,预定义词典可以包括索引区和二进制结构,在将离线统计数据对应的全部键值对依次插入至预定义词典中时,可以是将键值对中的关键词字段插入至索引区;以及,将键值对中的二进制数据对象插入至二进制结构中,形成二进制离线文件。
131.步骤s413,服务器调用通用数据服务,对二进制离线文件进行数据加载,形成目标对象的通用词典。
132.步骤s414,服务器调用在线信息服务,基于通用词典从待推荐信息中确定目标推荐信息。
133.步骤s415,服务器将目标推荐信息发送给终端。
134.步骤s416,终端在客户端的当前界面上显示目标推荐信息。
135.本技术实施例提供的信息推荐方法,按照通用数据结构协议定义的数据结构对离线统计数据中的每一子数据依次进行序列化处理,生成至少一个二进制数据对象,然后,基于每一子数据的关键词字段和二进制数据对象,对预定义词典进行填充处理,形成二进制离线文件,如此,针对于不同的离线统计数据,基于相同的数据结构,能够生成具有统一数据结构的二进制离线文件,从而构建具有统一数据结构的通用词典,从而可以减少相似数据加载解析时的重复开发,提高通用词典的创建效率。同时,基于本技术实施例提供的数据结构,对离线统计数据进行统一的编码处理,可以大幅减少存储空间的使用,极大地节省存储资源。
136.图5是本技术实施例提供的信息推荐方法的再一个可选的流程示意图,如图5所示,方法包括以下步骤:
137.步骤s501,终端采集并统计得到目标对象的离线统计数据。
138.步骤s502,终端对离线统计数据进行封装,形成信息推荐请求。
139.步骤s503,终端将信息推荐请求发送给服务器。
140.步骤s504,服务器解析信息推荐请求,得到离线统计数据。
141.步骤s505,服务器基于预定义词典,对离线统计数据进行信息编码处理,得到二进制离线文件。
142.步骤s506,服务器调用通用数据服务获取二进制离线文件;
143.步骤s507,服务器调用通用数据服务将二进制离线文件加载至预设内存的连续空间中,形成目标对象的通用词典。
144.在一些实施例中,预设内存的连续空间包括多个具有不同层级的片;每一片由多个存储单元块组成;二进制离线文件包括多个子文件数据。对应地,步骤s507可以通过以下步骤s5071至步骤s5073(图中未示出)实现:
145.步骤s5071,确定每一子文件数据对应的数据大小。
146.步骤s5072,基于子文件数据的数据大小,从预设内存的连续空间的多个存储单元块中,确定目标存储单元块。
147.在一些实施例中,每一片中的多个存储单元块具有相同的存储空间大小。在确定目标存储单元块时,可以先确定每一片对应的存储空间大小;然后,从预设内存的连续空间的不同层级的片中,将存储空间大小大于或等于子文本数据的数据大小的片确定为待存储片;其中,待存储片的数量为一个或多个;再然后,当待存储片的数量为多个时,将具有空余的存储单元块且具有最小层级的待存储片,确定为目标片;最后,将目标片中的空余的存储单元块,确定为目标存储单元块。
148.本技术实施例中,在生成通用词典时,采用连续内存空间词典设计方式进行数据的写入。下面对连续内存空间词典设计进行举例说明。
149.假设预设内存的连续空间构成一对象池,对象池中包括多个存储单元块,每一定数量的存储单元块构成一个片,例如,构成36层级的片,每一层级中具有至少一个片。每一片中具有一定数量的存储单元块,不同片的存储单元块的数量可以相同,也可以不同。假设片0中具有4个存储单元块,分别为存储单元块00、存储单元块01、存储单元块02和存储单元块03;片1中有5个存储单元块,分别为存储单元块10、存储单元块11、存储单元块12、存储单元块13和存储单元块14;片2中具有4个存储单元块,分别为存储单元块20、存储单元块21、
存储单元块22和存储单元块23;
……
同一层级的片中的全部存储单元块具有相同的存储空间大小,假设片0和片1为同一层级,例如,为第1层级,片2为第二层级,片0和片1中的全部存储单元块的存储空间大小均为5字节,片2中的全部存储单元块的存储空间大小均为7字节。那么,对于二进制离线文件中的多个子文件数据,分别为子文本数据s1、子文本数据s2
……
子文本数据sn。
150.此时,如果子文本数据s1的数据大小为5字节,则此时片0中的存储单元块00处于空余状态,即没有存储和写入任何数据,为空余的存储单元块,因此可以将片0确定为目标片,将片0中的第一个存储单元块00确定为目标存储单元块,并将子文本数据s1存储至存储单元块00中。如果子文本数据s2的数据大小为6字节,则此时片0和片1中的每一存储单元块的存储空间大小均小于子文本数据s2的数据大小,且片2中的存储单元块的存储空间大小大于子文本数据s2的数据大小,因此,将片2确定为目标片,将片2中的第一个存储单元块20确定为目标存储单元块,并将子文本数据s2存储至存储单元块20中。
151.在一些实施例中,每一存储单元块可以具有一虚拟地址,因此,在确定目标存储单元块时,也可以获取该目标存储单元块的虚拟地址。例如,基于子文件数据的数据大小,从预设内存的连续空间的多个存储单元块中,确定目标存储单元块和目标存储单元块的虚拟地址。
152.步骤s5073,将每一子文件数据存储至对应的目标存储单元块中,形成目标对象的通用词典。
153.在一些实施例中,每一存储单元块可以具有一虚拟地址,因此,形成目标对象的通用词典时,可以基于所获取的目标存储单元块的虚拟地址来实现。例如,可以确定每一子文件数据对应的目标存储单元块的虚拟地址;然后,基于虚拟地址,将每一子文件数据存储至对应的目标存储单元块中,形成目标对象的通用词典。
154.步骤s508,服务器调用在线信息服务获取待推荐信息对应的待查询键列表。
155.这里,待查询键列表中包括多个待查询键。
156.步骤s509,通过在线信息服务基于待查询键列表中的每一待查询键,生成信息查询请求。
157.每一信息查询请求用于请求从通用词典中查询相应的待查询键所对应的值。
158.步骤s510,通过在线信息服务将信息查询请求发送给通用数据服务。
159.步骤s511,通过在线信息服务接收通用数据服务响应于信息查询请求,基于待查询键列表中的每一待查询键,从通用词典中查询到的值列表。
160.本技术实施例中,通用数据服务在接收到信息查询请求之后,解析信息查询请求,得到待查询键,并从通用词典中查询与待查询键匹配的索引区中的索引信息。如果查询到匹配的索引信息,则将索引信息对应的二进制数据对象确定为查询到的值。通过对待查询键列表中的每一待查询键在通用词典中进行查询,得到值列表。
161.通用数据服务在得到值列表之后,将值列表反馈给在线信息服务。
162.步骤s512,通过在线信息服务基于值列表,从待推荐信息中确定出目标推荐信息。
163.步骤s513,服务器将目标推荐信息发送给终端。
164.步骤s514,终端在客户端的当前界面上显示目标推荐信息。
165.本技术实施例提供的信息推荐方法,在生成通用词典时,采用连续内存空间词典
设计方式进行数据的写入,如此能够保证将多个二进制离线文件对应的多个子文件数据依次写入连续内存空间的连续内存中,且能够保证按照连续内存中的存储单元块存储空间大小进行合理的数据存储,保证每一存储单元块的存储空间的最大化利用,极大了降低的存储空间的浪费,且能够按序将全部子文件数据写入至提供的连续内存空间中,保证连续内存空间的合理利用,并能够有效提升词典数据的加载速度。
166.下面,将说明本技术实施例在一个实际的应用场景中的示例性应用。
167.本技术实施例提供一种信息推荐方法,该方法利用数据编码技术和连续内存设计将信息流推荐中词典信息的存储和更新由原来的在线信息服务转移到通用数据服务中进行,在线信息服务只需通过网络请求即可查询词典内容。
168.本技术实施例提供的通用词典框架(即生成通用词典的方法),可以应用到大部分相关的信息流推荐服务中,尤其是在加载词典数量较多的服务中效果显著。信息流推荐服务相关的程序,只要部署通用数据服务并提供通用词典框架的接口与配置,都可以适配并提供词典更新功能和数据查询服务。
169.本技术实施例提出了一种基于数据编码技术和内存设计的信息流通用词典框架,即生成通用词典的方法,这套框架主要应用在信息流产品的内容推荐服务上,有效地统一了离线生产端的数据格式,减小了云端在线服务(即在线信息服务)的内存使用,极大地缩短了通用词典的加载耗时,并有效提高云端在线服务的稳定性和安全性。图6是本技术实施例提供的信息推荐方法的框架图,如图6所示,信息推荐方法的整体框架包括离线数据生产601、通用数据服务602和云端在线服务603。箭头表示数据与计算结果流转过程。其中,在离线数据生产601中,包括数据统计和数据编码过程,对应生成离线词典;在通用数据服务602中,通过调用通用数据服务602加载词典;在云端在线服务603中,基于深度学习模型对候选物品进行筛选,得到推荐物品,从而对用户进行物品推荐(即信息推荐)。
170.图7是本技术实施例提供的以物品点击率数据为例实现的信息推荐方法的框架图,如图7所示,以物品点击率数据为例,信息推荐方法的整体框架包括终端app 700、离线数据生产701、通用数据服务702和云端在线服务703。其中,物品点击率信息由线上的目标对象行为产生,统计完成后经过信息编码再填充到离线词典中,遍历完当前时间窗口内所有的物品点击率信息集,离线词典即刻导出成为二进制离线文件并同步到通用数据服务702,并加载离线文件成为通用词典。云端在线服务703即线上推荐服务,需要查询物品的点击率信息以完成推荐流程,并最终将推荐物品列表发送给终端app 700。终端的用户对推荐的物品列表发生目标对象行为后,由曝光数据统计流程将物品点击率信息收集后发送给离线数据生产端,由此形成闭环。
171.本技术实施例利用数据编码技术和连续内存词典设计,将云端在线服务需要加载和更新的词典转移到通用数据服务执行,云端线上服务只需要使用深度模型对用户侧和物品侧的内容进行排序计算即可得到推荐物品。极大地减轻了云端在线服务存储和解析更新词典的压力,减少了服务器资源的占用。在云端在线服务所需词典数量庞大和更新频繁的情况下,也不会对云端在线服务的启动和性能负载产生压力。
172.本技术实施例中设计了一整套基于数据编码技术和连续内存词典设计的通用词典框架。框架的核心是使用通用数据结构协议自定义数据结构,利用数据编码技术序列化成二进制数据对象,离线端生产按二进制对象填充的预定义词典。由于预定义词典使用连
续内存设计,可快速导出成二进制离线文件。通用数据服务利用内存的连续性秒级快速加载二进制离线文件到内存中成为通用词典,供云端线上服务查询词典内容。最终云端线上服务利用解码技术查询所需内容,结合深度学习推荐模型完成最后的计算,并将推荐结果返回给终端用户。
173.图8是本技术实施例提供的信息推荐方法的整体流程图,如图8所示,方法包括以下步骤:
174.步骤s801,配置注册。
175.步骤s802,数据编码。
176.步骤s803,离线词典填充/导出。
177.步骤s804,通用数据服务加载词典。
178.步骤s805,云端线上服务进行特征统计。
179.由此可见,基于本技术实施例提供的通用词典框架,通过配置中心的前端注册词典配置,包括:词典名称、通用数据结构协议定义的数据结构、数据存储路径、关键词字段等,并写入数据库。后续离线生产、通用数据服务以及云端在线服务都可以通过配置中心获取词典配置。首先,原始离线数据按照通用数据结构协议逐条生产,通过编码技术,将离线数据逐条序列化成紧凑二进制数据对象。以配置中指定的关键词字段为键,二进制数据对象为值,插入离线的预定义词典。对本次需构建的原始离线数据集完成遍历后,离线词典填充完毕,并导出成为二进制离线文件后直接推送至通用数据服务中。通用数据服务可利用存储的连续性,快速加载离线文件到内存中成为通用数据服务的通用词典。云端线上服务通过网络请求向通用数据服务发送需查询的键列表,并获得对应的值列表,包括由原始离线数据编码成紧凑二进制数据对象构成的列表。由于值为特殊设计紧凑二进制数据对象,根据配置内的数据结构协议可通过按偏移读取二进制数据对象内任意字段。最终云端在线服务可使用值列表完成信息流物品的推荐流程,并将推荐结果返回到用户终端app。目标对象行为将导致物品、目标对象属性的统计数据发生变化,离线数据生产端将定期消费流式特征统计结果,更新离线数据并推送新的词典文件。
180.下面对本技术实施例提供的编码/解码技术进行说明。
181.本技术实施例中,可以用“field”表示序列化数据结构协议(是本技术实施例的通用数据结构协议的一种实现方式。例如,在本技术的一种实现方式中,序列化数据结构协议可以是protobuf协议)中信息(message)结构中的字段。例如,在推荐领域,message结构名为newsctr,field1为无符号64位整型(uint64)类型的docidmd5,field2为浮点型数据(float)类型的点击通过率(ctr,click through rate),field3为字符串(string)类型的docid等。“value”表示字段的值,“offset”表示变长区内实际存储位置的偏移,“len”表示变长内容的长度。
182.本技术实施例详细实现方案如图9所示。对于同一词典内的任意单条数据,可以使用序列化数据结构协议自定义的同一数据结构来表示,例如,本技术实施例可以采用protobuf协议的message结构。通过反射,可获取message内所有的字段和值,由此构建索引区和二进制数据对象。索引区表示字段与值实际存储位置的映射。二进制数据对象可分为定长区和变长区,实际编码规则如下:
183.定长类型(uint64、uint32、float等):值直接填入定长区对应位置。
184.变长类型(bytes、string):长度和值填入变长区,变长区的起始位置作为偏移填入定长区。
185.重复结构(repeated字段修饰):重复数量和值填入变长区,变长区的起始位置作为偏移填入定长区。
186.用户自定义结构(message):使用上述三种方式递归构造后填入变长区,变长区的起始位置作为偏移填入定长区。
187.在构造通用词典时,通用词典的值即为由定长区和变长区组成的二进制数据对象。云端线上服务得到通用数据服务返回的二进制数据对象,通过message的实际定义即可构造出索引区,并根据索引区的映射以及上述编码规则的逆序,即可解码出所需字段的具体值。
188.本技术实施例的方法利用数据编码、解码技术将复杂结构,序列化成空间占用量更低的二进制数据对象,并且二进制数据对象支持无需反序列化即可解码读取原message结构内的任意字段值,具有极强的扩展性和灵活性。该方法很好地缓解了之前离线生产的数据格式无法统一且文件分发量大的问题。
189.下面对本技术实施例提供的连续内存空间词典设计进行数据。
190.本技术实施例中,用“block”表示对象池最小的存储单元块,“slab”表示由存储单元块组成的片,“slabmanager”表示片管理器,“freelist”表示已删除块列表,“vaddr”表示对象池内的存储单元块的虚拟地址。
191.本技术实施例的详细实现方案可分为两部分:对象池设计和哈希表设计。对象池设计详细实现方案如图10所示,片设计可以为36层级,从0至35级依次代表片包含的块大小从5个字节至65535个字节递增,依照历史离线数据长度统计比例非均匀分布。每次申请对象块,则向对应层级的片管理器申请下一个空余块,并得到一个虚拟地址作为返回。
192.图10示例了第0层级和第1层级,其中,片管理器0对应第0层级,第0层级中的片中的存储单元块的块大小均为5字节,第0层级中包括片0和片1,片1中具有4个存储单元块,片1中具有4个存储单元块;片管理器1对应第1层级,第1层级中的片中的存储单元块的块大小均为7字节,第1层级中包括片3和片4,片3中具有4个存储单元块,片4中具有4个存储单元块。
193.如图11所示,是本技术实施例提供的虚拟地址的结构示意图,虚拟地址由一个无符号32位整型数字表示,前10位表示片序号,后22位表示片内的块号偏移。如果当前层级的片不包含未分配的空余块时,则向系统内存申请一整个连续内存地址的空余片以供后续的块分配,并由指针连接同等级的前一片。如果有对象块需要被删除,则用一个删除块列表记录被删除块的虚拟地址,分配对象块时,优先分配删除块列表内的块。对于哈希表设计,哈希函数选取了murmurhash3;解决哈希冲突的方法采用开放定址法中的线性探测法,即发生哈希冲突时,线性向后查找空余的位置。通用词典需搭配上述对象池和哈希表使用。哈希表申请一块长度足够的连续内存的无符号32位整型数组,该无符号32位整型数组的数组序号作为词典的键,对象池内填写通用词典的值,数组内存储对象池的虚拟地址。
194.上述方法,利用连续内存空间的对象池和哈希表设计的通用词典,对于需要快速导出和加载的词典服务可以产生非常好的支持,具有较强的灵活性和极好的扩展性。该方法很好地缓解了之前云端在线服务启动时间长与通用词典更新时线上性能下降等问题。
195.本技术实施例提出的词典框架,应用于信息流推荐的线上模型计算服务中,在存在大量用户推荐app的云端模型推理计算中,整体通用词典文件分发磁盘消耗减少33.3%,通用词典加载耗时减少96.8%,云端在线服务性能优化11.2%。
196.可以理解的是,在本技术实施例中,涉及到用户信息的内容,例如,用户的离线统计数据、二进制离线文件、通用词典、目标推荐信息等信息,如果涉及与用户信息或企业信息相关的数据,当本技术实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
197.下面继续说明本技术实施例提供的信息推荐装置354实施为软件模块的示例性结构,在一些实施例中,如图2所示,信息推荐装置354包括:
198.获取模块,用于获取目标对象的离线统计数据;信息编码模块,用于基于预定义词典,对所述离线统计数据进行信息编码处理,得到二进制离线文件;数据加载模块,用于通过通用数据服务,对所述二进制离线文件进行数据加载,形成所述目标对象的通用词典;信息推荐模块,用于通过在线信息服务,基于所述通用词典从待推荐信息中确定目标推荐信息,并向所述目标对象推荐所述目标推荐信息。
199.在一些实施例中,所述装置还包括:配置页面显示模块,用于在基于预定义词典,对所述离线统计数据进行信息编码处理之前,在当前界面上显示配置页面;注册模块,用于响应于针对所述配置页面的配置操作,注册所述预定义词典的词典配置;写入模块,用于将所述词典配置写入至预设数据库中,形成所述预定义词典。
200.在一些实施例中,所述词典配置至少包括通用数据结构协议;所述信息编码模块还用于:确定所述通用数据结构协议定义的数据结构;按照所述数据结构,对所述离线统计数据中的每一子数据依次进行序列化处理,生成至少一个二进制数据对象;确定每一所述子数据对应的关键词和所述关键词对应的关键词字段;基于每一所述子数据的关键词字段和所述二进制数据对象,对所述预定义词典进行填充处理,形成所述二进制离线文件。
201.在一些实施例中,所述二进制数据对象包括定长区和变长区;所述信息编码模块还用于:确定所述离线统计数据中的每一子数据的多个字段的值;按照所述数据结构,依次将每一所述字段的值填入至所述定长区和所述变长区中的至少一个,对应生成一个所述二进制数据对象。
202.在一些实施例中,所述信息编码模块还用于:将每一所述字段的值填入至所述定长区的对应位置,生成具有定长类型的所述二进制数据对象;或者,将所述字段的值填入至所述变长区,且将变长内容的长度填入至所述变长区,生成具有变长类型的所述二进制数据对象;其中,所述变长区的起始位置作为所述变长区内实际存储位置的偏移,且所述偏移被填入至所述定长区;或者,确定全部字段中的重复字段对应的重复数量;并将所述重复数量和所述重复字段的值填入至所述变长区,生成具有重复结构的所述二进制数据对象;其中,所述变长区的起始位置作为所述变长区内实际存储位置的偏移,且所述偏移被填入至所述定长区;或者,基于所述定长类型、所述变长类型和所述重复结构的二进制数据对象的构造方式,对全部字段的值进行递归构造,形成递归构造结果;并将所述递归构造结果填入至所述变长区,生成具有自定义结构的所述二进制数据对象;其中,所述变长区的起始位置作为所述变长区内实际存储位置的偏移,且所述偏移被填入至所述定长区。
203.在一些实施例中,所述信息编码模块还用于:以每一所述子数据的关键词字段为
键,且以所述子数据对应的二进制数据对象为值,形成键值对;将所述离线统计数据对应的全部键值对依次插入至所述预定义词典中,形成所述二进制离线文件。
204.在一些实施例中,所述预定义词典包括索引区和二进制结构;所述信息编码模块还用于:将所述键值对中的关键词字段插入至所述索引区;将所述键值对中的二进制数据对象插入至所述二进制结构中,形成所述二进制离线文件。
205.在一些实施例中,所述数据加载模块还用于:调用所述通用数据服务获取所述二进制离线文件;将所述二进制离线文件加载至预设内存的连续空间中,形成所述目标对象的通用词典。
206.在一些实施例中,所述预设内存的连续空间包括多个具有不同层级的片;每一所述片由多个存储单元块组成;所述二进制离线文件包括多个子文件数据;所述数据加载模块还用于:确定每一所述子文件数据对应的数据大小;基于所述子文件数据的数据大小,从所述预设内存的连续空间的多个存储单元块中,确定目标存储单元块;将每一所述子文件数据存储至对应的目标存储单元块中,形成所述目标对象的通用词典。
207.在一些实施例中,每一所述片中的多个存储单元块具有相同的存储空间大小;所述数据加载模块还用于:确定每一所述片对应的存储空间大小;从所述预设内存的连续空间的不同层级的片中,将存储空间大小大于或等于所述子文本数据的数据大小的片确定为待存储片;其中,所述待存储片的数量为一个或多个;当所述待存储片的数量为多个时,将具有空余的存储单元块且具有最小层级的待存储片,确定为目标片;将所述目标片中的空余的存储单元块,确定为所述目标存储单元块。
208.在一些实施例中,每一所述存储单元块具有一虚拟地址;所述虚拟地址包括所述存储单元块对应的片的片序号、和所述存储单元块在所述片中的块号偏移;所述数据加载模块还用于:基于所述子文件数据的数据大小,从所述预设内存的连续空间的多个存储单元块中,确定目标存储单元块和所述目标存储单元块的虚拟地址;确定每一所述子文件数据对应的目标存储单元块的虚拟地址;基于所述虚拟地址,将每一所述子文件数据存储至对应的目标存储单元块中,形成所述目标对象的通用词典。
209.在一些实施例中,所述信息推荐模块还用于:调用在线信息服务获取所述待推荐信息对应的待查询键列表;基于所述待查询键列表中的每一待查询键,生成信息查询请求;将所述信息查询请求发送给所述通用数据服务;接收所述通用数据服务响应于所述信息查询请求,基于所述待查询键列表中的每一待查询键,从所述通用词典中查询到的值列表;基于所述值列表,从所述待推荐信息中确定出所述目标推荐信息。
210.需要说明的是,本技术实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
211.本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括可执行指令,该可执行指令是一种计算机指令;该可执行指令存储在计算机可读存储介质中。当信息推荐设备的处理器从计算机可读存储介质读取该可执行指令,处理器执行该可执行指令时,使得该信息推荐设备执行本技术实施例上述的方法。
212.本技术实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本技术实施例提供的方法,例如,如图3
示出的方法。
213.在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(fram,ferromagnetic random access memory)、只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read only memory)、可擦除可编程只读存储器(eprom,erasable programmable read only memory)、带电可擦可编程只读存储器(eeprom,electrically erasable programmable read only memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(cd-rom,compact disk-read only memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
214.在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
215.作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hyper text markup language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备(可以是作业运行时长确定设备)上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
216.以上所述,仅为本技术的实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1