CN113609377B - 信息推荐方法、装置、电子设备及存储介质 - Google Patents
信息推荐方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113609377B CN113609377B CN202110751205.3A CN202110751205A CN113609377B CN 113609377 B CN113609377 B CN 113609377B CN 202110751205 A CN202110751205 A CN 202110751205A CN 113609377 B CN113609377 B CN 113609377B
- Authority
- CN
- China
- Prior art keywords
- graph
- node
- sub
- recommendation information
- layer
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9536—Search customisation based on social or collaborative filtering
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种信息推荐方法、装置、电子设备及存储介质,该方法包括:响应于目标对象的信息推荐请求,获取目标对象的兴趣信息和包括上层图和底层图的目标近邻图,底层图包括多个子图,每个子图包括上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为预设推荐信息集中除与上层图中的节点对应的推荐信息以外的推荐信息;基于每个子图的导航节点及相应的邻居节点,与相应的兴趣节点之间的距离,确定每个子图的起始搜索节点;根据每个子图的起始搜索节点及相应的邻居节点,与相应的兴趣节点之间的距离,确定目标节点;将目标节点对应的推荐信息推荐至目标对象。本公开能够提高向目标对象推荐推荐信息的精度和速度。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种信息推荐方法、装置、电子设备及存储介质。
背景技术
推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”,它能从海量候选集中,召回用户感兴趣的内容,并将召回的内容推荐给用户。根据推荐对象的不同,可以将推荐场景可分为两大类:推荐人和推荐物。推荐人的场景主要指社交推荐,即根据用户的社交圈,向用户推荐搜索到的,与其具有相似属性的其他用户。推荐物的场景则又可以分为商品推荐、音乐推荐、视频推荐和新闻推荐等,即根据用户的购买或浏览记录等行为数据,搜索用户更感兴趣的商品、资讯等,并推荐给用户。
相关技术中,通常采用近似近邻算法来完成召回。然而相关技术中的算法所使用到的底层图规模较大,对于同一搜索目标无法进行并行的最近邻搜索,搜索速度较慢,从而降低向用户推荐感兴趣内容的推荐速度,此外,规模较大的底层图在搜索时,容易陷入局部最优解,影响搜索精度,从而降低向用户推荐感兴趣内容的推荐精度。
发明内容
本公开提供一种信息推荐方法、装置、电子设备及存储介质,以至少解决相关技术中向用户推荐感兴趣内容的推荐速度较慢以及推荐精度较低的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种信息推荐方法,包括:
响应于目标对象的信息推荐请求,获取目标对象的兴趣信息和目标近邻图;所述兴趣信息表征所述目标对象感兴趣的信息,所述目标近邻图包括上层图和底层图,所述底层图包括多个子图,每个子图包括所述上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为其他推荐信息对应的节点,所述其他推荐信息为预设推荐信息集中除与所述上层图中的节点对应的推荐信息以外的推荐信息;
基于每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点;每个子图在所述上层图中的导航节点满足预设条件,每个子图对应的兴趣节点为所述兴趣信息在每个子图上所对应的节点;
根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点;
将所述目标节点对应的推荐信息推荐至所述目标对象。
在一示例性的实施方式中,所述方法还包括构建所述目标近邻图的步骤,所述构建所述目标近邻图的步骤包括:
基于所述预设推荐信息集,生成多个推荐信息组;
依次对每一推荐信息组执行以下操作:
基于预设图层划分信息确定每一推荐信息组中的各个推荐信息的图层信息;
基于每一推荐信息组中的各个推荐信息的图层信息,并行在预设近邻图中构建初始上层图,得到更新后的预设近邻图;所述预设近邻图包括与所述底层图对应的初始底层图,所述初始上层图与所述上层图对应;
基于每一推荐信息组中的各个推荐信息的图层信息,在所述更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点;
根据已添加节点,并行确定每一推荐信息组中的各个推荐信息对应的节点的邻居节点;所述已添加节点为已添加至所述预设近邻图中的其他推荐信息组中的推荐信息对应的节点,所述其他推荐信息组为所述多个推荐信息组中除所述每一推荐信息组之外的推荐信息组;
将所述初始底层图中的节点与所述初始底层图中的节点对应的邻居节点进行连接,得到所述底层图,将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行连接,得到所述上层图。
在一示例性的实施方式中,所述上层图为上层图,所述将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行连接,得到所述上层图,包括:
将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行有向连接,得到所述上层图。
在一示例性的实施方式中,所述初始底层图包括多个初始子图,所述基于每一推荐信息组中的各个推荐信息的图层信息,在所述更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点,包括:
当每一推荐信息组中的任一推荐信息的图层信息对应的图层为所述初始底层图时,在任一初始子图中生成所述任一推荐信息对应的节点。
在一示例性的实施方式中,所述根据已添加节点,并行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点,包括:
根据每一推荐信息组中的各个推荐信息在不同图层中的节点,与所述已添加节点之间的距离,从所述已添加节点中并行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点;
对每一推荐信息组中的各个推荐信息在不同图层中的节点进行邻居节点扩展搜索,得到每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的待筛选邻居节点;
确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第一距离;
确定每一推荐信息组中的各个推荐信息,在不同图层中的节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第二距离;
基于第一距离和第二距离,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点。
在一示例性的实施方式中,所述上层图的层数为一层,所述基于每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点,包括:
将所述上层图中的任一节点作为每个子图在所述上层图中的导航节点;
确定每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的第三距离;
确定每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第四距离;
基于所述第三距离和所述第四距离,确定每个子图的起始搜索节点。
在一示例性的实施方式中,所述上层图的层数为多层,所述基于每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点,包括:
根据顶部上层图中的任一节点与每个子图对应的兴趣节点之间的第五距离,以及所述顶部上层图中的任一节点对应的邻居节点与每个子图对应的兴趣节点之间的第六距离,确定每个子图在所述顶部上层图中的导航节点;
按照图层序列中的顺序,依次遍历多层所述上层图中,除所述顶部上层图之外的其他上层图,并在遍历每一其他上层图时,执行以下操作:
每一其他上层图的上一上层图中的导航节点,作为每一其他上层图的当前导航节点;所述上一上层图为所述图层序列中位于每一其他上层图之前,且与每一其他上层图相邻的上层图;
根据所述每一其他上层图的当前导航节点与每个子图对应的兴趣节点之间的第七距离,以及每一其他上层图的当前导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第八距离,确定每个子图在每一其他上层图中的导航节点;
将每个子图在底部上层图中的导航节点,作为每个子图的起始搜索节点;
其中,所述底部上层图为所述图层序列中排序最后的图层,所述顶部上层图为所述图层序列中排序最前的图层,所述图层序列基于多层所述上层图按照图层信息进行降序排序得到。
在一示例性的实施方式中,所述根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点,包括:
确定每个子图的起始搜索节点与每个子图对应的兴趣节点之间的第九距离;
确定每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的第十距离;
根据所述第九距离和所述第十距离,从每个子图的起始搜索节点以及每个子图的起始搜索节点对应的邻居节点中,确定每个子图的候选节点;
将每个子图的候选节点,按照与每个子图对应的兴趣节点之间的距离,进行升序排序,得到候选节点序列;
将所述候选节点序列中前预设数量个候选节点,作为所述目标节点。
根据本公开实施例的第二方面,提供一种信息推荐装置,包括:
响应模块,被配置为执行响应于目标对象的信息推荐请求,获取目标对象的兴趣信息和目标近邻图;所述兴趣信息表征所述目标对象感兴趣的信息,所述目标近邻图包括上层图和底层图,所述底层图包括多个子图,每个子图包括所述上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为其他推荐信息对应的节点,所述其他推荐信息为预设推荐信息集中除与所述上层图中的节点对应的推荐信息以外的推荐信息;
起始搜索节点确定模块,被配置为执行基于每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点;每个子图在所述上层图中的导航节点满足预设条件,每个子图对应的兴趣节点为所述兴趣信息在每个子图上所对应的节点;
目标节点确定模块,被配置为执行根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点;
推荐模块,被配置为执行将所述目标节点对应的推荐信息推荐至所述目标对象。
在一示例性的实施方式中,所述装置还包括构建所述目标近邻图的构建模块,所述构建模块包括:
生成单元,被配置为执行基于所述预设推荐信息集,生成多个推荐信息组;
执行单元,被配置为执行依次对每一推荐信息组执行以下操作;
图层信息确定单元,被配置为执行基于预设图层划分信息确定每一推荐信息组中的各个推荐信息的图层信息;
初始上层图构建单元,被配置为执行基于每一推荐信息组中的各个推荐信息的图层信息,并行在预设近邻图中构建初始上层图,得到更新后的预设近邻图;所述预设近邻图包括与所述底层图对应的初始底层图,所述初始上层图与所述上层图对应;
节点生成单元,被配置为执行基于每一推荐信息组中的各个推荐信息的图层信息,在所述更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点;
邻居节点确定单元,被配置为执行根据已添加节点,并行确定每一推荐信息组中的各个推荐信息对应的节点的邻居节点;所述已添加节点为已添加至所述预设近邻图中的其他推荐信息组中的推荐信息对应的节点,所述其他推荐信息组为所述多个推荐信息组中除所述每一推荐信息组之外的推荐信息组;
节点连接单元,被配置为执行将所述初始底层图中的节点与所述初始底层图中的节点对应的邻居节点进行连接,得到所述底层图,将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行连接,得到所述上层图。
在一示例性的实施方式中,所述上层图为上层图,所述节点连接单元,被配置为执行将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行有向连接,得到所述上层图。
在一示例性的实施方式中,所述节点生成单元,被配置为执行当每一推荐信息组中的任一推荐信息的图层信息对应的图层为所述初始底层图时,在任一初始子图中生成所述任一推荐信息对应的节点。
在一示例性的实施方式中,所述邻居节点确定单元,包括:
候选邻居节点确定子单元,被配置为执行根据每一推荐信息组中的各个推荐信息在不同图层中的节点,与所述已添加节点之间的距离,从所述已添加节点中并行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点;
待筛选邻居节点确定子单元,被配置为执行对每一推荐信息组中的各个推荐信息在不同图层中的节点进行邻居节点扩展搜索,得到每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的待筛选邻居节点;
第一距离确定子单元,被配置为执行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第一距离;
第二距离确定子单元,被配置为执行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第二距离;
邻居节点确定子单元,被配置为执行基于第一距离和第二距离,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点。
在一示例性的实施方式中,所述上层图的层数为一层,所述起始搜索节点确定模块,包括:
第一导航节点确定单元,被配置为执行将所述上层图中的任一节点作为每个子图在所述上层图中的导航节点;
第三距离确定单元,被配置为执行确定每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的第三距离;
第四距离确定单元,被配置为执行确定每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第四距离;
第一起始搜索节点确定单元,被配置为执行基于所述第三距离和所述第四距离,确定每个子图的起始搜索节点。
在一示例性的实施方式中,所述上层图的层数为多层,所述起始搜索节点确定模块,包括:
第二导航节点确定单元,被配置为执行根据顶部上层图中的任一节点与每个子图对应的兴趣节点之间的第五距离,以及所述顶部上层图中的任一节点对应的邻居节点与每个子图对应的兴趣节点之间的第六距离,确定每个子图在所述顶部上层图中的导航节点;
遍历单元,被配置为执行按照图层序列中的顺序,依次遍历多层所述上层图中,除所述顶部上层图之外的其他上层图,并在遍历每一其他上层图时,执行以下操作:
当前导航节点确定单元,被配置为执行每一其他上层图的上一上层图中的导航节点,作为每一其他上层图的当前导航节点;所述上一上层图为所述图层序列中位于每一其他上层图之前,且与每一其他上层图相邻的上层图;
第三导航节点确定单元,被配置为执行根据所述每一其他上层图的当前导航节点与每个子图对应的兴趣节点之间的第七距离,以及每一其他上层图的当前导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第八距离,确定每个子图在每一其他上层图中的导航节点;
第二起始搜索节点确定单元,被配置为执行将每个子图在底部上层图中的导航节点,作为每个子图的起始搜索节点;其中,所述底部上层图为所述图层序列中排序最后的图层,所述顶部上层图为所述图层序列中排序最前的图层,所述图层序列基于多层所述上层图按照图层信息进行降序排序得到。
在一示例性的实施方式中,所述目标节点确定模块,包括:
第九距离确定单元,被配置为执行确定每个子图的起始搜索节点与每个子图对应的兴趣节点之间的第九距离;
第十距离确定单元,被配置为执行确定每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的第十距离;
候选节点确定单元,被配置为执行根据所述第九距离和所述第十距离,从每个子图的起始搜索节点以及每个子图的起始搜索节点对应的邻居节点中,确定每个子图的候选节点;
候选节点序列获取单元,被配置为执行将每个子图的候选节点,按照与每个子图对应的兴趣节点之间的距离,进行升序排序,得到候选节点序列;
目标节点确定单元,被配置为执行将所述候选节点序列中前预设数量个候选节点,作为所述目标节点。
根据本公开实施例的第三方面,提供一种电子设备,包括;
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述任一实施方式所述的信息推荐方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备执行如上述任一实施方式所述的信息推荐方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施方式所述的信息推荐方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开实施例中的目标近邻图包括上层图和底层图,该底层图包括多个子图,每个子图包括上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为其他推荐信息对应的节点,该其他推荐信息为预设推荐信息集中除与上层图中的节点对应的推荐信息以外的推荐信息。在推荐场景中,可以响应于目标对象的信息推荐请求,获取目标对象的兴趣信息和该目标近邻图,在搜素过程中可以针对底层图的各个子图进行并行搜索,确定每个子图的起始搜索节点,接着根据每个子图的起始搜索节点以及相应的邻居节点,分别与每个子图对应的兴趣节点之间的距离,确定目标节点,最后将该目标节点应的推荐信息推荐至该目标对象。由于对于同一兴趣信息,可以针对底层图的各个子图并行进行最近邻搜索,搜索速度较高,从而提高了向目标对象推荐推荐信息的推荐速度;此外,多个子图并行进行搜索,可以有效防止搜索时陷入局部最优解,搜索精度较高,从而提高向目标对象推荐推荐信息的推荐精度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种信息推荐方法的应用环境图。
图2是根据一示例性实施例示出的一种信息推荐方法的流程图。
图3是根据一示例性实施例示出的一种目标近邻图的结构示意图。
图4是根据一示例性实施例示出的一种构建目标近邻图的流程图。
图5是根据一示例性实施例示出的一种预设近邻图的示意图。
图6是根据一示例性实施例示出的一种确定每一推荐信息组中的各个推荐信息,在不同图层中的节点的邻居节点的流程图。
图7是根据一示例性实施例示出的一种基于三角形法则的邻居选择策略进行邻居选择的示意图。
图8是根据一示例性实施例示出的一种确定每个子图的起始搜索节点的流程图。
图9是根据一示例性实施例示出的另一种确定每个子图的起始搜索节点的流程图。
图10是根据一示例性实施例示出的一种对每个子图中的起始搜索节点进行选择的示意图。
图11是根据一示例性实施例示出的一种确定目标节点的流程图。
图12是根据一示例性实施例示出的一种召回率R@100和构建速度的关系示意图。
图13是根据一示例性实施例示出的一种在同样参数设置下,DMD-HNSW和HNSW算法的搜索速度(Query time)和结果精度(R@1)的对比示意图。
图14是根据一示例性实施例示出的一种信息推荐装置框图。
图15是根据一示例性实施例示出的一种用于信息推荐的电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
请参阅图1,图1是根据一示例性实施例示出的一种信息推荐方法的应用环境图,该应用环境可以包括客户端01和服务器02。客户端01可以通过有线或无线的方式与服务器02进行通信,本公开对此不做限定。
其中,客户端01可以采集目标对象的信息推荐请求,并将该目标对象的信息推荐请求发送至服务器02;以及用于接收服务器02推荐的推荐信息。可选地,该客户端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等终端设备。
其中,服务器02可以用于响应于获取客户端01采集的信息推荐请求,获取目标对象的兴趣信息和包括上层图和底层图的目标近邻图,上述底层图包括多个子图,每个子图包括上述上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为其他推荐信息对应的节点,上述其他推荐信息为预设推荐信息集中除与上述上层图中的节点对应的推荐信息以外的推荐信息;以及用于基于每个子图在上述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在上述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点;每个子图在上述上层图中的导航节点满足预设条件,每个子图对应的兴趣节点为上述兴趣信息在每个子图上所对应的节点;以及用于根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点;以及用于将上述目标节点对应的推荐信息推荐至上述目标对象对应的客户端。可选地,该服务器02可以是包括独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在另一个示例性的实施例中,本公开实施例提供的信息推荐方法还可以应用于仅包含客户端的应用环境中。其中,客户端可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等终端设备。客户端直接响应于目标对象的信息推荐请求,获取上述兴趣信息和目标近邻图,接着以目标近邻图为基础进行搜索,确定兴趣节点对应的兴趣节点,最后将兴趣信息和上述目标节点对应的推荐信息推荐至上述目标对象。
图2是根据一示例性实施例示出的一种信息推荐方法的流程图。如图2所示,该信息推荐方法用于图1中的包含客户端和服务器的系统中,可以包括以下步骤。
在步骤S11中,响应于目标对象的信息推荐请求,获取目标对象的兴趣信息和目标近邻图;上述兴趣信息表征上述目标对象感兴趣的信息,上述目标近邻图包括上层图和底层图,上述底层图包括多个子图,每个子图包括上述上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为其他推荐信息对应的节点,上述其他推荐信息为预设推荐信息集中除与上述上层图中的节点对应的推荐信息以外的推荐信息。
具体地,该信息推荐请求可以由目标对象(比如,用户)在需要进行信息推荐时所发送的请求。
可选地,该兴趣信息可以为用户主动输入的感兴趣的信息,也可以为服务器根据用户的属性信息确定的感兴趣的信息。
可选地,在推荐物的场景中,上述兴趣信息可以表征目标对象感兴趣的物。假设目标对象喜欢吃“汉堡”,则“汉堡”可以为该兴趣信息,通过搜索可以召回与该“汉堡”之间的距离小于预设距离阈值的推荐信息(比如,“薯条”),并将该推荐信息推荐给目标对象。
可选地,在推荐人的场景中,上述兴趣信息可以表征目标对象的属性。假设目标对象的属性为“金融人士、硕士”,则“金融人士、硕士”可以为该兴趣信息,通过该兴趣信息可以召回与目对象具有相似属性的其他对象。
图3是根据一示例性实施例示出的一种目标近邻图的结构示意图。如图3所示,上述目标近邻图可以包括上层图和底层图,上述底层图包括多个子图,多个子图不仅可以对于应同一感兴趣信息进行并行搜索,提高搜索速度和推荐速度,还可以有效防止搜索阶段陷入局部最优解,提高搜索精度和推荐精度。继续如图3所示,每个子图中的节点存在反向连接。此外,每个子图包括上述上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为其他推荐信息对应的节点,上述其他推荐信息为预设推荐信息集中除与上述上层图中的节点对应的推荐信息以外的推荐信息。
可选地,上述上层图可以为上层图结构,即上述上层图中的节点之间的所形成的边具有方向性,即上层图中的节点仅与距离最近的邻居节点进行连接,而不进行邻居节点的反向更新连接的操作,从而可以减少目标近邻图对系统内存的占用量。
在一个可选的实施例中,上述目标近邻图与预设近邻图相对应,上述预设近邻图包括上述底层图对应的初始底层图,上述初始底层图包括多个初始子图,上述方法还包括构建上述目标近邻图的步骤,图4是根据一示例性实施例示出的一种构建目标近邻图的流程图。如图4所示,上述构建上述目标近邻图的步骤可以包括:
在步骤S21中,基于预设推荐信息集,生成多个推荐信息组。
具体地,该预设推荐信息集中的推荐信息,可以为用于向目标对象进行推荐的推荐信息。
示例性地,在推荐物的场景,该预设推荐信息集可以为由多个物的标识信息所组成的信息集。在推荐人的场景,该预设推荐信息集可以为由多个人的标识信息所组成的信息集。
在一个可选的实施例中,在上述步骤S21中,可以将上述预设推荐信息集中的推荐信息随机划分为多个推荐信息组。
在另一个可选的实施例中,在上述步骤S21中,可以按照聚类(比如,K-means聚类)算法,将上述预设推荐信息集中的推荐信息,划分为多个推荐信息组。
示例性地,该多个推荐信息组可以为多个batch,其中,batch指的是批,批处理。
需要说明的是,同一推荐信息组中的推荐信息之间不存在任何连接关系,且是并行添加至预设近邻图中的,当同一推荐信息组中的推荐信息的数量过大时,可能会影响后续的搜索精度,当同一推荐信息组中的推荐信息的数量过小时,可能又无法体现出并行添加的速度,因此,可以通过平衡上述两点,从而确定每一推荐信息组中的推荐信息的数量。而将预设推荐信息集中的推荐信息划分为多个推荐信息组,使得同一推荐信息组中的推荐信息所对应的节点,在搜索的时候容易找到相同的邻居,从而加快邻居反向连接时的执行速度,从而提高目标近邻图的构建速度和搜索速度,进而提高向目标对象推荐推荐信息的推荐速度。
在步骤S23中,依次对每一推荐信息组执行以下操作。
本公开实施例中,不同推荐信息组中的推荐信息是串行添加至预设近邻图中的,然而同一推荐信息组中的各个推荐信息是并行添加至预设近邻图中的。因此,可以依次遍历每一推荐信息组,并在遍历每一推荐信息组时,执行下述步骤S27至步骤S213。
在步骤S25中,基于预设图层划分信息确定每一推荐信息组中的各个推荐信息的图层信息。
具体地,可以通过以下公式确定每个推荐信息组中的各个推荐信息,在预设近邻图中的图层信息:
L=-ln(unif(0,1))*M;
其中,unif(0,1)为0到1之间的随机数,M为上述预设邻居节点的数量,用于表征推荐信息在近邻图中所能够连接的邻居节点的最大值,L为图层信息。
具体地,由于通过上述公式计算出来的L的值可能为小数,则可以将计算出来的L值向下取整,比如,上述公式计算出来的L为5.1,则可以将5.1向下取整,即最终得到的L为5。
在一个具体的实施例中,图5是根据一示例性实施例示出的一种预设近邻图的示意图。如图5所示,上述预设近邻图包括上述底层图对应的初始底层图(即0层图),上述初始底层图包括水平维度的多个初始子图。每个初始子图均是空白的,即每个初始子图中均不包含任何节点。
在步骤S27中,基于每一推荐信息组中的各个推荐信息的图层信息,并行在预设近邻图中构建初始上层图,得到更新后的预设近邻图;上述预设近邻图包括与上述底层图对应的初始底层图,上述初始上层图与上述上层图对应。
由于预设近邻图包括上述水平维度的多个初始子图,在确定得到每个推荐信息组中的各个推荐信息,在上述预设近邻图中的图层信息之后,需要使用该图层信息对该预设近邻图的层数进行更新,即在预设近邻图中构建初始上层图,得到更新后的预设近邻图。
假设,某一推荐信息的图层信息为第3层,则可以将预设近邻图的层数从0层更新至第3层,即更新后的预设近邻图包含的层数为第0层、第1层、第2层和第3层(即构建得到的初始上层图包括第1层、第2层和第3层)。对于属于同一推荐信息组的推荐信息而言,假设某一推荐信息组中包括3个推荐信息,这3个推荐信息对应的图层信息分别为第3层、第4层、第5层,则并行在预设近邻图中构建初始上层图,以对该预设近邻图进行更新,最后取层数最高的图层信息(第5层)作为该预设近邻图的图层,即将该预设近邻图的层数从0层更新至第5层(即构建得到的初始上层图包括第1层、第2层、第3层、第4层和第5层)。对于不属于同一推荐信息组的推荐信息而言,如果后续其他推荐信息组中的推荐信息所对应的图层信息大于第5层(比如,第6层),则继续在预设近邻图中构建初始上成图,即将预设近邻图从的第5层更新至第6层(即预设近邻图包括第0层-第6层),如果后续其他推荐信息组中的推荐信息所对应的图层信息小于或等于第5层,则保持该预设近邻图的最高层数为第5层。
需要说明的是,构建得到的初始上层图是与上述上层图相对应的。
在步骤S29中,基于每一推荐信息组中的各个推荐信息的图层信息,在上述更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点。
本公开实施例中,在通过上述公式计算出每一推荐信息组中的各个推荐信息对应的图层信息后,对于属于同一推荐信息组中的各个推荐信息,可以将每一推荐信息组中的各个推荐信息,并行添加至初始底层图至各个推荐信息对应的图层信息中,从而在更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点。比如,某一推荐信息对应的图层信息为第5层,则将该推荐信息添加至0层(即初始底层图)-第5层(即图层信息)中的各个图层中(即在第0层、1层、2层、3层、4层、5层中均添加该推荐信息)。
对于不同推荐信息组中的推荐信息,可以串行添加至该预设近邻图中,从而在更新后的预设近邻图中,串行生成不同推荐信息组中的推荐信息对应的节点。
在一具体的实施例中,在上述步骤S29中,上述基于每一推荐信息组中的各个推荐信息的图层信息,在上述更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点,可以包括:当每一推荐信息组中的任一推荐信息的图层信息对应的图层为上述初始底层图时,在任一初始子图中生成上述任一推荐信息对应的节点。
具体地,如果某个推荐信息所对应的图层信息为上述初始底层图,而上述初始底层图又包括多个初始子图,则可以将该某个推荐信息随机添加至任一初始子图中,从而在该任一初始子图中生成该任一推荐信息对应的节点。
本公开实施例将初始底层划分为多个初始子图,并将对应的图层信息为上述初始底层图的推荐信息随机分配至任一子图中,降低了节点可连接的最大邻居数,提高了目标近邻图的构建速度;此外,分配到不同子图中的推荐信息对应的节点在后续进行搜索的时候,可以通过多线程并行进行执行,从而提高搜索速度,进而提高向目标对象推荐推荐信息的推荐速度。
在步骤S211中,根据已添加节点,并行确定每一推荐信息组中的各个推荐信息对应的节点的邻居节点;上述已添加节点为已添加至上述预设近邻图中的其他推荐信息组中的推荐信息对应的节点,上述其他推荐信息组为上述多个推荐信息组中除上述每一推荐信息组之外的推荐信息组。
本公开实施例中,同一推荐信息组中的节点之间不包含邻居连接关系,可执行多线程并行构建,并且无需上锁机制。而下一个推荐信息组中的节点会依据前面多个推荐信息组中已添加到预设近邻图中的节点进行构建,即选择距离近的邻居进行连接。另一方面,新添加的推荐信息可依据之前已构建的近邻图进行添加,即执行增量式构建,而无需从头开始构建,从而能缩短构建时间。
在一个可选的实施例中,图6是根据一示例性实施例示出的一种确定每一推荐信息组中的各个推荐信息,在不同图层中的节点的邻居节点的流程图。如图6所示,在上述步骤S211中,上述根据已添加节点,并行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点,可以包括:
在步骤S21101中,根据每一推荐信息组中的各个推荐信息在不同图层中的节点,与上述已添加节点之间的距离,从上述已添加节点中并行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点。
在步骤S21103中,对每一推荐信息组中的各个推荐信息在不同图层中的节点进行邻居节点扩展搜索,得到每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的待筛选邻居节点。
在步骤S21105中,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第一距离。
在步骤S21107中,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第二距离。
在步骤S21109中,基于第一距离和第二距离,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点。
具体地,在上述步骤S21109中,上述基于第一距离和第二距离,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点,可以包括:
当第一距离与第二距离的比值大于或等于第三距离阈值时,将各个待推荐信息在不同图层中的节点的候选邻居节点和相应的待比较邻居节点,作为各个待推荐信息在不同图层中的节点的邻居节点。
当上述第一距离与上述第二距离的比值小于上述第三距离阈值时,将各个待推荐信息在不同图层中的节点的候选邻居节点,作为各个待推荐信息在不同图层中的节点的邻居节点。
具体地,可以通过基于可调比例的三角形法则的邻居选择策略,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点。
示例性地,在步骤S21101中,可以选择与每一推荐信息组中的各个推荐信息在不同图层中的节点的距离小于预设阈值的,其他推荐信息组中的推荐信息对应的节点,作为每一推荐信息组中的各个推荐信息对应的节点的候选邻居节点。具体地,可以选择距离最近的其他推荐信息组中的推荐信息在不同图层中的节点,作为每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点。
示例性地,可以预先为每一推荐信息组中的各个推荐信息对应的节点,设置候选者队列,该候选者队列中存储各个推荐信息对应的节点的邻居节点,如果候选者队列中的节点所占用的内存大小,小于该候选者队列的预设存储信息(比如,预设长度),则重复上述步骤S21103-步骤S21109的步骤,直至该候选者队列中的节点所占用的内存大小,等于该候选者队列的预设存储信息时,结束上述的邻居节点搜索的步骤。
本公开实施例中,可以通过基于可调比例的三角形法则的邻居选择策略,进行邻居节点的选择,在各个推荐信息在不同图层中的节点的候选邻居节点与相应的待比较节点之间的距离,大于或等于各个推荐信息在不同图层中的节点与相应的待比较节点之间的距离时,才将该各个推荐信息在不同图层中的节点的候选邻居节点和相应的待筛选邻居节点,作为各个推荐信息在不同图层中的节点的邻居节点(若各个推荐信息在不同图层中的节点的候选邻居节点与相应的待比较节点之间的距离,小于各个推荐信息在不同图层中的节点与相应的待比较节点之间的距离时,则不将各个推荐信息在不同图层中的节点的待筛选邻居节点),能够提高各个推荐信息在不同图层中的节点的邻居节点确定的准确率,从而提高向目标对象推荐推荐信息的推荐精度;此外,边长的比例关系可以随着数据集而进行调整,使得邻居节点的选择更加灵活,从而节约搜索时间,提高搜索精度,从而进一步提高向目标对象推荐推荐信息的推荐精度。
图7是根据一示例性实施例示出的一种基于三角形法则的邻居选择策略进行邻居选择的示意图。以某一待推荐信为例,对上述基于三角形法则的邻居选择策略进行说明:
1)确定推荐信息对应的节点c的候选邻居节点d。
2)对该推荐信息对应的节点c,进行邻居节点扩展搜索,得到该推荐信息对应的节点c的待筛选邻居节点e。
3)计算候选邻居节点d与待筛选邻居节点e之间的第一距离,以及推荐信息对应的节点c与待筛选邻居节点e之间的第二距离,当第一距离与第二距离的比值大于或等于预设距离阈值(比如,自定义比例系数参数p)时,将该待筛选邻居节点e作为该待筛选邻居节点e的候选邻居节点,同时将待筛选邻居节点e和候选邻居节点d作为该推荐信息对应的节点c的邻居节点。
4)当第一距离与第二距离的比值小于预设距离阈值(比如,自定义比例系数参数p)时,不将该待筛选邻居节点e作为该待筛选邻居节点e的候选邻居节点,同时仅候选邻居节点d作为该推荐信息对应的节点c的邻居节点。
在步骤S213中,将上述初始底层图中的节点与上述初始底层图中的节点对应的邻居节点进行连接,得到上述底层图,将上述初始上层图的节点与上述初始上层图的节点对应的邻居节点进行连接,得到上述上层图。
本公开实施例中,在确定每一推荐信息组中的各个推荐信息对应的节点的邻居节点之后,可以选择距离其最近的邻居节点进行连接。
在一个可选的实施例中,上述上层图为上层图,则在上述步骤S213中,上述将上述初始上层图的节点与上述初始上层图的节点对应的邻居节点进行连接,得到上述上层图,可以包括:
将上述初始上层图的节点与上述初始上层图的节点对应的邻居节点进行有向连接,得到上述上层图。
具体地,若某一推荐信息a所对应的图层信息大于上述初始底层图,则可以将推荐信息a对应的节点与第一邻居节点进行有向连接(即从推荐信息a指向该第一邻居节点)。该第一邻居节点与推荐信息a对应的节点之间的距离小于第一距离阈值。可选地,该第一邻居节点可以为距离该推荐信息a的距离最近的邻居节点。可见,本公开实施例在上层图构建的过程中,执行推荐信息对应的节点与其邻居节点之间的正向连接操作,而不执行邻居节点的反向更新连接的操作,从而在搜索各层的导航节点时能够更快速的执行,进而提高向目标对象推荐推荐信息的推荐速度。此外,在存储层面,可以采用邻接表的存储结构来存储该上层图,因此与存在反向连接的图结构相比,上层图能够缩减高层近邻图一半的内存,从而在保障推荐搜索性能的前提下,利用图基本属性的优化,有效地减少近邻图的内存消耗,进而降低向目标对象推荐推荐信息的过程对系统资源的消耗。
具体地,若某一推荐信息b所对应的图层信息等于上述初始底层图,则可以将推荐信息b对应的节点与第二邻居节点进行无向连接,即不仅将推荐信息b与第二邻居节点进行连接,还执行邻居节点反向更新连接的操作。该第二邻居节点与推荐信息b对应的节点之间的距离小于第二距离阈值。可选地,该第二邻居节点可以为距离该推荐信息b的距离最近的邻居节点。
以下,以推荐场景为推荐物的场景为例,对上述目标近邻图的构建过程进行举例说明:
预先收集不同种类的物,将收集到的不同种类的物的标识信息汇总,形成该预设推荐信息集。
假设初始底层图包括水平维度的3个子图,预设推荐信息集被划分为推荐信息组1和推荐信息组2,推荐信息组1包含推荐信息1、推荐信息2和推荐信息3,推荐信息组2中包含推荐信息4、推荐信息5和推荐信息6,则构建目标近邻图的过程可以如下:
一、首先将推荐信息组1中的推荐信息1、推荐信息2和推荐信息3添加至预设近邻图中:
1)根据上述图层信息计算公式,并行确定推荐信息1、推荐信息2和推荐信息3,在上述预设近邻图中的图层信息。假设推荐信息1对应的图层信息为第0层、推荐信息2对应的图层信息为第2层、推荐信息3对应的图层信息为第3层。
2)由于推荐信息组1中的推荐信息所对应的图层信息的最大值为第3层,则将该预设近邻图的图层由初始层图(即0层)更新为0-3层,即更新后的预设近邻图包括第0层、第1层、第2层和第3层。
3)将推荐信息1随机添加至多个初始子图的任一子图中,与此同时,将推荐信息2添加至第0层至第2层中(即第0层、1层和2层中均添加该推荐信息2),与此同时,将推荐信息3添加至第0层至第3层中(即第0层、1层、2层和3层中均添加该推荐信息3),从而在预设近邻图中生成推荐信息1、推荐信息2和推荐信息3中的物所对应的节点。由于本公开实施例不对属于同一推荐信息组中的推荐信息进邻居选择和连接,而此时预设近邻图中又未添加其他节点,因此,暂时不对推荐信息组1中的推荐信息进行邻居选择和连接。
二、在推荐信息组1中的各个推荐信息全部添加至预设近邻图中之后,再将推荐信息组2中的推荐信息4、推荐信息5和推荐信息6添加至预设近邻图中:
1)根据上述图层信息计算公式,并行确定推荐信息4、推荐信息5和推荐信息6,在上述预设近邻图中的图层信息。假设推荐信息4对应的图层信息为第0层、推荐信息5对应的图层信息为第2层、推荐信息6对应的图层信息为第4层。
2)由于推荐信息组2中的推荐信息所对应的图层信息的最大值为第4层,则将该预设近邻图的图层由第0-3层更新为第0-4层,即更新后的预设近邻图包括第0层、第1层、第2层、第3层和第4层。
3)将推荐信息4随机添加至多个初始子图的任一子图中,从而在预设近邻图中生成推荐信息4中的物所对应的节点。在添加过程中,若该任一子图中已经存在其他推荐信息组中的推荐信息对应的节点,则可以按照上述基于可调比例的三角形法则的邻居选择策略,从该任一子图中已经存在其他推荐信息组中的推荐信息对应的节点,确定推荐信息4在该任一子图中的节点的邻居节点,并将推荐信息4对应的节点,与距离最近的邻居节点进行连接,同时执行邻居节点反向连接的操作。
与此同时,将推荐信息5添加至预设近邻图的第0-2层(即第0层、第1层和第2层中均添加该推荐信息5),从而在预设近邻图中生成推荐信息5中的物所对应的节点。由于第0层、第1层和第2层中均添加有该推荐信息5,因此,可以根据第0层、第1层和第2层中,已经存在的其他推荐信息组中的推荐信息对应的节点,通过上述基于可调比例的三角形法则的邻居选择策略,确定推荐信息5在不同图层(即0层、第1层和第2层)中的节点的邻居节点,并将推荐信息5在不同图层中的节点,与距离最近的邻居节点进行有向连接,即仅进行推荐信息5与距离最近的邻居节点的连接,不执行邻居节点的反正更新连接的操作。
与此同时,将推荐信息6添加至预设近邻图的第0-4层(即第0层、第1层、第2层、第3层和第4层中均添加该推荐信息6),从而在预设近邻图中生成推荐信息6中的物所对应的节点。由于第0层、第1层、第2层、第3层和第4层中均添加该推荐信息6,因此,可以根据第0层、第1层、第2层、第3层和第4层中,已经存在的其他推荐信息组中的推荐信息对应的节点,通过上述基于可调比例的三角形法则的邻居选择策略,确定推荐信息6在不同图层(即第0层、第1层、第2层、第3层和第4层)中的节点的邻居节点,并将推荐信息6对应的节点,与不同图层中,距离最近的邻居节点进行有向连接,即仅进行推荐信息6与不同图层中距离最近的邻居节点的连接,不执行邻居节点的反正更新连接的操作,从而得到上述目标近邻图。
本公开实施例在构建目标近邻图的过程中,一方面,基于推荐信息组(比如,batch)的并行增量式构建,即将推荐信息划分为多个推荐信息组,推荐信息按照推荐信息组添加到近邻图中,同一推荐信息组中的节点之间不包含邻居连接关系,可执行多线程并行构建,并且无需上锁机制。而下一个推荐信息组中的节点会依据前面多个推荐信息组中已添加到图中的节点进行构建,即选择距离近的邻居进行连接。另一方面,新的推荐信息可依据之前已构建的预设近邻图进行添加,即执行增量式构建,而无需从头开始构建,从而能缩短构建时间。另一方面,在构建垂直维度的上层图时,采用上层图的结构,即节点之间的边具有指向性(从源节点指向目标节点),在上层图的构建阶段只执行待添加节点连接邻居的操作,不执行邻居反向更新连接的操作,从而在搜索各层的导航节点时能够更快速的执行,进而提高向目标对象推荐推荐信息的推荐速度。在存储层面,采用邻接表的存储结构存储上层图,相比于存在反正连接的图结构,上层图(即不存在反向连接)能够缩减高层近邻图一半的内存,从而在保障推荐搜索性能的前提下,利用图基本属性的优化,有效地减少近邻图的内存消耗。另一方面,将初始底层图(即第0层)的图拆分为水平维度的多个初始子图,在构建完成后,初始子图变为包含节点的子图,其中每个子图会拥有上层图中的全部节点,但降低了节点可连接的最大邻居数,而在构建过程中,上层图中不包含的节点会随机分配到任意一个初始子图中,并进行邻居的选择。由于每个子图在地址空间上都是相互独立的,因此本公开所提出的算法可以很容易地迁移到分布式系统中,即一台机器只针对一张子图进行并行构建,不仅能缩短构建时间,还能降低单机上的内存消耗。
在步骤S13中,基于每个子图在上述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在上述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点;每个子图在上述上层图中的导航节点满足预设条件,每个子图对应的兴趣节点为上述兴趣信息在每个子图上所对应的节点。
具体地,每个子图中的起始搜索节点的选择过程可以通过多线程并行执行。
具体地,兴趣信息与子图中的节点所对应的推荐信息在空间上均以向量形式进行表现,子图中的节点所对应的推荐信息与兴趣信息在空间上有一个对应关系。由于兴趣信息只有一个,因此,兴趣信息对应的兴趣节点在空间中的绝对位置是固定的,但每个子图中所包含的节点是不一样的,因此,针对每个子图,兴趣节点的位置是相对的,即兴趣节点会在每个子图中的特定位置上。
在一个可选的实施例中,图8是根据一示例性实施例示出的一种确定每个子图的起始搜索节点的流程图。当上述上层图的层数为一层,如图8所示,在上述步骤S13中,上述基于每个子图在上述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在上述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点,可以包括:
在步骤S13101中,将上述上层图中的任一节点作为每个子图在上述上层图中的导航节点。
在步骤S13103中,确定每个子图在上述上层图中的导航节点与每个子图对应的兴趣节点之间的第三距离。
在步骤S13105中,确定每个子图在上述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第四距离。
在步骤S13107中,基于上述第三距离和上述第四距离,确定每个子图的起始搜索节点。
具体地,当上述上层图的层数为一层时,可以从上层图中任意选择一个不同的节点作为每个子图在上述上层图中的导航节点。
具体地,上述步骤S13103-上述步骤S13107的具体过程可以如下:
将上层图中的任一节点,作为每个子图在上层图中的当前导航节点。
确定每个子图在上层图中的当前导航节点的各个邻居节点,与每个子图中的兴趣节点之间的第四距离。
当每个子图在上层图中的当前导航节点的任一邻居节点,与每个子图中的兴趣节点之间的第四距离,小于或等于每个子图在上层图中的当前导航节点与每个子图中的兴趣节点之间的第三距离时,将距离每个子图在上层图中的当前导航节点最近的邻居节点重新作为,每个子图在上层图中的当前导航节点。
重复上述确定每个子图在上层图中的当前导航节点的各个邻居节点,与每个子图中的兴趣节点之间的第四距离,至当每个子图在上层图中的当前导航节点的任一邻居节点,与每个子图中的兴趣节点之间的第四距离,小于或等于每个子图在上层图中的当前导航节点与每个子图中的兴趣节点之间的第三距离时,将距离每个子图在上层图中的当前导航节点最近的邻居节点重新作为,每个子图在上层图中的当前导航节点的步骤,直至每个子图在上层图中的当前导航节点的各个邻居节点,与每个子图中的兴趣节点之间的第四距离,大于每个子图在上层图中的当前导航节点与每个子图中的兴趣节点之间的第三距离。并将重复步骤结束时的每个子图在上层图中的当前导航节点,作为每个子图的起始搜索节点。
本公开实施例中,从顶部上层图中任选一个节点,每个子图在上层图中的导航节点,并依据与每个子图中的兴趣节点之间的距离远近以及该导航节点与每个子图中的兴趣节点之间的距离远近,遍历导航节点的各个邻居,从而选择出每个子图的起始搜索节点,一方面,对每个子图进行并行搜索,能够避免搜索过程中陷入局部最优解,提高每个子图的起始搜索点确定的精度,从而提高向目标对象推荐推荐信息的推荐精度,另一方面,由于每个子图在地址空间上都是相互独立的,每个子图的起始搜索点的确定过程可以通过多线程并行执行,从而缩短每个子图中的起始搜索点的确定时间,提高每个子图中的起始搜索点的确定速度,进而提高向目标对象推荐推挤信息的推荐速度;另一方面,可以将每个子图中的起始搜索点的确定过程迁移到分布式系统中,即一台机器只针对一张子图进行并行确定起始搜索点,不仅能缩短搜索时间,还能降低向目标对象推荐推荐信息的过程在单机上的内存消耗。
在一个可选的实施例中,图9是根据一示例性实施例示出的一种确定每个子图的起始搜索节点的流程图。上述上层图的层数为多层,如图9所示,在上述步骤S13中,上述基于每个子图在上述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在上述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点,可以包括:
在步骤S13301中,根据顶部上层图中的任一节点与每个子图对应的兴趣节点之间的第五距离,以及上述顶部上层图中的任一节点对应的邻居节点与每个子图对应的兴趣节点之间的第六距离,确定每个子图在上述顶部上层图中的导航节点。
在步骤S13303中,按照图层序列中的顺序,依次遍历多层上述上层图中,除上述顶部上层图之外的其他上层图,并在遍历每一其他上层图时,执行以下操作。
在步骤S13305中,每一其他上层图的上一上层图中的导航节点,作为每一其他上层图的当前导航节点;上述上一上层图为上述图层序列中位于每一其他上层图之前,且与每一其他上层图相邻的上层图。
在步骤S13307中,根据上述每一其他上层图的当前导航节点与每个子图对应的兴趣节点之间的第七距离,以及每一其他上层图的当前导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第八距离,确定每个子图在每一其他上层图中的导航节点。
在步骤S13309中,将每个子图在底部上层图中的导航节点,作为每个子图的起始搜索节点;其中,上述底部上层图为上述图层序列中排序最后的图层,上述顶部上层图为上述图层序列中排序最前的图层,上述图层序列基于多层上述上层图按照图层信息进行降序排序得到。
具体地,在上述步骤S13301中,在确定每个子图在上述顶部上层图中的导航节点的过程中,可以从顶部上层图中选择任意一个节点作为每个子图在上述顶部上层图中的当前起始节点,并依次遍历每个子图在上述顶部上层图中的当前起始节点的各个邻居节点,计算每个子图在上述顶部上层图中的当前起始节点的各个邻居节点,与每个子图中的兴趣节点之间的距离,并挑选距离每个子图中的兴趣节点之间的距离最近的邻居节点重新作为当前起始点,再遍历其邻居,迭代停止的条件是当前起始点的全部邻居节点距离每个子图中的兴趣节点之间的距离,都大于当前起始点与每个子图中的兴趣节点之间的距离。接着将迭代结束时的当前起始点,作为每个子图在上述顶部上层图中的导航节点。
如上述步骤S13303-上述步骤S13309所述,对于除了顶层有向之外的其他上层图,可以将上一层上层图的导航节点作为每一其他上层图的当前导航节点,每一其他上层图均会从相应的当前导航节点开始进行搜索,并重复上述迭代过程,直至确定每个子图在每一其他上层图中的导航节点。最后将每个子图在底部上层图中的导航节点,作为每个子图的起始搜索节点。
以下,以推荐场景为推荐物的场景,兴趣信息为“汉堡”对应的向量,兴趣节点为兴趣信息在每个子图上所对应的节点为例,对每个子图中的起始搜索节点进行选择的过程进行举例说明:
图10是根据一示例性实施例示出的一种对每个子图中的起始搜索节点进行选择的示意图。如图10所示,假设目标近邻图包括垂直维度的两层上层图(即第1层上层图和第2层上层图)和水平维度的3个子图(即子图0、子图1和子图2),以对子图0中的起始搜索节点进行选择为例:
一、在对每个子图0中的起始搜索节点进行选择的过程中,可以按照步骤S13301-步骤S13309中的方法,确定子图0在顶部上层图(即第2层上层图)中的导航节点,具体可以为:
从该顶部上层图(即第2层有向)中任选一个节点,作为当前起始节点,依次遍历该当前起始点的各个邻居节点与子图0中的兴趣节点(即“汉堡”对应的向量在子图0上所对应的节点)之间的距离,如果当前起始节点a的任一邻居节点,与该子图0中的兴趣节点之间的距离小于或等于当前起始节点与子图0中的兴趣节点之间的距离,则将距离当前起始节点距离最近的邻居节点重新作为当前起始节点。接着重复依次遍历该当前起始点a的各个邻居节点与子图0中的兴趣节点之间的距离的步骤,直至当前起始节点的各个邻居节点与子图0中的兴趣节点之间的距离,均大于当前起始节点与子图0中的兴趣节点之间的距离,迭代条件终止。最后,将迭代条件终止时的当前起始节点,作为子图0在上述顶部上层图(即第2层有向)中的导航节点。
子图1和子图2在顶部上层图(即第2层上层图)中的导航节点的选择过程,与子图0在顶部上层图(即第2层上层图)中的目标导航节点的过程类似,在此不在赘述。
二、确定上述顶部上层图之外的其他上层图(即第1层上层图)中的导航节点,以及子图0的起始搜索节点,具体可以为:
将顶部上层图(即第2层上层图)的导航节点作为其他上层图(即第1层上层图)的当前导航节点,依次遍历该当前导航节点的各个邻居节点与子图0中的兴趣节点之间的距离,如果当前导航节点的任一邻居节点,与该子图0中的兴趣节点之间的距离小于或等于当前导航节点与子图0中的兴趣节点之间的距离,则将距离当前导航节点最近的邻居节点重新作为当前导航节点。接着重复依次遍历该当前导航节点的各个邻居节点与子图0中的兴趣节点之间的距离的步骤,直至当前导航节点的各个邻居节点与子图0中的兴趣节点之间的距离,均大于当前导航节点与子图0中的兴趣节点之间的距离,迭代条件终止。最后,将将迭代条件终止时的当前导航节点,作为子图0在其他上层图(即第1层上层图)中的导航节点。
通过上述过程,即可得到每层其他上层图中的目标导航节点,最后,将底层上层图(即第1层上层图)的导航节点,作为子图1的起始搜索节点。
子图2、子图3中的起始搜索节点的确定过程与子图1中的起始搜索点的确定过程类似,在此不再赘述。
本公开实施例中,从顶部上层图中任选一个节点,作为当前起始节点,并依据与子图中的兴趣节点之间的距离远近以及该当前起始节点与子图中的兴趣节点之间的距离远近,遍历当前起始节点的各个邻居,从而选择出每个子图在顶部上层图的导航节点,接着再将导航节点作为下一层上层图中的起始导航节点,并依据与子图中的兴趣节点之间的距离远近以及该起始导航节点与子图中的兴趣节点之间的距离远近,遍历起始导航节点的各个邻居节点,从而选择出每个子图在下一层上层图的导航节点,提高每个子图起始搜索点的确定精度,从而提高向目标对象推荐推荐信息的推荐精度;再者,由于每个子图在地址空间上都是相互独立的,每个子图的起始搜索点的确定过程可以通过多线程并行执行,从而缩短每个子图中的起始搜索点的确定时间,提高每个子图中的起始搜索点的确定效率,进而提高向目标对象推荐推荐信息的推荐速度;此外,可以将每个子图中的起始搜索点的确定过程迁移到分布式系统中,即一台机器只针对一张子图进行并行确定起始搜索点,不仅能缩短搜索时间,还能降低向目标对象推荐推荐信息过程中在单机上的内存消耗。
在步骤S15中,根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点。
具体地,可以预先为每个子图设置相对应的预设节点队列,每个预设节点队列预先设置相应的预设存储信息,该预设存储信息可以表征节点所能够占用的内存大小。
可选地,该预设存储信息可以为预设节点队列的长度。
具体地,可以通过中央处理器(CPU)多线程完成每个子图的候选节点的确定过程。
在一个可选的实施例中,图11是根据一示例性实施例示出的一种确定目标节点的流程图。如图11所示,在上述步骤S15中,上述根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点,可以包括:
在步骤S1501中,确定每个子图的起始搜索节点与每个子图对应的兴趣节点之间的第九距离。
在步骤S1503中,确定每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的第十距离。
在步骤S1505中,根据上述第九距离和上述第十距离,从每个子图的起始搜索节点以及每个子图的起始搜索节点对应的邻居节点中,确定每个子图的候选节点。
示例性地,在上述确定每个子图的候选节点的过程中,可以预先确定每个子图的起始搜索节点与每个子图对应的兴趣节点之间的第九距离以及确定每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的第十距离,并预先为每个子图设置相对应的预设节点队列,每个预设节点队列预先设置相应的预设存储信息,该预设存储信息可以表征节点所能够占用的内存大小。在每个子图的起始搜索节点所占用的内存大小以及相应的邻居节点所占用的内存大小之和,小于对应的预设节点队列的预设存储信息时,将每个子图的起始搜索节点以及相应的邻居节点添加至对应的预设节点队列中。接着对每个子图的起始搜索节点进行邻居节点扩展搜索,得到每个子图的第一当前扩展邻居节点,将每个子图的第一当前扩展邻居节点添加至对应的预设节点队列中,重复上述对每个子图的起始搜索节点进行邻居节点扩展搜索,得到每个子图的第一当前扩展邻居节点,至上述将上述第一当前扩展邻居节点添加至对应的预设节点队列中的步骤,直至对应的预设节点队列中的节点所占用的内存大小等于对应的预设存储信息。最后将重复步骤结束时。每个子图对应的预设节点队列中的节点,作为每个子图的候选节点。
可选地,若每个子图的起始搜索节点所占用的内存大小以及相应的邻居节点所占用的内存大小之和,等于对应的预设节点队列的预设存储信息时,将每个子图的起始搜索节点以及相应的邻居节点添加至对应的预设节点队列中,但不进行后续的邻居节点扩展搜索操作。
可选地,在每个子图的起始搜索节点所占用的内存大小以及相应的邻居节点所占用的内存大小之和,大于对应的预设节点队列的预设存储信息时,将每个子图的起始搜索节点以及相应的邻居节点序列中前预设数量个邻居节点,添加至相应的预设节点队列中;上述邻居节点序列,由对每个子图的起始搜索节点的各个邻居节点,与相应的兴趣节点之间的距离进行升序排序得到。并将对应的预设节点队列中的节点,作为每个子图的候选节点。
本公开实施例中,预先规定每个子图对应的预设节点队列的预设存储信息,并在每个子图的起始搜索节点所占用的内存大小以及相应的邻居节点所占用的内存大小之和,大于对应的预设节点队列的预设存储信息时,将每个子图的起始搜索节点以及相应的邻居节点序列中前预设数量个邻居节点,添加至相应的预设节点队列中,避免将全部的邻居节点添加至预设节点队列中导致的预设节点队列的预设存储信息不足的问题,从而提高每个子图的候选节点确定的精度,进而提高向目标对象推荐推荐信息的精度。
以下,以推荐场景为推荐物的场景,兴趣信息为“汉堡”对应的向量,兴趣节点为兴趣信息在每个子图上所对应的节点,目标近邻图包括水平维度的三个子图(子图0、子图1和子图2)为例,对上述确定每个子图的候选节点的过程进行说明:
子图0、子图1和子图2的候选节点的确定过程可以通过CPU多线程完成,以确定后子图0中的候选节点为例:
可以从子图0的起始搜索节点出发,计算子图0的起始搜索节点的各个邻居节点,与子图0中的兴趣节点(“汉堡”对应的向量在每个子图上所对应的节点)之间的距离。若子图0的起始搜索节点所占用的内存大小以及相应的邻居节点所占用的内存大小之和,小于子图0对应的预设节点队列的预设存储信息时,表明子图0对应的预设存储队列能够存储得下该子图0对应的起始搜索节点以及相应的邻居节点,则可以直接将该子图0对应的起始搜索节点以及相应的邻居节点全部添加至相应的预设节点队列中。由于此时子图0对应的预设存储队列未满,则可以对子图0的起始搜索节点进行邻居节点扩展搜索,得到子图0的第一当前扩展邻居节。接着将子图0的第一当前扩展邻居节添加至子图1对应的预设节点队列中。接着重复对子图0的起始搜索节点进行邻居节点扩展搜索,得到子图0的第一当前扩展邻居节点,至将上述第一当前扩展邻居节点添加至对应的预设节点队列中的步骤,直至子图0对应的预设节点队列中的节点所占用的内存大小等于子图0对应的预设存储信息,即直至子图0对应的预设节点队列已满。最后将子图0对应预设节点队列中的节点,作为子图0的候选节点。
若子图0的起始搜索节点所占用的内存大小以及相应的邻居节点所占用的内存大小之和,大于子图0对应的预设节点队列的预设存储信息时,表明子图0对应的预设存储队列的预设存储信息无法全部存储该子图0对应的起始搜索节点以及相应的邻居节点,则可以将子图0的起始搜索节点的各个邻居节点,与子图0中的兴趣节点之间的距离,进行升序排序,得到子图0对应的邻居节点序列,并将该子图0的起始搜索节点以及邻居节点序列前预设数量个邻居节点添加至相应的预设节点队列中。接着将子图0的预设节点队列中的节点,作为子图0的候选节点。
子图1和子图2的候选节点的确定过程与子图0的候选节点的确定过程相似,在此不再赘述。
在一个可选的实施例中,为了进一步提高每个子图的候选节点的确定精度,在每个子图对应的预设节点队列已满的情况下,还可以进一步进行邻居扩展搜索,具体可以包括:
对每个子图的起始搜索节点进行邻居扩展搜索,得到每个子图的第二当前扩展邻居节点。
在每个子图的第二当前扩展邻居节点与相应的兴趣节点之间的距离,小于每个子图对应的已存在节点与相应的兴趣节点之间的距离时,将每个子图对应的预设节点队列中的已存在节点替换为每个子图的第二当前扩展邻居节点;每个子图对应的已存在节点,为每个子图对应的预设节点队列中,与每个子图的兴趣节点之间的距离最大的节点。
重复上述对每个子图的起始搜索节点进行邻居扩展搜索,得到每个子图的第二当前扩展邻居节点,至上述在每个子图的第二当前扩展邻居节点与相应的兴趣节点之间的距离,小于每个子图对应的已存在节点与相应的兴趣节点之间的距离时,将每个子图对应的预设节点队列中的已存在节点替换为每个子图的第二当前扩展邻居节点的步骤,直至每个子图的第二当前扩展邻居节点与相应的兴趣节点之间的距离,大于每个子图对应的预设节点队列中任一节点与每个子图对应的兴趣节点之间的距离。
将节点替换后的每个子图对应的预设节点队列中的节点,作为每个子图的候选节点。
本公开实施例中,每个子图对应的预设节点队列对应的预设存储信息已满的情况下,可以进一步进行邻居扩展搜索,并在搜索到的第二当前扩展邻居节点满足上述的第七距离小于第八距离时,将对应的预设节点队列中,与相应的兴趣节点之间的距离最大的已存在节点替换为该第二当前扩展邻居节点,并重复上述邻居扩展搜索的步骤,直至搜索到的第二当前扩展邻居节点与相应的兴趣节点之间的距离,大于相应的预设节点队列中任一节点与相应的兴趣节点之间的距。该方式能够使得预设节点队列中的节点距离该兴趣节点之间的距离尽可能地小,从而提高每个子图的候选节点确定的精度,进而提高向目标对象推荐推荐信息的推荐精度;再者,每个子图的候选节点的确定过程可以通过多线程并行执行,从而缩短每个子图中的候选节点的确定时间,提高每个子图中的候选节点的确定效率,从而提高向目标对象推荐推荐信息的推荐速度。
以下,以推荐场景为推荐物的场景,兴趣信息为“汉堡”对应的向量,兴趣节点为兴趣信息在每个子图上所对应的节点,目标近邻图包括水平维度的三个子图(子图0、子图1和子图2)为例,对上述确定候选节点的过程进行说明:
子图0、子图1和子图2的候选节点的确定过程可以通过CPU多线程完成,以确定后子图0中的候选节点为例:
在子图0对应的预设节点队列的预设存储信息已满的情况下,可以继续对子图0的起始搜索节点进行邻居扩展搜索,得到子图0的第二当前扩展邻居节点。接着在子图0的第二当前扩展邻居节点与子图0对应的兴趣节点(“汉堡”对应的向量在每个子图上所对应的节点)之间的距离,小于已存在节点与子图0对应的兴趣节点之间的距离时,可以将该已存在节点替换为该第二当前扩展邻居节点,该已存在节点为子图0对应的预设节点队列中,与子图0的兴趣节点之间的距离最大的节点。接着重复上述邻居扩展搜索的步骤,直至子图0的第二当前扩展邻居节点与子图0对应的兴趣节点之间的距离,大于子图0对应的预设节点队列中任一节点与相应的兴趣节点之间的距离。最后将节点替换后的子图0对应的预设节点队列中的节点,作为子图0的候选节点。
子图1和子图2的候选节点的确定过程与子图1的候选节点相似,在此不再赘述。
在步骤S1507中,将每个子图的候选节点,按照与每个子图中的兴趣节点之间的距离,进行升序排序,得到候选节点序列。
在步骤S1509中,将上述候选节点序列中前预设数量个候选节点,作为上述目标节点。
本公开实施例中,如上述步骤S1507S1701所述,可以合并每个子图的候选节点,并将合并后的每个子图的候选节点,按照与每个子图中的兴趣节点之间的距离,进行升序排序,得到上述候选节点序列。接着如上述步骤S1509所述,可以选取候选节点序列中前预设数量个候选节点,作为上述兴趣节点。
本公开实施例中,一方面,根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定每个子图的候选节点,提高每个子图的候选节点确定的精度,从而提高向目标对象推荐推荐信息的推荐精度;另一方面,每个子图的候选节点的确定过程可以通过多线程并行执行,可以提高每个子图中的候选节点的确定效率,从而提高向目标对象推荐推荐信息的推荐速度;另一方面,以将每个子图中的候选节点的确定过程迁移到分布式系统中,即一台机器只针对一张子图进行并行确定候选节点,不仅能缩短搜索时间,还能降低向目标对象推荐推荐信息的过程在单机上的内存消耗;另一方面,通过将每个子图的候选节点进行合并和排序,并将排序后的前预设数量个候选节点,作为上述目标节点,提高了目标节点的精度,从而进一步提高了向目标对象推荐推荐信息的推荐精度。
在步骤S17中,将上述目标节点对应的推荐信息推荐至上述目标对象。
本公开实施例中在得到兴趣节点之后,可以将目标节点对应的推荐信息推荐至上述目标对象。
假设,推荐场景为推荐物的场景,兴趣信息为“汉堡”对应的向量,通过方式确定得到的目标节点为“薯条”对应的向量,则可以将该目标节点对应的推荐信息(即薯条)推荐给目标对象。
假设,推荐场景为推荐人的场景,兴趣信息为“金融人士、硕士对应的向量,通过方式确定得到的目标节点为“张三”对应的向量,则可以将该目标节点对应的推荐信息(即张三)推荐给目标对象。
需要说明的是,上述节点与节点之间的可以指的是向量之间的距离,具体可以为节点embedding之间的距离。其中,embedding是一种从语义空间到向量空间的映射。
本公开实施例提供的上述方法为有向多维度的分层可导航小世界算法(DMD-HNSW),本公开实施例在某CPU硬件平台上对面向推荐系统的近似近邻方法进行了实验。
本公开实施例首先探究了构建速度与召回率之间的关系。图14是根据一示例性实施例示出的一种召回率R@100和构建速度的关系示意图。其中,R@100指的是根据推荐的前100个结果所得的召回率。
如图12所示,其中ef为搜索阶段的预设节点队列的预设存储信息(比如,预设节点队列的长度)。实验结果表明,随着构建速度的增加,即单位时间内构建点数的增加,召回率不断上升,且两者成近似正比例的关系。因此,当单位时间内新增的数据量增多时,减少构建时间能使近邻图中包含更多数据,即提升推荐精度;相反地,当构建速度小于新增数据速度时,无法完成实时推荐任务,且两者的差别越大,推荐精度越低。这证明提升搜索速度对推荐系统的性能有显著作用。
本公开实施例对面向推荐系统应用的DMD-HNSW算法进行了性能实验,并与HNSW算法在构建时间、搜索时间和结果精度三个层面进行了对比。实验中各参数设置如下:对于HNSW算法,节点能连接的最大邻居数M=16(近邻图中的底层图为2*M),构建阶段的候选者队列长度efc=40;对于DMD-HNSW算法,M=16,efc=10,底层图所包含的子图的数为3。两种算法的构建时间如表1所示,其中结果为运行10次的平均结果。实验表明,对于不同数据集,DMD-HNSW的构建时间比HNSW的构建时间减少了35%左右。其中,SIFT1M、SIFT10M和SIFT50M表示不同的数据集。
表1不同算法下的构建时间比较
图13是根据一示例性实施例示出的一种在同样参数设置下,DMD-HNSW和HNSW算法的搜索速度(Query time)和结果精度(R@1)的对比示意图。其中,R@1指的是根据推荐的前1个结果所得的召回率。
如图13所示,相比于HNSW算法,DMD-HNSW算法的结果精度(R@1)最高可提升7%,在召回率R@1>0.9的前提下,DMD-HNSW的精度可提升2%-3%。另一方面,在相同精度下,DMD-HNSW的搜索时间可减少10%-20%。综上所述,无论在构建时间、搜索时间还是结果精度层面,DMD-HNSW算法的性能均优于HNSW算法,即能够进一步提升其在推荐系统中的应用效率,以带来更好的推荐性能和更高的商业价值。
最后,由于DMD-HNSW算法能够容易地迁移到分布式系统中,因此,本公开实施例在理论上模拟了在CPU集群环境中,该算法能带来的内存缩减优势。本公开实施例分两部分进行考虑,即除最底层图(第0层)外的上层图内存消耗和最底层图的内存消耗,并对不同环境下的单机消耗内存进行比较。首先对于上层图,由于DMD-HNDW算法采用上层图结构,即相比于HNSW算法可平均缩减1/2的内存。
另一方面,对于最底层图,假设两种算法构建的近邻图中总节点数均为N,上层图最大连接数均为Mmax,底层图最大连接数均为Mmax0。HNSW算法底层图需要存储全部的节点,即N个,则底层图占用内存为N*Mmax0*bytes_per_link,其中bytes_per_link为一个连接所需要的字节数,一般为4字节(bytes)。假设DMD-HNSW底层拆分的子图数量为sub_num,则对于单机而言,只需存储底层中的任意一张子图,其上的点数为:(N-N/Mmax)/sub_num+N/Mmax,底层子图占用的内存为((N-N/Mmax)/sub_num+N/Mmax)*Mmax0*bytes_per_link。由于一般情况下Mmax>10,因此相比HNSW,DMD-HNSW单机上的内存消耗缩减的比例与分布式环境中的机器数量近似成正比。
图14是根据一示例性实施例示出的一种信息推荐装置框图。参照图14,该装置可以包括响应模块31、起始搜索节点确定模块33、目标节点确定模块35和推荐模块37:
响应模块31,被配置为执行响应于目标对象的信息推荐请求,获取目标对象的兴趣信息和目标近邻图;上述兴趣信息表征上述目标对象感兴趣的信息,上述目标近邻图包括上层图和底层图,上述底层图包括多个子图,每个子图包括上述上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为其他推荐信息对应的节点,上述其他推荐信息为预设推荐信息集中除与上述上层图中的节点对应的推荐信息以外的推荐信息。
起始搜索节点确定模块33,被配置为执行基于每个子图在上述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在上述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点;每个子图在上述上层图中的导航节点满足预设条件,每个子图对应的兴趣节点为上述兴趣信息在每个子图上所对应的节点。
目标节点确定模块35,被配置为执行根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点。
推荐模块37,被配置为执行将上述目标节点对应的推荐信息推荐至上述目标对象。
在一示例性的实施方式中,上述装置还包括构建上述目标近邻图的构建模块,上述构建模块包括:
生成单元,被配置为执行基于上述预设推荐信息集,生成多个推荐信息组。
执行单元,被配置为执行依次对每一推荐信息组执行以下操作。
图层信息确定单元,被配置为执行基于预设图层划分信息确定每一推荐信息组中的各个推荐信息的图层信息。
初始上层图构建单元,被配置为执行基于每一推荐信息组中的各个推荐信息的图层信息,并行在预设近邻图中构建初始上层图,得到更新后的预设近邻图;上述预设近邻图包括与上述底层图对应的初始底层图,上述初始上层图与上述上层图对应。
节点生成单元,被配置为执行基于每一推荐信息组中的各个推荐信息的图层信息,在上述更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点。
邻居节点确定单元,被配置为执行根据已添加节点,并行确定每一推荐信息组中的各个推荐信息对应的节点的邻居节点;上述已添加节点为已添加至上述预设近邻图中的其他推荐信息组中的推荐信息对应的节点,上述其他推荐信息组为上述多个推荐信息组中除上述每一推荐信息组之外的推荐信息组。
节点连接单元,被配置为执行将上述初始底层图中的节点与上述初始底层图中的节点对应的邻居节点进行连接,得到上述底层图,将上述初始上层图的节点与上述初始上层图的节点对应的邻居节点进行连接,得到上述上层图。
在一示例性的实施方式中,上述上层图为上层图,上述节点连接单元,被配置为执行将上述初始上层图的节点与上述初始上层图的节点对应的邻居节点进行有向连接,得到上述上层图。
在一示例性的实施方式中,上述节点生成单元,被配置为执行当每一推荐信息组中的任一推荐信息的图层信息对应的图层为上述初始底层图时,在任一初始子图中生成上述任一推荐信息对应的节点。
在一示例性的实施方式中,上述邻居节点确定单元,包括:
候选邻居节点确定子单元,被配置为执行根据每一推荐信息组中的各个推荐信息在不同图层中的节点,与上述已添加节点之间的距离,从上述已添加节点中并行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点。
待筛选邻居节点确定子单元,被配置为执行对每一推荐信息组中的各个推荐信息在不同图层中的节点进行邻居节点扩展搜索,得到每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的待筛选邻居节点。
第一距离确定子单元,被配置为执行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第一距离。
第二距离确定子单元,被配置为执行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第二距离。
邻居节点确定子单元,被配置为执行基于第一距离和第二距离,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点。
在一示例性的实施方式中,上述上层图的层数为一层,上述起始搜索节点确定模块,包括:
第一导航节点确定单元,被配置为执行将上述上层图中的任一节点作为每个子图在上述上层图中的导航节点。
第三距离确定单元,被配置为执行确定每个子图在上述上层图中的导航节点与每个子图对应的兴趣节点之间的第三距离。
第四距离确定单元,被配置为执行确定每个子图在上述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第四距离。
第一起始搜索节点确定单元,被配置为执行基于上述第三距离和上述第四距离,确定每个子图的起始搜索节点。
在一示例性的实施方式中,上述上层图的层数为多层,上述起始搜索节点确定模块,包括:
第二导航节点确定单元,被配置为执行根据顶部上层图中的任一节点与每个子图对应的兴趣节点之间的第五距离,以及上述顶部上层图中的任一节点对应的邻居节点与每个子图对应的兴趣节点之间的第六距离,确定每个子图在上述顶部上层图中的导航节点。
遍历单元,被配置为执行按照图层序列中的顺序,依次遍历多层上述上层图中,除上述顶部上层图之外的其他上层图,并在遍历每一其他上层图时,执行以下操作。
当前导航节点确定单元,被配置为执行每一其他上层图的上一上层图中的导航节点,作为每一其他上层图的当前导航节点;上述上一上层图为上述图层序列中位于每一其他上层图之前,且与每一其他上层图相邻的上层图。
第三导航节点确定单元,被配置为执行根据上述每一其他上层图的当前导航节点与每个子图对应的兴趣节点之间的第七距离,以及每一其他上层图的当前导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第八距离,确定每个子图在每一其他上层图中的导航节点。
第二起始搜索节点确定单元,被配置为执行将每个子图在底部上层图中的导航节点,作为每个子图的起始搜索节点;其中,上述底部上层图为上述图层序列中排序最后的图层,上述顶部上层图为上述图层序列中排序最前的图层,上述图层序列基于多层上述上层图按照图层信息进行降序排序得到。
在一示例性的实施方式中,上述目标节点确定模块,包括:
第九距离确定单元,被配置为执行确定每个子图的起始搜索节点与每个子图对应的兴趣节点之间的第九距离。
第十距离确定单元,被配置为执行确定每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的第十距离。
候选节点确定单元,被配置为执行根据上述第九距离和上述第十距离,从每个子图的起始搜索节点以及每个子图的起始搜索节点对应的邻居节点中,确定每个子图的候选节点。
候选节点序列获取单元,被配置为执行将每个子图的候选节点,按照与每个子图对应的兴趣节点之间的距离,进行升序排序,得到候选节点序列。
目标节点确定单元,被配置为执行将上述候选节点序列中前预设数量个候选节点,作为上述目标节点。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在示例性实施例中,还提供了一种电子设备,包括处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行存储器上所存放的指令时,实现上述实施例中任一信息推荐方法的步骤。
该电子设备可以是终端、服务器或者类似的运算装置,以该电子设备是服务器为例,图15是根据一示例性实施例示出的一种用于信息推荐的电子设备的框图,该电子设备40可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)41(中央处理器41可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器43,一个或一个以上存储应用程序423或数据422的存储介质42(例如一个或一个以上海量存储设备)。其中,存储器43和存储介质42可以是短暂存储或持久存储。存储在存储介质42的程序可以包括一个或一个以上模块,每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器41可以设置为与存储介质42通信,在电子设备40上执行存储介质42中的一系列指令操作。电子设备40还可以包括一个或一个以上电源46,一个或一个以上有线或无线网络接口45,一个或一个以上输入输出接口44,和/或,一个或一个以上操作系统421,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口44可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子设备40的通信供应商提供的无线网络。在一个实例中,输入输出接口44包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个示例性实施例中,输入输出接口44可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图15所示的结构仅为示意,其并不对上述电子设备的结构造成限定。例如,电子设备40还可包括比图15中所示更多或者更少的组件,或者具有与图15所示不同的配置。
在示例性实施例中,还提供了一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述实施例中任一信息推荐方法的步骤。
在示例性实施例中,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一种实施方式中提供的信息推荐方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本公开所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (19)
1.一种信息推荐方法,其特征在于,包括:
响应于目标对象的信息推荐请求,获取目标对象的兴趣信息和目标近邻图;所述兴趣信息表征所述目标对象感兴趣的信息,所述目标近邻图包括上层图和底层图,所述底层图包括多个子图,每个子图包括所述上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为其他推荐信息对应的节点,所述其他推荐信息为预设推荐信息集中除与所述上层图中的节点对应的推荐信息以外的推荐信息;
基于每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点;每个子图在所述上层图中的导航节点满足预设条件,每个子图对应的兴趣节点为所述兴趣信息在每个子图上所对应的节点;
根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点;
将所述目标节点对应的推荐信息推荐至所述目标对象。
2.根据权利要求1所述的信息推荐方法,其特征在于,所述方法还包括构建所述目标近邻图的步骤,所述构建所述目标近邻图的步骤包括:
基于所述预设推荐信息集,生成多个推荐信息组;
依次对每一推荐信息组执行以下操作:
基于预设图层划分信息确定每一推荐信息组中的各个推荐信息的图层信息;
基于每一推荐信息组中的各个推荐信息的图层信息,并行在预设近邻图中构建初始上层图,得到更新后的预设近邻图;所述预设近邻图包括与所述底层图对应的初始底层图,所述初始上层图与所述上层图对应;
基于每一推荐信息组中的各个推荐信息的图层信息,在所述更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点;
根据已添加节点,并行确定每一推荐信息组中的各个推荐信息对应的节点的邻居节点;所述已添加节点为已添加至所述预设近邻图中的其他推荐信息组中的推荐信息对应的节点,所述其他推荐信息组为所述多个推荐信息组中除所述每一推荐信息组之外的推荐信息组;
将所述初始底层图中的节点与所述初始底层图中的节点对应的邻居节点进行连接,得到所述底层图,将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行连接,得到所述上层图。
3.根据权利要求2所述的信息推荐方法,其特征在于,所述上层图为上层图,所述将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行连接,得到所述上层图,包括:
将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行有向连接,得到所述上层图。
4.根据权利要求2所述的信息推荐方法,其特征在于,所述初始底层图包括多个初始子图,所述基于每一推荐信息组中的各个推荐信息的图层信息,在所述更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点,包括:
当每一推荐信息组中的任一推荐信息的图层信息对应的图层为所述初始底层图时,在任一初始子图中生成所述任一推荐信息对应的节点。
5.根据权利要求2所述的信息推荐方法,其特征在于,所述根据已添加节点,并行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点,包括:
根据每一推荐信息组中的各个推荐信息在不同图层中的节点,与所述已添加节点之间的距离,从所述已添加节点中并行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点;
对每一推荐信息组中的各个推荐信息在不同图层中的节点进行邻居节点扩展搜索,得到每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的待筛选邻居节点;
确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第一距离;
确定每一推荐信息组中的各个推荐信息,在不同图层中的节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第二距离;
基于第一距离和第二距离,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点。
6.根据权利要求1至5中任一项所述的信息推荐方法,其特征在于,所述上层图的层数为一层,所述基于每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点,包括:
将所述上层图中的任一节点作为每个子图在所述上层图中的导航节点;
确定每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的第三距离;
确定每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第四距离;
基于所述第三距离和所述第四距离,确定每个子图的起始搜索节点。
7.根据权利要求1至5中任一项所述的信息推荐方法,其特征在于,所述上层图的层数为多层,所述基于每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点,包括:
根据顶部上层图中的任一节点与每个子图对应的兴趣节点之间的第五距离,以及所述顶部上层图中的任一节点对应的邻居节点与每个子图对应的兴趣节点之间的第六距离,确定每个子图在所述顶部上层图中的导航节点;
按照图层序列中的顺序,依次遍历多层所述上层图中,除所述顶部上层图之外的其他上层图,并在遍历每一其他上层图时,执行以下操作:
每一其他上层图的上一上层图中的导航节点,作为每一其他上层图的当前导航节点;所述上一上层图为所述图层序列中位于每一其他上层图之前,且与每一其他上层图相邻的上层图;
根据所述每一其他上层图的当前导航节点与每个子图对应的兴趣节点之间的第七距离,以及每一其他上层图的当前导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第八距离,确定每个子图在每一其他上层图中的导航节点;
将每个子图在底部上层图中的导航节点,作为每个子图的起始搜索节点;
其中,所述底部上层图为所述图层序列中排序最后的图层,所述顶部上层图为所述图层序列中排序最前的图层,所述图层序列基于多层所述上层图按照图层信息进行降序排序得到。
8.根据权利要求1至5中任一项所述的信息推荐方法,其特征在于,所述根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点,包括:
确定每个子图的起始搜索节点与每个子图对应的兴趣节点之间的第九距离;
确定每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的第十距离;
根据所述第九距离和所述第十距离,从每个子图的起始搜索节点以及每个子图的起始搜索节点对应的邻居节点中,确定每个子图的候选节点;
将每个子图的候选节点,按照与每个子图对应的兴趣节点之间的距离,进行升序排序,得到候选节点序列;
将所述候选节点序列中前预设数量个候选节点,作为所述目标节点。
9.一种信息推荐装置,其特征在于,包括:
响应模块,被配置为执行响应于目标对象的信息推荐请求,获取目标对象的兴趣信息和目标近邻图;所述兴趣信息表征所述目标对象感兴趣的信息,所述目标近邻图包括上层图和底层图,所述底层图包括多个子图,每个子图包括所述上层图中的节点和每个子图各自对应的其他节点,每个子图各自对应的其他节点为其他推荐信息对应的节点,所述其他推荐信息为预设推荐信息集中除与所述上层图中的节点对应的推荐信息以外的推荐信息;
起始搜索节点确定模块,被配置为执行基于每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的距离,以及每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,并行确定每个子图的起始搜索节点;每个子图在所述上层图中的导航节点满足预设条件,每个子图对应的兴趣节点为所述兴趣信息在每个子图上所对应的节点;
目标节点确定模块,被配置为执行根据每个子图的起始搜索节点与每个子图对应的兴趣节点之间的距离,以及每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的距离,确定目标节点;
推荐模块,被配置为执行将所述目标节点对应的推荐信息推荐至所述目标对象。
10.根据权利要求9所述的信息推荐装置,其特征在于,所述装置还包括构建所述目标近邻图的构建模块,所述构建模块包括:
生成单元,被配置为执行基于所述预设推荐信息集,生成多个推荐信息组;
执行单元,被配置为执行依次对每一推荐信息组执行以下操作;
图层信息确定单元,被配置为执行基于预设图层划分信息确定每一推荐信息组中的各个推荐信息的图层信息;
初始上层图构建单元,被配置为执行基于每一推荐信息组中的各个推荐信息的图层信息,并行在预设近邻图中构建初始上层图,得到更新后的预设近邻图;所述预设近邻图包括与所述底层图对应的初始底层图,所述初始上层图与所述上层图对应;
节点生成单元,被配置为执行基于每一推荐信息组中的各个推荐信息的图层信息,在所述更新后的预设近邻图中,并行生成每一推荐信息组中的各个推荐信息对应的节点;
邻居节点确定单元,被配置为执行根据已添加节点,并行确定每一推荐信息组中的各个推荐信息对应的节点的邻居节点;所述已添加节点为已添加至所述预设近邻图中的其他推荐信息组中的推荐信息对应的节点,所述其他推荐信息组为所述多个推荐信息组中除所述每一推荐信息组之外的推荐信息组;
节点连接单元,被配置为执行将所述初始底层图中的节点与所述初始底层图中的节点对应的邻居节点进行连接,得到所述底层图,将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行连接,得到所述上层图。
11.根据权利要求10所述的信息推荐装置,其特征在于,所述上层图为上层图,所述节点连接单元,被配置为执行将所述初始上层图的节点与所述初始上层图的节点对应的邻居节点进行有向连接,得到所述上层图。
12.根据权利要求10所述的信息推荐装置,其特征在于,所述节点生成单元,被配置为执行当每一推荐信息组中的任一推荐信息的图层信息对应的图层为所述初始底层图时,在任一初始子图中生成所述任一推荐信息对应的节点。
13.根据权利要求10所述的信息推荐装置,其特征在于,所述邻居节点确定单元,包括:
候选邻居节点确定子单元,被配置为执行根据每一推荐信息组中的各个推荐信息在不同图层中的节点,与所述已添加节点之间的距离,从所述已添加节点中并行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点;
待筛选邻居节点确定子单元,被配置为执行对每一推荐信息组中的各个推荐信息在不同图层中的节点进行邻居节点扩展搜索,得到每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的待筛选邻居节点;
第一距离确定子单元,被配置为执行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的候选邻居节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第一距离;
第二距离确定子单元,被配置为执行确定每一推荐信息组中的各个推荐信息,在不同图层中的节点,与各个推荐信息在不同图层中的节点对应的待筛选邻居节点之间的第二距离;
邻居节点确定子单元,被配置为执行基于第一距离和第二距离,确定每一推荐信息组中的各个推荐信息,在不同图层中的节点对应的邻居节点。
14.根据权利要求9至13中任一项所述的信息推荐装置,其特征在于,所述上层图的层数为一层,所述起始搜索节点确定模块,包括:
第一导航节点确定单元,被配置为执行将所述上层图中的任一节点作为每个子图在所述上层图中的导航节点;
第三距离确定单元,被配置为执行确定每个子图在所述上层图中的导航节点与每个子图对应的兴趣节点之间的第三距离;
第四距离确定单元,被配置为执行确定每个子图在所述上层图中的导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第四距离;
第一起始搜索节点确定单元,被配置为执行基于所述第三距离和所述第四距离,确定每个子图的起始搜索节点。
15.根据权利要求9至13中任一项所述的信息推荐装置,其特征在于,所述上层图的层数为多层,所述起始搜索节点确定模块,包括:
第二导航节点确定单元,被配置为执行根据顶部上层图中的任一节点与每个子图对应的兴趣节点之间的第五距离,以及所述顶部上层图中的任一节点对应的邻居节点与每个子图对应的兴趣节点之间的第六距离,确定每个子图在所述顶部上层图中的导航节点;
遍历单元,被配置为执行按照图层序列中的顺序,依次遍历多层所述上层图中,除所述顶部上层图之外的其他上层图,并在遍历每一其他上层图时,执行以下操作:
当前导航节点确定单元,被配置为执行每一其他上层图的上一上层图中的导航节点,作为每一其他上层图的当前导航节点;所述上一上层图为所述图层序列中位于每一其他上层图之前,且与每一其他上层图相邻的上层图;
第三导航节点确定单元,被配置为执行根据所述每一其他上层图的当前导航节点与每个子图对应的兴趣节点之间的第七距离,以及每一其他上层图的当前导航节点对应的邻居节点与每个子图对应的兴趣节点之间的第八距离,确定每个子图在每一其他上层图中的导航节点;
第二起始搜索节点确定单元,被配置为执行将每个子图在底部上层图中的导航节点,作为每个子图的起始搜索节点;其中,所述底部上层图为所述图层序列中排序最后的图层,所述顶部上层图为所述图层序列中排序最前的图层,所述图层序列基于多层所述上层图按照图层信息进行降序排序得到。
16.根据权利要求9至13中任一项所述的信息推荐装置,其特征在于,所述目标节点确定模块,包括:
第九距离确定单元,被配置为执行确定每个子图的起始搜索节点与每个子图对应的兴趣节点之间的第九距离;
第十距离确定单元,被配置为执行确定每个子图的起始搜索节点对应的邻居节点与每个子图对应的兴趣节点之间的第十距离;
候选节点确定单元,被配置为执行根据所述第九距离和所述第十距离,从每个子图的起始搜索节点以及每个子图的起始搜索节点对应的邻居节点中,确定每个子图的候选节点;
候选节点序列获取单元,被配置为执行将每个子图的候选节点,按照与每个子图对应的兴趣节点之间的距离,进行升序排序,得到候选节点序列;
目标节点确定单元,被配置为执行将所述候选节点序列中前预设数量个候选节点,作为所述目标节点。
17.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如权利要求1至8中任一项所述的信息推荐方法。
18.一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备执行如权利要求1至8中任一项所述的信息推荐方法。
19.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的信息推荐方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110751205.3A CN113609377B (zh) | 2021-07-02 | 2021-07-02 | 信息推荐方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110751205.3A CN113609377B (zh) | 2021-07-02 | 2021-07-02 | 信息推荐方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113609377A CN113609377A (zh) | 2021-11-05 |
CN113609377B true CN113609377B (zh) | 2022-11-22 |
Family
ID=78337229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110751205.3A Active CN113609377B (zh) | 2021-07-02 | 2021-07-02 | 信息推荐方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113609377B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111854781A (zh) * | 2020-06-17 | 2020-10-30 | 北京嘀嘀无限科技发展有限公司 | 导航路径推荐方法、装置和电子设备 |
CN112069412A (zh) * | 2020-09-11 | 2020-12-11 | 腾讯科技(深圳)有限公司 | 信息推荐方法、装置、计算机设备及存储介质 |
CN112667860A (zh) * | 2020-12-30 | 2021-04-16 | 海南普适智能科技有限公司 | 一种子图匹配方法、装置、设备及存储介质 |
-
2021
- 2021-07-02 CN CN202110751205.3A patent/CN113609377B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111854781A (zh) * | 2020-06-17 | 2020-10-30 | 北京嘀嘀无限科技发展有限公司 | 导航路径推荐方法、装置和电子设备 |
CN112069412A (zh) * | 2020-09-11 | 2020-12-11 | 腾讯科技(深圳)有限公司 | 信息推荐方法、装置、计算机设备及存储介质 |
CN112667860A (zh) * | 2020-12-30 | 2021-04-16 | 海南普适智能科技有限公司 | 一种子图匹配方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113609377A (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180276250A1 (en) | Distributed Image Search | |
US9454580B2 (en) | Recommendation system with metric transformation | |
JP5681801B2 (ja) | カテゴリ分けされた製品情報の処理 | |
EP2946313A2 (en) | Searching and determining active area | |
CN109145129B (zh) | 基于层次三元组损失函数的深度度量学习方法及其装置 | |
JP2007317068A (ja) | リコメンド装置およびリコメンドシステム | |
AU2017268599B2 (en) | Method, device, server and storage medium of searching a group based on social network | |
CN111651641B (zh) | 一种图查询方法、装置及存储介质 | |
JP2010055621A (ja) | 検索方法及び検索システム | |
CN111460234A (zh) | 图查询方法、装置、电子设备及计算机可读存储介质 | |
CN112989169A (zh) | 目标对象识别方法、信息推荐方法、装置、设备及介质 | |
JP2016029526A (ja) | 情報処理装置、及びプログラム | |
CN111198961B (zh) | 商品搜索方法、装置及服务器 | |
JP7080803B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JP2021131783A (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
CN111309946A (zh) | 一种已建立档案优化方法及装置 | |
CN112214684B (zh) | 一种种子扩展的重叠社区发现方法及装置 | |
CN113609377B (zh) | 信息推荐方法、装置、电子设备及存储介质 | |
US20170031918A1 (en) | Techniques for graph-based recommendations | |
CN113609378B (zh) | 信息推荐方法、装置、电子设备及存储介质 | |
CN112738756B (zh) | 一种物联网设备数据收集方法及装置 | |
CN111684817B (zh) | 推荐算法的选择的方法及对应的装置 | |
CN113139834A (zh) | 信息处理方法、装置、电子设备和存储介质 | |
CN108229748B (zh) | 用于合乘服务的匹配方法、装置及电子设备 | |
Meng et al. | Dp-poirs: A diversified and personalized point-of-interest recommendation system |
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 |