一种待推荐对象管理方法、装置、电子设备及存储介质
文献发布时间:2023-06-19 18:53:06
技术领域
本申请涉及信息技术领域,特别是涉及一种待推荐对象管理方法、装置、电子设备及存储介质。
背景技术
在大数据环境下,大多数应用软件可以依据大数据技术来向用户推荐感兴趣的内容,例如,依据用户在视频软件中的浏览记录,向该用户推荐可能感兴趣的相关视频等。
在相关技术中,面对众多的推荐场景,通常是依据待推荐对象来确定推荐场景。然而,由于待推荐对象的内容的多样性,其相关内容可能会分布在多个实体中,因此,只依据待推荐对象的内容进行推荐,会造成确定推荐场景时不够准确的问题。
发明内容
本申请实施例的目的在于提供一种待推荐对象管理方法、装置、电子设备及存储介质,以解决确定推荐场景时不够准确的问题。具体技术方案如下:
在本申请实施的第一方面,首先提供了一种待推荐对象管理方法,所述方法包括:
提取预设数据格式的待推荐对象对应的数据;
依据预先确定的对象与实体间的关联关系,确定与所述待推荐对象关联的关联实体,并获取所述关联实体对应的关联实体数据;
根据所述所述待推荐对象对应的数据和所述关联实体数据,确定所述待推荐对象所属的内容推荐池。
在一种可能的实施方式中,所述提取预设数据格式的待推荐对象对应的数据之后,所述方法还包括:
将所述待推荐对象对应的数据由多层结构转化为单层结构;
通过预设的数据和字段的对应关系,从转化后的待推荐对象中提取对应的字段,得到第一字段;
将所述第一字段写入第一字典中。
在一种可能的实施方式中,所述依据预先确定的对象与实体间的关联关系,确定与所述待推荐对象关联的关联实体,并获取所述关联实体对应的关联实体数据之后,所述方法还包括:
将所述关联实体数据由多层结构转化为单层结构;
通过预设的数据和字段的对应关系,从转化后的关联实体数据中提取对应的字段,得到第二字段;
将所述第二字段写入第二字典中。
在一种可能的实施方式中,所述内容推荐池对应一个推荐场景;所述根据所述待推荐对象对应的数据和所述关联实体数据,确定所述待推荐对象所属的内容推荐池,包括:
获取预设过滤规则;
依据所述预设过滤规则,识别所述待推荐对象对应的数据和所述关联实体数据中满足所述预设过滤规则的一个或多个目标字段;
依据所述内容推荐池的推荐场景,确定所述目标字段对应的待推荐对象所属的内容推荐池。
在一种可能的实施方式中,所述预设过滤规则包括预设名称、预设关系和预设取值,所述依据所述预设过滤规则,识别所述所述待推荐对象对应的数据和所述关联实体数据中满足所述预设过滤规则的一个或多个目标字段,包括:
将所述第一字典和所述第二字典合并,生成第三字典,其中,所述第三字典中的字段包括字段名称和字段取值;
读取所述第三字典中各字段的字段名称,并依据所述预设名称,识别所述目标字段中字段名称与所述预设名称相同的一个或多个第三字段;
依据所述预设取值,将所述一个或多个第三字段中字段取值与所述预设取值的大小满足所述预设关系的第三字段,确定为所述目标字段。
在一种可能的实施方式中,所述依据所述内容推荐池的推荐场景,确定所述目标字段对应的待推荐对象所属的内容推荐池之后,所述方法还包括:
将所述待推荐对象和内容推荐池的场景的对应关系存入第二数据库中;
针对任一场景,获取预先召回的倒排内容,其中,所述倒排内容为针对该场景预先检索到的内容,所述倒排内容包括多条子内容;
针对各所述子内容,判断该子内容中是否在所述第二数据库中,若否,则剔除该子内容。
在一种可能的实施方式中,所述根据所述待推荐对象对应的数据和所述关联实体数据,确定所述待推荐对象所属的内容推荐池之后,所述方法还包括:
将所述待推荐对象和所述内容推荐池的对应关系存入第三数据库中。
在本申请实施的第二方面,还提供了一种待推荐对象管理装置,所述装置包括:
待推荐对象获取模块,用于提取预设数据格式的待推荐对象对应的数据;
关联实体数据获取模块,用于依据预先确定的对象与实体间的关联关系,确定与所述待推荐对象关联的关联实体,并获取所述关联实体对应的关联实体数据;
内容推荐池确定模块,用于根据所述待推荐对象对应的数据和所述实体数据,确定所述待推荐对象所属的内容推荐池。
在一种可能的实施方式中,所述装置还包括:
第一结构转化模块,用于将所述待推荐对象对应的数据由多层结构转化为单层结构;
第一字段提取模块,用于通过预设的数据和字段的对应关系,从转化后的待推荐对象中提取对应的字段,得到第一字段;
第一字典生成模块,用于将所述第一字段写入第一字典中。
在一种可能的实施方式中,所述装置还包括:
第二结构转化模块,用于将所述关联实体数据由多层结构转化为单层结构;
第二字段提取模块,用于通过预设的数据和字段的对应关系,从转化后的关联实体数据中提取对应的字段,得到第二字段;
第二字典生成模块,用于将所述第二字段写入第二字典中。
在一种可能的实施方式中,所述内容推荐池对应一个推荐场景;所述内容推荐池确定模块,包括:
规则获取子模块,具体用于获取预设过滤规则;
字段过滤子模块,具体用于依据所述预设过滤规则,识别所述待推荐对象对应的数据和所述关联实体数据中满足所述预设过滤规则的一个或多个目标字段;
内容推荐池确定子模块,具体用于依据所述内容推荐池的推荐场景,确定所述目标字段对应的待推荐对象所属的内容推荐池。
在一种可能的实施方式中,所述预设过滤规则包括预设名称、预设关系和预设取值,所述字段过滤子模块,包括:
字典合并单元,具体用于将所述第一字典和所述第二字典合并,生成第三字典,其中,所述第三字典中的字段包括字段名称和字段取值;
名称识别单元,具体用于读取所述第三字典中各字段的字段名称,并依据所述预设名称,识别所述目标字段中字段名称与所述预设名称相同的一个或多个第三字段;
目标字段确定单元,具体用于依据所述预设取值,将所述一个或多个第三字段中字段取值与所述预设取值的大小满足所述预设关系的第三字段,确定为所述目标字段。
在一种可能的实施方式中,所述装置还包括:
对应关系存储模块,用于将所述待推荐对象和内容推荐池的场景的对应关系存入第二数据库中;
倒排内容获取模块,用于针对任一场景,获取预先召回的倒排内容,其中,所述倒排内容为针对该场景预先检索到的内容,所述倒排内容包括多条子内容;
子内容剔除模块,用于针对各所述子内容,判断该子内容中是否在所述第二数据库中,若否,则剔除该子内容。
在一种可能的实施方式中,所述装置还包括:
图表生成模块,用于将所述待推荐对象和所述内容推荐池的对应关系存入第三数据库中。
在本申请实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的待推荐对象管理方法。
在本申请实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的待推荐对象管理方法。
本申请实施例提供的一种待推荐对象管理方法、装置、电子设备及存储介质,通过提取预设数据格式的待推荐对象对应的数据;依据预先确定的对象与实体间的关联关系,确定与所述待推荐对象关联的关联实体,并获取所述关联实体对应的关联实体数据;根据所述待推荐对象对应的数据和所述关联实体数据,确定所述待推荐对象所属的内容推荐池。应用本申请实施例的方法,可以通过获取待推荐对象的关联实体,将关联实体的数据与待推荐对象的数据合并,对合并后的数据进行筛选来确定待推荐对象的推荐场景,从而通过增加对待推荐对象的关联实体数据的分析,解决确定推荐场景时不够准确的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的待推荐对象管理方法的一种流程图。
图2为本申请实施例提供的步骤S103细化的一种流程图。
图3为本申请实施例提供的待推荐对象管理方法的一种示意图。
图4为本申请实施例提供的待推荐对象管理装置的一种结构示意图。
图5为本申请实施例提供的电子设备的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
在本申请实施的第一方面,首先提供了一种待推荐对象管理方法,上述方法包括如图1所示步骤:
步骤S101:提取预设数据格式的待推荐对象对应的数据。
本申请实施例的方法可以通过终端设备实现,具体的,该终端设备可以是后端服务器、电脑、手机等电子设备。
待推荐对象可以是多种形式的对象,例如可以是视频、音频、图片、文本等。预设数据格式可以是待推荐对象存储在数据库或队列中的数据格式,例如protobuf(ProtocolBuffer,数据序列化机制)数据格式、JSON(JavaScript Object Notation,JS对象标记)、CSV(Comma-Separated Values,字符分隔值)等结构化的数据格式。
在实际应用中,可以通过离线扫描第一数据库,和/或,实时读取预设实时读消息服务,得到待推荐对象对应的数据;
第一数据库是以Hbase表的形式存储各待推荐对象对应的数据,每个待推荐对象对应一个Hbase表,在获取待推荐对象时,可以遍历第一数据库的所有Hbase表,识别得到待推荐对象对应的Hbase表。
预设实时读消息服务可以是一个队列,该队列包括实时运行的任务所获取的实时消息。其中,离线扫描第一数据库的Hbase表和实时读取预设实时读消息服务,均可以得到待推荐对象对应的数据,一个例子中,为了更准确的获得待推荐对象,可以同时通过离线扫描第一数据库和实时读取预设实时读消息服务获取待推荐对象对应的数据。
一个例子中,在数据存储平台中,所有的数据都是存储在protobuf结构体中,在获取预设数据格式的待推荐对象时通过遍历数据存储平台,得到protobuf格式的待推荐对象。一个例子中,可以同时进行离线任务和实时任务,即离线扫描Hbase表获得部分待推荐对象对应的数据,实时读取队列信息,获得部分待推荐对象对应的数据,最终得到全部待推荐对象对应的数据。
步骤S102:依据预先确定的对象与实体间的关联关系,确定与待推荐对象关联的关联实体,并获取关联实体对应的关联实体数据。
其中,实体可以为各种类型的,例如某个电视剧的其中一个剧集可以为一个实体,该电视剧所属的专辑可以为一个实体,该电视剧的评分也可以是一个实体等等。确定待推荐对象关联的实体可以多种方式的,例如,可以是通过查询预先建立的实体间的映射关系来确定待推荐对象关联的实体,也可以是通过读取队列信息来确定待推荐对象关联的实体。
预先确定的对象与实体间的关联关系可以是通过多种方式获取,例如,可以通过实体间的映射关系获取待推荐对象与实体间的关联关系,也可以通过读取实时读消息服务,获得待推荐对象与实体间的关联关系。在获取待推荐对象的关联实体时,可以确定与待推荐对象关联的多个关联实体。
步骤S103:根据待推荐对象对应的数据和关联实体数据,确定待推荐对象所属的内容推荐池。
其中,根据待推荐对象对应的数据和关联实体数据,确定待推荐对象所属的内容推荐池可以是通过预设的过滤规则,对待推荐对象对应的数据和关联实体数据进行筛选分类,从而确定待推荐对象所属的内容推荐池。一个例子中,每一内容推荐池对应一个场景,在根据待推荐对象对应的数据和关联实体数据确定待推荐对象所属的内容推荐池时,可以识别待推荐对象对应的数据和关联实体数据对应的场景,并将识别到的场景所对应的推荐池确定为该待推荐对象对应的数据和关联实体数据对应的待推荐对象所属的内容的推荐池。具体的,可以参考下述实施例。
应用本申请实施例的方法,可以通过获取待推荐对象的关联实体,将关联实体的数据与待推荐对象的数据合并,对合并后的数据进行筛选来确定待推荐对象的推荐场景,从而通过增加对待推荐对象的关联实体数据的分析,解决确定推荐场景时不够准确的问题。
为了获取预设数据格式的待推荐对象对应的数据,步骤S101之后,可以通过以下步骤对待推荐对象对应的数据进行数据处理:
步骤一,将待推荐对象对应的数据由多层结构转化为单层结构。
其中,待推荐对应的数据多是以嵌套的方式存储在数据库中,可以通过将嵌套的多层结构转为单层结构,来将待推荐对应的数据扁平化处理,使得待推荐待推荐对象对应的数据更易于提取。在实际应用中,可以使用递归、堆栈等方法将待推荐对象对应的数据从多层结构转为单层结构。
步骤二,通过预设的数据和字段的对应关系,从转化后的待推荐对象中提取对应的字段,得到第一字段。
在实际应用中,数据与字段之间存在对应关系,该对应关系可以通过一个标识来进行判断。当待推荐对象对应的数据扁平化后,可以通过识别待推荐对象对应的标识,来确定待推荐对象对应的字段位置,从而提取到待推荐对象对应的字段。在提取到字段待推荐对象对应的字段之后,可以将该字段转为基础类型,得到第一字段。在实际应用中,可以依据推荐业务的需要,加入部分自定义逻辑的方式,将提取的待推荐对象对应的子段转为基础类型或基础类型集合字段,得到第一字段。
一个例子中,可以将获取到的待推荐对象对应的数据通过转化为字符串的方式,将扁平化之后的数据转为int、float、double和char等基础数据类型。
步骤三,将第一字段写入第一字典中。
其中,生成第一字典的方式可以是通过将第一字段写入一个空白字典中来实现。上述字典可以是一个{key:value}形式的字典,其中,key为字段名称,value为字段取值,字段名称可以是自定义的,例如可以将该待推荐对象的ID(Identification,序列号)作为字段名称,也可以将其对应的分类作为字段名称,例如“频道名称”可以作为字段名称。字段取值也可以是自定义的,例如,将频道对应的数字作为字段取值,如1、2、3、4等。
一个例子中,将第一字段写入一个key,value均为String类型的map(字典)中,最终得到第一字典为{频道id:5},表示该待推荐对象的频道id是5。
应用本申请实施例的方法,对待推荐对象的扁平化处理,可以使得待推荐对象对应的数据更易于处理。
为了获取待推荐对象关联的关联实体数据,步骤S102之后,可以通过以下步骤对关联实体数据进行数据处理:
步骤一,将关联实体数据由多层结构转化为单层结构。
步骤二,通过预设的数据和字段的对应关系,从转化后的关联实体数据中提取对应的字段,得到第二字段。
步骤三,将第二字段写入第二字典中。
在将关联实体数据由多层结构转化为单层结构,通过预设的数据和字段的对应关系,从转化后的关联实体数据中提取对应的字段,得到第二字段,可以通过与步骤S101中步骤一-步骤二相同的方式,获取第二字段。在确定待推荐对象的关联实体后,可以提取关联实体对应的数据,将关联实体数据对应的字段转为与第一字段类型相同的字段,得到第二字段。
根据第二字段生成关联实体的第二字典可以通过与步骤S101中步骤三相同或不同的方式实现。例如,将第二字段写入一个key,value均为String类型的字典,得到第二字典。
一个例子中,当待推荐对象为一个视频时,获取到的关联实体有多个,例如该视频的所属类型、该视频的评分和该视频的相关演员都是它的关联实体。在实际应用时,可以针对每一个关联实体,提取关联实体数据对应的字段,得到多个第二字段,并根据根据多个第二字段生成多个第二字典。
应用本申请实施例的方法,可以通过获取待推荐对象的关联实体,将关联实体数据对应的字段生成第二字典,从而利于待推荐对象与关联实体进行合并,进而增加对待推荐对象的关联实体数据的分析,最终解决确定推荐场景时不够准确的问题。
在确定待推荐对象所属的内容推荐池时,在一种可能的实施方式中,内容推荐池对应一个推荐场景;步骤S103可以包括如图2所示步骤:
步骤S201:获取预设过滤规则。
步骤S202:依据预设过滤规则,识别待推荐对象对应的数据和关联实体数据中满足预设过滤规则的一个或多个目标字段。
步骤S203:依据内容推荐池的推荐场景,确定目标字段对应的待推荐对象所属的内容推荐池。
其中,预设过滤规则可以通过多种方式获取,例如可以是获取预先完成配置的过滤规则,也可以获取用户手动输入或筛选的规则。在实际应用中,可以对各目标字段进行场景的标记,得到各目标字段的标记场景;依据各目标字段的标记场景,确定该目标字段对应的待推荐对象所属的内容推荐池。
在对目标字段进行场景标记时,可以通过新增标记字段的方式对其进行场景标记。例如,可以通过新增内容推荐池的id,将待推荐对象标记为该内容推荐池所属的内容。其中,场景可以是多种类型的应用环境,例如,视频播放器的首页为一个场景,猜你喜欢一栏为一个场景等。
一个例子中,预先获取用户完成配置的过滤规则,将其存储在一个数据库中,在获取预设规则时可以通过离线扫描或实时读取该数据库,得到预设过滤规则。依据该预设过滤规则,确定目标字典中满足预设过滤规则的多个目标字段,对每一个目标字段,打上数字标记,如标记“1”,从而确定对应“1”场景的内容推荐池所属的待推荐对象。
应用本申请实施例的方法,可以通过预设过滤规则,对待推荐对象对应的数据和关联实体数据进行筛选,并依据内容推荐池的场景,确定待推荐对象与内容推荐池的场景对应关系,解决确定推荐场景时不够准确的问题。
为了确定目标字段,在一种可能的实施方式中,预设过滤规则可以包括预设名称、预设关系和预设取值,步骤S202可以包括以下步骤:
步骤一,将第一字典和第二字典合并,生成第三字典,其中,第三字典中的字段包括字段名称和字段取值;
步骤二,读取第三字典中各字段的字段名称,并依据预设名称,识别目标字段中字段名称与预设名称相同的一个或多个第三字段。
步骤三,依据预设取值,将一个或多个第三字段中字段取值与预设取值的大小满足预设关系的第三字段,确定为目标字段。
将第一字典与第二字典进行合并,可以通过多种方式进行合并,例如,交叉融合,线型融合,合并融合等。一个例子中,可以采用拼接融合的方式对第一字典与第二字典进行合并,例如,当第一字典中的字段为{频道id:5},第二字典中的字段为{推荐等级:1},合并后的第三字典则为{频道id:5;推荐等级:1}。
在实际应用中,由于关联实体的相关实体数量较多,例如,待推荐对象a的关联实体是视频b,该视频b中包括评分、介绍等多个相关实体,则需要对每个相关实体对应的第二字典,都进行合并。
可选的,预设过滤规则可以包括多个子规则,每个子规则都包括预设名称、预设关系和预设取值三部分,预设过滤规则由多个子规则通过“且”或“或”的方式组成。预设名称可以是根据业务需求确定的所需的目标字段的字段名称,预设取值可以是通过用户在配置预设过滤规则时手动输入或下拉筛选得到的取值,预设关系可以是目标字段的字段取值与预设取值的大小需满足的运算关系,例如大于、大于等于、小于等运算关系。
一个例子中,预设过滤规则A为子规则a{频道id>5}且子规则b{频道id<10},则目标字段需满足的规则是,字段名称为频道id,字段取值大于5小于10。
应用本申请实施例的方法,可以通过多条子规则对预设过滤规则进行配置,从而简化确定目标字段的操作,无需每次对过滤规则进行重新编码,而是通过对子规则进行重新组合,得到所需的预设过滤规则,最终简化了确定待推荐对象对应场景的操作。
在一种可能的实施方式中,步骤S103之后,上述方法还可以包括:
步骤一,将待推荐对象和推荐池的场景的对应关系存入第二数据库中。
步骤二,针对任一场景,获取预先召回的倒排内容。
步骤三,针对各子内容,判断该子内容中是否在第二数据库中,若否,则剔除该子内容。
为了降低服务层的读取耗时和空间占用,离线和实时任务可以将待推荐对象和推荐池的场景的对应关系存入第二数据库中,其中,第二数据库可以是一个支持上述预设数据格式的数据库,例如,第二数据库可以是couchbase数据库,使用protobuf格式存储待推荐对象所在的内容推荐池信息,该内容推荐池信息可以包括内容推荐池的id,场景等信息。
倒排内容可以为针对任一场景预先检索到的内容,可以包括多条子内容。一个例子中,针对首页场景,通过离线召回它的倒排内容,为了确定该倒排内容中,是否每一个子内容都是首页场景所属的内容,可以通过读取第二数据库,获取待推荐对象和对应首页场景的内容推荐池的对应关系,从而核对其中是否包含该子内容,如果不包含,则认为倒排到的该子内容并不在首页对应的场景中,在推荐内容时需要将其剔除。
应用本申请实施例的方法,可以将获取到的待推荐对象和推荐池的场景的对应关系存入第二数据库中,以此来降低服务层的读取耗时和空间占用,便于后续对倒排内容进行内容过滤。
在一种可能的实施方式中,步骤S103之后,上述方法还可以包括:
将待推荐对象和内容推荐池的对应关系存入第三数据库中。
在实际应用中,第一数据库大多数是以Hbase表的形式存储,而为了更好的对待推荐对象的内容进行筛选操作,可以选择支持SQL(Structured Query Language,结构化查询语言)语法的Hive表,并将该Hive表存入第三数据库中。
一个例子中,在获取到待推荐对象与各场景的内容推荐池的对应关系后,将其生成Hive表并存入第三数据库中,在后续离线召回时,可以直接通过遍历第三数据库中的Hive表对召回的内容进行筛选。
应用本申请实施例的方法,可以通过生成支持SQL语法的Hive表,从而利用使用SQL语法筛选出待推荐对象对应的场景的内容推荐池。
以下一个示例,用以具体说明本申请的待推荐对象管理方法,如图3所示:
步骤一,字段接入。
离线使用spark(集群计算)扫描Hbase表,实时读取实时读消息服务,获得protobuf结构化存储的数据,将其扁平化,将嵌套的字段拿出来,并视推荐业务的需要加入部分自定义逻辑,最终转换为基础类型或者基础类型集合字段。将基础类型或者基础类型集合字段写入一个key,value均为String类型的map中,这一步会丢失原始数据类型,后续会根据推荐业务的要求重新赋予其新的数据类型,支持二次开发。
步骤二,实体关联。
针对一些短视频内容,我们希望拿到它的用户推荐等级字段,并根据该字段的取值进行内容池圈定。而该字段写入在用户账号实体中,导致我们仅接入用户账号实体的字段将无法拿到用户推荐等级。因此我们则需要根据实体间的映射关系对存储在其他用户账号实体表或者再利用关联关系再请求一次实时读消息服务获得所关联的用户账号实体,将存储在其他结构体中的字段关联进本实体中。
在拿到所需关联的实体后,同样需要执行步骤一,将字段打平转换成map后将基础字段和关联字段分别存储的map合并成一个map。由于不同关联实体需要关联的相关实体数量也不同,因此对于每个关联的相关实体都要做一次map的合并操作。例如,合并后的字典中包括“00、01、02、53、1170、特征库、语义库”等多种字段。
步骤三,规则过滤。
为准确,通用,精细地描述什么样的内容可以入池,可以对规则进行了重新定义和拆分,将一条规则拆分为:字段,运算符,取值三部分。字段即该条规则基于哪种字段对内容进行筛选,运算符即为基本数据类型和集合数据类型所最常用到的一些判断符,例如基本数据类型里的大于,小于,等于或是集合数据类型的包含,不包含等。取值即为该内容的字段需要满足的值。以频道id为例,若我们希望筛选出视频网站内所有电视剧频道的专辑内容,那么将规则中的字段设为“频道id”,运算符为“等于”,取值为电视剧频道对应的频道id。一个完整的内容入池规则由较多的规则组成,规则与规则之间可以支持“且”的连接方式和“或”的连接方式,分别代表两条规则必须同时满足才能入池和满足其一即可入池。对于取值,可以支持用户手动输入也可以下拉筛选。用户在平台上完成所有的规则配置后,前端将规则解析为约定好的json数据格式,存放在MySQL数据库中。离线和实时任务分别获取所有的规则,在逐一判断该条内容的字段是否均满足池子规则中所配置的之后,通过新增标记字段(场景id/池子id)将该内容标记为属于具体的某个场景的内容池中。例如,经过规则过滤后,确定第三字段为图3中的“00、01、02”。
步骤四,快照生成。
该步骤仅需离线任务实现,由于内容管理平台离线任务所用到的表均为HBase,为了便于使用sql语法筛选出其所负责场景的内容,离线任务最终需要生成一张Hive表,供筛选出内容后进行后续的离线召回开发。
步骤五,写入CouchBase数据库。
为了便于服务层使用,降低服务层的读取耗时和空间占用,离线和实时任务均需要将全部场景可推荐内容写入couchbase数据库中,为了减少存储空间的使用,value使用protobuf格式存储内容的所在内容池信息,后续各推荐场景引擎在获取离线召回产出的倒排内容后,需要对这些内容进行一次内容池过滤,确保最终推出去的内容都在相应场景的内容池中。例如,图3中的离线灌库步骤,将待推荐对象和内容池的场景对应关系写入couchbase数据库中。
在本申请实施的第二方面,还提供了一种待推荐对象管理装置,包括如图4所示:
待推荐对象获取模块401,用于提取预设数据格式的待推荐对象对应的数据;
关联实体数据获取模块402,用于依据预先确定的对象与实体间的关联关系,确定与待推荐对象关联的关联实体,并获取关联实体对应的关联实体数据;
内容推荐池确定模块403,用于根据待推荐对象对应的数据和实体数据,确定待推荐对象所属的内容推荐池。
在一种可能的实施方式中,上述装置还包括:
第一结构转化模块,用于将待推荐对象对应的数据由多层结构转化为单层结构;
第一字段提取模块,用于通过预设的数据和字段的对应关系,从转化后的待推荐对象中提取对应的字段,得到第一字段;
第一字典生成模块,用于将第一字段写入第一字典中。
在一种可能的实施方式中,上述装置还包括:
第二结构转化模块,用于将关联实体数据由多层结构转化为单层结构;
第二字段提取模块,用于通过预设的数据和字段的对应关系,从转化后的关联实体数据中提取对应的字段,得到第二字段;
第二字典生成模块,用于将第二字段写入第二字典中。
在一种可能的实施方式中,内容推荐池对应一个推荐场景;内容推荐池确定模块,包括:
规则获取子模块,具体用于获取预设过滤规则;
字段过滤子模块,具体用于依据预设过滤规则,识别待推荐对象对应的数据和关联实体数据中满足预设过滤规则的一个或多个目标字段;
内容推荐池确定子模块,具体用于依据内容推荐池的推荐场景,确定目标字段对应的待推荐对象所属的内容推荐池。
在一种可能的实施方式中,预设过滤规则包括预设名称、预设关系和预设取值,字段过滤子模块,包括:
字典合并单元,具体用于将第一字典和第二字典合并,生成第三字典,其中,第三字典中的字段包括字段名称和字段取值;
名称识别单元,具体用于读取第三字典中各字段的字段名称,并依据预设名称,识别目标字段中字段名称与预设名称相同的一个或多个第三字段;
目标字段确定单元,具体用于依据预设取值,将一个或多个第三字段中字段取值与预设取值的大小满足预设关系的第三字段,确定为目标字段。
在一种可能的实施方式中,装置还包括:
对应关系存储模块,用于将待推荐对象和内容推荐池的场景的对应关系存入第二数据库中;
倒排内容获取模块,用于针对任一场景,获取预先召回的倒排内容,其中,倒排内容为针对该场景预先检索到的内容,倒排内容包括多条子内容;
子内容剔除模块,用于针对各子内容,判断该子内容中是否在第二数据库中,若否,则剔除该子内容。
在一种可能的实施方式中,装置还包括:
图表生成模块,用于将待推荐对象和内容推荐池的对应关系存入第三数据库中。
应用本申请实施例的装置,可以通过获取待推荐对象的关联实体,将关联实体的数据与待推荐对象的数据合并,对合并后的数据进行筛选来确定待推荐对象的推荐场景,从而通过增加对待推荐对象的关联实体数据的分析,解决确定推荐场景时不够准确的问题。
本申请实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:
提取预设数据格式的待推荐对象对应的数据;
依据预先确定的对象与实体间的关联关系,确定与待推荐对象关联的关联实体,获取关联实体对应的关联实体数据;
根据待推荐对象对应的数据和关联实体数据,确定待推荐对象所属的内容推荐池。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述实施例中任一的待推荐对象管理方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一的待推荐对象管理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
- 一种AED电量管理方法、装置、电子设备及存储介质
- 一种问卷调查对象确定方法、装置、电子设备和存储介质
- 一种房源推荐方法、装置、存储介质及电子设备
- 一种信息推荐方法、装置、电子设备及存储介质
- 一种信息推荐方法、装置、电子设备及存储介质
- 对象推荐方法、对象推荐装置、电子设备及存储介质
- 对象推荐方法、对象推荐装置、电子设备及可读存储介质