用于搜索的深度神经网络架构的制作方法

文档序号:18450943发布日期:2019-08-17 01:15阅读:188来源:国知局
用于搜索的深度神经网络架构的制作方法

本申请要求享有于2018年2月9日提交的题为“deployingdeepmodelsforsearchverticals”的美国临时申请第62/628,765号的优先权,该申请的全部内容由此通过引用并入,如同在本文中阐述。

本申请总体上涉及用于神经网络的架构,并且在一个特定示例中,涉及实现用于搜索的神经网络的架构的方法和系统。



背景技术:

用于处理搜索查询的当前架构在处理这样的搜索查询时遭受增加的时延:其涉及在生成针对搜索查询的搜索结果时的复杂考虑。在这些架构中,搜索查询的数据和针对作为搜索结果而包括进行评估的项目的数据越复杂,处理搜索查询同时仍然提供相关搜索结果越计算昂贵。因此,当前搜索架构遭受以下技术问题:牺牲处理速度来换取搜索结果相关性,反之亦然。还出现其他技术问题。

附图说明

本公开的一些实施例通过示例而非限制的方式在附图的图中示出,在附图中相同的附图标记表示相似的元素。

图1是示出根据示例实施例的客户端-服务器系统的框图。

图2是示出根据示例实施例的联网系统内的社交联网服务的功能组件的框图。

图3示出了根据示例实施例的神经网络的架构的组件。

图4示出了根据示例实施例的神经网络的架构的附加方面。

图5示出了根据示例实施例的搜索基础设施。

图6示出了根据示例实施例的搜索基础设施内的搜索查询的生命周期。

图7是示出根据示例实施例的使用神经网络架构进行搜索的方法的流程图。

图8是示出根据一些示例实施例的移动设备的框图。

图9是根据示例实施例的可以在其上执行本文描述的方法的示例计算机系统的框图。

具体实施方式

公开了实现和使用用于搜索的神经网络架构的示例方法和系统。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对示例实施例的透彻理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实践本实施例。

可以通过本文公开的一个或多个示例实施例来解决上述问题中的一些或全部。本公开的系统和方法的一些技术效果是改进搜索系统处理涉及复杂数据的搜索查询的能力,最大化搜索结果的相关性,同时避免会妨碍其他搜索系统的时延问题。另外,其他技术效果也将从本公开中显而易见。

在一些示例实施例中,一种系统架构包括项目神经网络、查询神经网络以及评分神经网络。项目神经网络被配置为针对存储在在线服务的数据库上的多个项目中的每一个项目,从在线服务的数据库中取回多个项目中的该个项目的项目数据,并且基于所取回的多个项目中的该个项目的项目数据来生成项目向量表示。查询神经网络被配置为基于查询来生成针对查询的查询向量表示,查询由在线服务的用户的计算设备提交并且包括至少一个关键字,查询神经网络与项目神经网络不同。评分神经网络被配置为针对多个项目中的每一个项目,基于多个项目中的该个项目的项目向量表示和查询向量表示,生成针对多个项目中的该个项目与查询的配对的对应分数,评分神经网络与项目神经网络和查询神经网络不同。

在一些示例实施例中,项目神经网络、查询神经网络以及评分神经网络在单独的物理计算机系统上被实现,单独的物理计算机系统中的每一个单独的物理计算机系统具有与其他单独的物理计算机系统分开的其自己的一组一个或多个硬件处理器。

在一些示例实施例中,项目神经网络、查询神经网络以及评分神经网络各自包括深度神经网络。在一些示例实施例中,项目神经网络包括卷积神经网络。

在一些示例实施例中,多个项目包括多个文档。在一些示例实施例中,多个项目包括社交联网服务的多个成员简档。

在一些示例实施例中,该系统架构包括被配置为进行以下操作的至少一个模块:基于多个项目的对应分数对多个项目进行排名;以及使得基于对多个项目的排名,多个项目的至少一部分在计算设备上作为针对查询的搜索结果被显示。

本文公开的方法、操作或实施例可以实现为一个或多个计算机系统,每个计算机系统具有一个或多个模块(例如,硬件模块或软件模块)。这些模块可以由(多个)计算机系统的一个或多个硬件处理器执行。本文公开的方法或实施例可以体现为存储在机器可读介质上的指令,该指令当由一个或多个处理器执行时,使得一个或多个处理器执行指令。

图1是示出根据示例实施例的客户端-服务器系统100的框图。联网系统102经由网络104(例如,互联网或广域网(wan))向一个或多个客户端提供服务器侧功能。图1示出了例如在相应的客户端机器110和112上执行的web客户端106(例如,浏览器)和编程客户端108。

应用编程接口(api)服务器114和web服务器116耦合到一个或多个应用服务器118,并且分别提供到一个或多个应用服务器118的编程接口和web接口。应用服务器118托管一个或多个应用120。进而,应用服务器118被示为耦合到一个或多个数据库服务器124,其促进访问一个或多个数据库126。虽然图1中示出了应用120用于形成联网系统102的一部分,但是应认识到,在替代实施例中,应用120可以形成与联网系统102分离且不同的服务的一部分。

此外,虽然图1中所示的系统100采用客户端-服务器架构,但是本公开当然不限于这种架构,并且在例如分布式或对等架构系统中同样可以得到良好应用。各种应用120也可以实现为独立的软件程序,其不一定具有联网能力。

web客户端106经由web服务器116支持的web接口访问各种应用120。类似地,编程客户端108经由api服务器114提供的编程接口访问由应用120提供的各种服务和功能。

图1还将在第三方服务器机器130上执行的第三方应用128示为具有经由api服务器114提供的编程接口对联网系统102的编程访问。例如,第三方应用128可以利用从联网系统102取回的信息来支持由第三方托管的网站上的一个或多个特征或功能。例如,第三方网站可以提供由联网系统102的相关应用支持的一个或多个功能。

在一些实施例中,本文提及的任何网站可以包括可以在各种设备上呈现的在线内容,这些设备包括但不限于台式个人计算机、膝上型计算机和移动设备(例如,平板计算机、智能电话等)。在这方面,用户可以采用这些设备中的任何一个,以便使用本公开的特征。在一些实施例中,用户可以使用移动设备(机器110、112和130中的任何一个可以是移动设备)上的移动应用来访问和浏览在线内容,例如,本文公开的在线内容中的任何在线内容。移动服务器(例如,api服务器114)可以与移动应用和(多个)应用服务器118通信,以便使得本公开的特征在移动设备上可用。

在一些实施例中,联网系统102可以包括社交联网服务的功能组件。

图2是示出与本公开的一些实施例一致的社交联网系统210的功能组件的框图,这些功能组件包括在本文中称为搜索系统216的数据处理模块,用于在社交联网系统210中使用。在一些实施例中,搜索系统216驻留在图1中的(多个)应用服务器118上。然而,设想其他配置也在本公开的范围内。

如图2所示,前端可以包括用户接口模块(例如,web服务器)212,其从各种客户端计算设备接收请求,并且向请求客户端设备传送适当的响应。例如,(多个)用户接口模块212可以接收超文本传输协议(http)请求或其他基于web的应用编程接口(api)请求的形式的请求。另外,可以提供成员交互检测模块213以检测成员与不同应用、服务和呈现的内容的各种交互。如图2所示,在检测到特定交互时,成员交互检测模块213在成员活动和行为数据库222中记录交互,包括交互的类型和与交互相关的任何元数据。

应用逻辑层可以包括一个或多个各种应用服务器模块214,其结合(多个)用户接口模块212生成具有从数据层中的各种数据源取回的数据的各种用户接口(例如,网页)。关于一些实施例,个体应用服务器模块214用于实现与社交联网服务提供的各种应用和/或服务相关联的功能。在一些示例实施例中,应用逻辑层包括搜索系统216。

如图2所示,数据层可以包括若干数据库,例如,用于存储简档数据的数据库218,包括成员简档数据和用于各种组织(例如,公司、学校等)的简档数据。与一些实施例一致,当人员最初注册成为社交联网服务的成员时,将提示该人员提供一些个人信息,例如,他或她的姓名、年龄(例如,出生日期)、性别、兴趣、联系信息、家乡、地址、成员配偶和/或家庭成员的姓名、教育背景(例如,学校、专业、入学考试和/或毕业日期等)、工作经历、技能、专业组织等。该信息例如存储在数据库218中。类似地,当组织的代表最初向社交联网服务注册该组织时,可以提示该代表提供关于该组织的特定信息。该信息可以例如存储在数据库218或另一数据库(未示出)中。在一些示例实施例中,可以(例如,在后台或离线地)处理简档数据,以生成各种推导出的简档数据。例如,如果成员已经提供了有关该成员在同一公司或不同公司持有的各种职务以及在多长时间内持有该职务的信息,则该信息可以用于推断或推导出指示成员的整体资历水平或在特定公司内的资历水平的成员简档属性。在一些示例实施例中,从一个或多个外部托管的数据源导入或以其他方式访问数据可以增强用于成员和组织两者的简档数据。例如,特别是对于公司,可以从一个或多个外部数据源导入财务数据,并将其作为公司简档的一部分。

一旦注册,成员可以邀请其他成员或被其他成员邀请,以经由社交联网服务进行连接。“连接”可能要求或指示由成员进行的双边协定,使得两个成员都确认连接的建立。类似地,关于一些实施例,成员可以选择“关注(follow)”另一成员。与建立连接相反,“关注”另一成员的概念典型地是单边操作,并且至少关于一些实施例,不要求被关注的成员进行确认或批准。当一个成员关注另一成员时,关注的成员可以接收由被关注的成员发布的状态更新(例如,在活动或内容流中)或其他消息,或者与被关注的成员进行的各种活动有关。类似地,当成员关注组织时,该成员变得有资格接收代表组织发布的消息或状态更新。例如,代表成员关注的组织发布的消息或状态更新将出现在成员的个性化数据馈送中,通常称为活动流或内容流。在任何情况下,成员与其他成员或与其他实体和对象建立的各种关联和关系在图2中以数据库220示出的社交图内存储和维护。

当成员与经由社交联网系统210可用的各种应用、服务和内容交互时,成员的交互和行为(例如,查看的内容、选择的链接或按钮、响应的消息等)可以被跟踪,并且例如,如在图2中指示的,可以由数据库222记录或存储关于成员的活动和行为的信息。

在一些实施例中,数据库218、220和222可以并入图1中的(多个)数据库126中。然而,其他配置也在本公开的范围内。

虽然未示出,但是在一些实施例中,社交联网系统210提供应用编程接口(api)模块,经由该模块,应用和服务可以访问由社交联网服务提供或维护的各种数据和服务。例如,使用api,应用可能能够请求和/或接收一个或多个推荐。这些应用可以是基于浏览器的应用,或者可以是特定于操作系统的。特别地,一些应用可以在具有移动操作系统的一个或多个移动设备(例如,电话或平板计算设备)上驻留和执行(至少部分地)。此外,虽然在许多情况下,利用api的应用或服务可能是由操作社交联网服务的实体开发和维护的应用和服务,但是除了数据隐私关注问题之外,没有什么能阻止api根据特殊安排被提供给公众或提供给特定第三方,从而使导航建议可用于第三方应用和服务。

虽然本文中将搜索系统216称为在社交联网服务的上下文中使用,但是设想其也可以在任何网站或在线服务的上下文中使用,包括但不限于通用在线搜索引擎。另外,虽然可以在网页的上下文中使用或呈现本公开的特征,但是设想任何用户接口视图(例如,移动设备上或台式机软件上的用户接口)都在本公开的范围内。

在一些示例实施例中,搜索系统216提供创新工具以帮助用户(例如,招募者、招聘经理和公司)搜索并获取组织的职位的候选者。该过程中的一个挑战是将招聘职位的标准转换为搜索查询。执行搜索的用户必须了解职位典型地要求哪些技能,哪些公司可能有这样的候选者和候选者最有可能从哪些学校毕业,以及其他详细信息。此外,知识和信息随时间而变化。因此,通常要求多次尝试以制定良好的查询。为了帮助用户执行搜索,搜索系统216可以提供称为方面(facet)的高级目标标准(例如,技能、学校、公司、头衔等)。查询可以由执行搜索的用户作为自由文本、方面选择(例如,经由对应于方面的可选用户接口元素)或两者的组合来输入。因此,这种查询中的语义解释和分割很重要。例如,在查询“java”或“finance”时,执行搜索的用户可以搜索其头衔包含该单词的候选者或者知道该单词所代表的技能的人。依靠分方面的搜索中的精确术语或属性匹配进行排名是次优的。搜索系统216提供对于匹配和排名问题的解决方案,而不是仅仅关注于查询制定。

在一些示例实施例中,搜索系统216使用潜在语义模型将有噪声的高维查询映射到低维表示,以使匹配问题易于处理。在一些示例实施例中,搜索系统216通过将查询和才能属性投射到共享的低维空间中来扩展具有深层结构的潜在语义模型,在共享的低维空间中,给定查询的才能的相关性容易地作为其之间的距离来计算。在一些示例实施例中,搜索系统216采用这样的架构,其中对查询项目对进行评分的神经网络被拆分成三个语义片段,使得每个片段在具有其自己的特性的单独系统上被评分。另外,在一些示例实施例中,搜索系统216以可缩放的方式(能够对诸如社交联网服务的成员之类的数百万个项目进行评分)使用在线低维向量表示来计算语义相似度(在下游学习中使用,以对模型进行排名),而不会损害系统性能或站点稳定性。

图3示出了根据示例实施例的神经网络的架构300的组件。架构300可以在图2的搜索系统216内实现。在一些示例实施例中,架构300包括:查询系统310,其包括查询神经网络312;项目系统320,其包括项目神经网络320;以及评分系统330,其包括评分神经网络332。在一些示例实施例中,查询神经网络312、项目神经网络322和评分神经网络332分别在单独的物理计算机系统310、320和330上实现,其中单独的物理计算机系统310、320和330中的每一个单独的物理计算机系统具有与其他单独的物理计算机系统分开且不同的其自己的一组一个或多个硬件处理器。

查询神经网络312被配置为基于查询314生成针对查询314的查询向量表示316。在一些示例实施例中,查询314由在线服务的用户的计算设备提交并且包括用户输入的至少一个关键字。在一些示例实施例中,查询314还包括方面数据,例如,一个或多个方面选择。

项目神经网络322被配置为针对存储在在线服务的数据库上的多个项目中的每一个项目,从在线服务的数据库中取回(或以其他方式接收)该项目的项目数据324,以及基于所取回的该项目的项目数据324来生成项目向量表示326。在一些示例实施例中,多个项目包括多个文档。例如,多个项目可以包括使用通用在线搜索引擎可搜索的多个文档。在一些示例实施例中,多个项目包括社交联网服务的多个成员简档,例如,存储在图2中的数据库218中的成员简档。然而,其他类型的项目也在本公开的范围内。

评分神经网络332被配置为针对多个项目中的每一个项目,基于该项目的项目向量表示326和查询向量表示316来生成针对项目与查询的配对的对应分数334。然后,搜索系统216可以使用查询-项目配对的分数334来生成针对查询314的搜索结果,例如,通过基于项目的分数334对项目进行排名,然后基于项目的排名显示项目的至少一部分。

在一些示例实施例中,查询神经网络312、项目神经网络322和评分神经网络332各自包括深度神经网络。在一些示例实施例中,项目神经网络322包括卷积神经网络。然而,设想神经网络312、322和332的其他类型和配置也在本公开的范围内。

特定搜索的问题(例如,由招募者执行的才能搜索)可以如下公式化:给定招募者r进行的查询q,通过学习函数(例如,对查询-成员对进行评分的神经网络)按递减相关顺序对候选成员m1,m2,...,md的列表进行排名。在一些示例实施例中,该模型独立于招募者(r)。在一些示例实施例中,搜索系统216使用逐点模型,其关注于学习对查询与成员(或一些其他类型的项目)之间的相似度进行评分的函数。使用架构300,每个模块的模型复杂性的程度可以由1)实现和服务约束,以及2)由服务级别协议(sla)指定的要求来规定。

其他搜索系统使用的模型的一个缺点是其仅考虑文本数据。然而,在搜索系统216的一些示例实施例中,查询和成员(或一些其他类型的项目)由多个数据源(例如,简档图片、教育、工作经历、技能和更多方面)表示,而不仅是文字。组合不同模态的异构数据的问题增加了排名模型的复杂性。在一些示例实施例中,搜索系统216使用连体网络的后期交叉变体,以允许在要被在线提供的严格的sla内计算分数。

图4示出了根据示例实施例的神经网络的架构300的附加方面。在图4的示例实施例中,架构300的输入是文本和方面属性的组合。查询系统310和项目系统320的神经网络的每个输入层将传入属性/文本(n-gram)从分类特征的列表转换为单个嵌入(例如,经由池化),并且将聚合层堆叠嵌入从多个属性转换为一个向量表示。在一些示例实施例中,每个属性的向量表示426被级联成项目的单个向量表示326。由于项目(例如,成员)臂具有更丰富的输入数据源,因此有更多机会来学习代表性结构。这种直觉经由更深且结构更丰富(即,卷积)的项目臂来表现其自身,该项目臂最终产生项目表示326。查询系统310的较短查询臂利用用户在搜索用户接口中选择的查询文本和方面来产生查询表示316。评分系统330的相似度层(例如,使用完全连接、余弦或任何距离函数)处理查询表示316和项目表示326,以产生捕获两个表示316和326之间的语义相似度的分数324。

在一些示例实施例中,架构300由搜索系统216使用,并且使得搜索系统216能够为每个项目(例如,每个文档)分配诸如用于每个成员简档的成员标识之类的全局唯一标识符(uid),以及同时对离线索引和实时更新进行搜索,并且插入任何相关性函数和算法,使其摆脱使用固定的评分框架。用户可以在关于搜索命中的丰富信息集上设计其自己的相关性函数,包括术语频率、文档频率、匹配的术语以及与搜索命中文档相关联的任何元数据。

在一些示例实施例中,可以将相关性模块插入到搜索系统216的架构300中,以从搜索收集原始结果,并且实现排序或自定义结果过滤、校对等。在一些示例实施例中,搜索系统216可以收集原始搜索结果,收集正向索引,并且提供可插入的评分机制,用户可以将该可插入的评分机制用作供应搜索命中的信息、文档信息(例如,来自正向索引)或任何其他自定义信息(例如,来自正向索引)的数据提供方,并且对数据应用任何相关性函数。

在一些示例实施例中,评分系统330计算包含术语{t1,t2,...}的查询q与具有属性{a1,a2,...}的成员m之间的相似度sim(q,m)。术语和成员属性可以是用户简档的关键字、令牌或属性,例如,标识用户的技能、头衔或公司/学校。在一些示例实施例中,搜索系统216使用潜在表示来计算相似度sim(q,m)。搜索系统216可以学习针对不同类型的实体的表示。例如,搜索系统216可以使用整个查询和整个成员简档的表示。可替代地,搜索系统216可以使用个体查询术语和成员属性的表示。

在一些示例实施例中,搜索系统216使用令牌级别嵌入,使用查询术语(例如,令牌){t1,t2,...}和成员属性(例如,令牌){a1,a2,...}的嵌入向量(例如,潜在表示)来计算查询-成员相似度。令牌嵌入可以用于以下列方式之一计算sim(q,m)。

在第一种方式中,搜索系统216聚合个体查询术语与成员属性之间的相似度sim(ti,ak)。可以将每个相似度分数作为特征添加到线性模型中。这种模型的优点是:(1)简单的产生路径,例如,通过使用包含在线服务中的令牌嵌入的堆外字典(或键-值存储库);以及(2)由于存储的信息处于令牌级别,因此不会丢失用于尾部查询或稀有文档的信息。然而,这种方法的一些缺点是:(1)字典大小有限制,因为存储超过几百mb存在挑战;以及(2)如果查询包含很多术语,并且该成员具有很多属性,那么计算相似度可能非常耗时。

在第二种方式中,搜索系统216使用诸如神经网络之类的非线性函数使用令牌级别嵌入作为特征来得到查询-成员相似度。使用非线性的优点是可以从原始数据中提取更丰富的交互特征集。然而,当一个函数堆叠在网络中的层上时,对该函数进行评分的时延变得昂贵。附加成本来自这样的事实:针对每个查询,需要在运行时对数千个成员进行评分。在一些示例实施例中,搜索系统216在下游(例如,代理)重新排名器中使用该方法,该重新排名器与搜索节点中的主排名器相比具有明显更少的查询-成员对。

在一些示例实施例中,搜索系统216使用文档级别嵌入,取回针对整个查询和成员(例如,文档或其他类型的项目)的表示(例如,嵌入)。当查询分布具有长尾部时,例如,当头部查询服务于在线搜索业务的大部分时,该解决方案特别有用。在这种情形下,搜索系统216可以学习复杂函数来表示查询和成员,并且将得到的查询和成员表示存储在键-值存储库中。在一些示例实施例中,搜索系统216可替代地使用外部键-值存储库来保持成员表示,以便为其他搜索垂直面提供变通方案,并且解决在正向索引中存储这样的密集实值向量的空间限制的问题和时延问题。

然而,一些搜索系统的设计限制搜索节点进行外部服务调用。在一些示例实施例中,搜索系统216使用混合方法。由于针对特定类型的搜索(例如,招募者搜索)的查询分布不具有长尾部,因此在一些示例实施例中,搜索系统216不使用文档级别嵌入来预先计算查询表示。另外,由于需要针对每个查询进行评分的成员的数量可以是十万或更多的数量级,因此在一些示例实施例中,搜索系统216不使用针对成员方的令牌级别表示,这是因为存储器和时延考虑是限制性的。在一些示例实施例中,搜索系统216使用混合方法,使用针对双方中的一方的令牌级别嵌入和针对另一方的文档级别嵌入。

在一些示例实施例中,搜索系统216的架构300采用划分和克服的设计原则。架构300在服务于查询-成员对时可以包括三个主要部分:(1)离线分布式处理,用于处理离线数据并且降低在文档处理和索引准备中在线系统上的负荷;(2)在线查询处理,用于接收搜索请求并且执行对查询的早期评估和处理;以及(3)搜索器——携带索引并且基于处理的查询和先前准备的离线数据执行搜索的分布式平台。在一些示例实施例中,搜索系统216采用该设计原则的模块化,在语义上拆分架构300,使得离线处理对应于项目系统320的项目(例如,成员)神经网络322,在线处理对应于查询系统310的查询神经网络312,并且搜索器对应于评分系统330的交叉网络。该实现方式利用该配对来执行模型的每个片段并且对模型的每个片段进行评分。

在一些示例实施例中,离线分布式组件主要用于项目神经网络322处理。由于成员简档(例如,诸如教育、工作经历、技能和更多方面之类的成员数据)是离线已知的,所以项目神经网络322可以预先计算成员表示,将该得到的向量压缩并存储在搜索器的正向索引中。搜索系统216可以耐受对成员表示的不频繁更新,因为成员简档信息是相对静态的。

在一些示例实施例中,搜索系统216负责处理在线服务的每个搜索请求,并且可以采用表示状态转移(rest)服务。可以即时地评估和处理查询,以提取如文本和搜索方面(例如,技能、头衔、公司等)的三元组之类的查询特征。查询神经网络312可以将其用作输入以产生查询表示作为输出。由于模块可以实时评分并且可能具有严格的sla,因此网络复杂性可能受到评分时间的限制。在一个示例中,假设我们只有一个属性,例如,查询和成员方两者的头衔(t)。随后的所有内容都可以扩展到任何数量和类型的属性。键-值存储库可以用于存储属性、方面向量,例如,针对每个头衔ti一个向量(或者如果我们将原始文本的n-gram视为查询特征,则针对每个n-gram一个向量)。搜索前端可以解析查询(标记的文本查询和所选择的方面)以确定查看者作为目标的所有头衔。可以取回对应于所有作为目标的头衔的向量,并且可以在搜索前端中评估网络的查询臂。然后可以在对搜索后端的调用中将得到的查询表示插入到查询元数据中。虽然评估查询臂可能在计算上是昂贵的(取决于深度),但是在一些示例实施例中,与网络的成员臂不同,这对于搜索请求仅发生一次。在一些示例实施例中,替代解决方案涉及预先计算和存储针对头部查询的查询表示,然后直接取回这些查询表示。

在一些示例实施例中,搜索系统216的架构300提供用于交叉网络的搜索即服务基础设施作为最终评分,例如,用于评分系统330。离线生成的成员表示和rest服务生成的查询表示可以在评估评分器的最终片段的搜索节点上统一。

图5示出了根据示例实施例的使用架构300的搜索基础设施500。在图5中,查询在浏览器/设备510处开始,其中可以在从用户接收查询时进行一些处理。该查询然后移动到web前端520,其中可以进行进一步处理。然后,查询可以前进到后端530,搜索功能的大部分驻留在其中。从后端530返回的结果通过前端520到达浏览器/设备510而发送回用户。

在一些示例实施例中,后端530包括联合器532和多个代理542。联合器532和(多个)代理542都可以接受查询以及元数据,并且将其扇出到多个服务,然后等待来自这些服务的响应,将这些响应组合在一起,并且将这些响应返回到调用者。随着查询继续进行,联合器532可以调用查询重写器以将其接收的查询重写为结构化取回查询。查询重写器还可以利用附加元数据来增强查询。然后,联合器532可以将其输出传递到一个或多个搜索垂直面540。每个搜索垂直面540可以服务于特定种类的实体——例如,成员、公司或工作。

在一些示例实施例中,每个垂直面540中的接收服务是代理542。代理542可以在将其输出传递到搜索器544之前执行附加的垂直面特定的查询重写。代理542可以等待搜索器544返回结果,然后将这些结果合并在一起。该合并过程可以包括基于分数的合并排序,或者可以是执行更复杂合并的重新排名器。

在一些示例实施例中,将合并的结果发送到联合器532,联合器532进而组合(或混合)来自多个垂直面540的结果。混合过程可以涉及一些复杂的相关性算法。然后,联合器532可以将经混合的结果返回到前端520。

联合器532和代理542都可以是提供插入重写器和合并器的能力的同一系统的实例化。查询重写器可以被构建为由联合器532和/或代理542导出的重写器api的插件。查询重写器的工作是获取原始查询和用户元数据,并将其转换为结构化取回查询。另外,可以根据需要丰富元数据以帮助后续阶段中的相关性测量过程。

在一些示例实施例中,每个搜索器544对索引的单个碎片(例如,正向索引)进行操作。每个搜索器544可以从代理542接收重写的查询和元数据,并且从索引取回匹配的实体。然后可以对实体进行评分,并且可以将最高评分实体返回到代理542。在一些示例实施例中,评分器使用输入查询、输入元数据、关于查询如何与实体匹配的细节以及正向索引来确定作为针对查询的结果的实体的重要度。

在一些示例实施例中,后端530(例如,联合器532、代理542和(多个)搜索器544)是自给自足的并且不被允许进行外部服务调用。该设计允许搜索后端530针对一系列集成测试运行,该一系列集成测试在部署之前评估搜索索引和排名模型的质量。这种设计的副作用是它可以防止使用外部键-值存储库来存储预先计算的成员表示。在请求时,一旦成员针对查询q被取回,就可以经由搜索器544中的相似度层来评估每个成员的表示(例如,经由正向索引)以及查询表示(例如,经由对后端的请求),以产生针对每个查询-成员对的分数,然后可以将该分数用作排名模型中的特征。

图6示出了根据示例实施例的搜索基础设施600内的搜索查询的生命周期。在运行时,查询314被输入到搜索系统216中,并且查询处理单元610执行一个或多个处理操作,例如,查询扩展,提取特征,提取方面,以及创建用于查询神经网络310的输入。对于方面中的一些,其向量表示已经离线生成并存储在键-值存储库620上。搜索系统216可以使用存储在键-值存储库620上的(多个)向量表示来取回针对所处理的查询的(多个)向量表示。

在一些示例实施例中,查询网络推断单元630取原始查询314以及来自键-值存储库620的(多个)学习的向量表示作为输入,并且通过查询神经网络310来运行它们以产生查询向量表示。然后,将该查询向量表示发送到联合器532,联合器532将请求拆分开,将请求发送到多个代理542,其中每个代理将该请求拆分开以发送到多个搜索器544。每个搜索器544将其项目向量表示(例如,成员向量表示)中的一些存储在其正向索引640上。所有搜索器544可以仅对不同的一组项目(例如,不同的一组成员)并行地执行相同的操作。每个搜索器544可以通过特征聚合器660运行查询表示和项目表示(例如,成员表示)以及来自其他特征源650的项目的其他特征数据,特征聚合器660可以将它们作为输入馈送到评分神经网络332中,生成针对每个查询-项目对(例如,每个查询-成员对)的相似度分数。搜索器544可以采用排名单元670基于项目(例如,成员)的相似度分数对所有项目进行排名。然后,搜索器544可以将其结果返回到其代理542。代理542跨不同的搜索器544聚合结果,并且将结果(或其一部分)返回到联合器532,联合器532响应于查询314而将结果的特定部分(例如,最高评分结果)返回到搜索前端520以进行显示。

图7是示出根据示例实施例的使用神经网络架构进行搜索的方法700的流程图。方法700可以由处理逻辑执行,处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合。在一种实现方式中,方法700由图2的搜索系统216或者图3-6中的架构或基础设施中的任一个或其任何组合来执行。

在操作710处,针对存储在在线服务的数据库上的多个项目中的每一个项目,项目神经网络322从在线服务的数据库中取回多个项目中的该个项目的项目数据。在操作720处,针对多个项目中的每一个项目,项目神经网络322基于所取回的多个项目中的该个项目的项目数据来生成项目向量表示。在操作730处,查询神经网络312从在线服务的用户的计算设备接收查询,该查询包括至少一个关键字。在操作740处,查询神经网络312基于至少一个关键字来生成针对查询的查询向量表示,查询神经网络与项目神经网络不同。在操作750处,针对多个项目中的每一个项目,评分神经网络332基于多个项目中的该个项目的项目向量表示和查询向量表示,生成针对多个项目中的该个项目与查询的配对的对应分数。在操作760处,搜索系统216的至少一个模块基于多个项目的对应分数对多个项目进行排名。在操作770处,搜索系统216的至少一个模块使得基于对多个项目的排名,多个项目的至少一部分在计算设备上作为针对查询的搜索结果被显示。

设想本公开内描述的其他特征中的任一个可以并入方法700中。

示例移动设备

图8是示出根据示例实施例的移动设备800的框图。移动设备800可以包括处理器802。处理器802可以是适用于移动设备800的各种不同类型的商用处理器中的任何一种(例如,xscale架构微处理器、无互锁流水线级的微处理器(mips)架构处理器或其他类型的处理器)。存储器804(例如,随机存取存储器(ram)、闪速存储器或其他类型的存储器)典型地可由处理器802访问。存储器804可以适于存储操作系统(os)806,以及应用程序808,例如,可以向用户提供基于位置的服务(lbs)的支持移动位置的应用。处理器802可以直接地或经由适当的中间硬件耦合到显示器810和一个或多个输入/输出(i/o)设备812,例如,键盘、触摸板传感器、麦克风等。类似地,在一些实施例中,处理器802可以耦合到与天线816接合的收发器814。收发器814可以被配置为取决于移动设备800的性质而经由天线816发送和接收蜂窝网络信号、无线数据信号或其他类型的信号。此外,在一些配置中,gps接收器818也可以利用天线816来接收gps信号816。

模块、组件和逻辑

本文将特定实施例描述为包括逻辑或多个组件、模块或机制。模块可以构成软件模块(例如,包含(1)在非暂时性机器可读介质上或者(2)在传输信号中的代码)或硬件实现的模块。硬件实现的模块是能够执行特定操作的有形单元,并且可以以特定方式配置或布置。在示例实施例中,一个或多个计算机系统(例如,独立式、客户端或服务器计算机系统)或一个或多个处理器可以由软件(例如,应用或应用部分)配置为操作以执行如本文描述的特定操作的硬件实现的模块。

在各种实施例中,硬件实现的模块可以机械地或电子地实现。例如,硬件实现的模块可以包括永久配置的专用电路或逻辑(例如,作为专用处理器,例如现场可编程门阵列(fpga)或专用集成电路(asic)),用于执行特定操作。硬件实现的模块还可以包括可编程逻辑或电路(例如,如包含在通用处理器或其他可编程处理器内的),其由软件暂时配置用于执行特定操作。应认识到,以专用且永久配置的电路或以暂时配置的电路(例如,由软件配置)机械地实现硬件实现的模块的决定可以由成本和时间考虑驱动。

因此,术语“硬件实现的模块”应被理解为包含有形实体,即,物理构造、永久配置(例如,硬连线)或者暂时或短暂地配置(例如,编程)以便以特定方式操作和/或执行本文描述的特定操作的实体。考虑其中硬件实现的模块被暂时配置(例如,编程)的实施例,不需要在任何一个时刻配置或实例化硬件实现的模块中的每个。例如,在硬件实现的模块包括使用软件配置的通用处理器的情况下,通用处理器可以在不同时间被配置为相应的不同硬件实现的模块。软件可以相应地配置处理器,例如,在一个时刻构成特定的硬件实现的模块,并且在不同的时刻构成不同的硬件实现的模块。

硬件实现的模块可以向其他硬件实现的模块提供信息并从其他硬件实现的模块接收信息。因此,所描述的硬件实现的模块可以被视为通信地耦合。在同时存在多个这种硬件实现的模块的情况下,可以通过连接硬件实现的模块的信号传输(例如,通过适当的电路和总线)来实现通信。在其中在不同时间配置或实例化多个硬件实现的模块的实施例中,可以例如通过在多个硬件实现的模块对其具有访问权的存储器结构中存储和取回信息来实现这些硬件实现的模块之间的通信。例如,一个硬件实现的模块可以执行操作,并且将该操作的输出存储在与其通信地耦合的存储器设备中。然后,另一硬件实现的模块可以稍后访问存储器设备以取回并处理所存储的输出。硬件实现的模块还可以启动与输入设备或输出设备的通信,并且可以在资源(例如,信息的集合)上操作。

本文描述的示例方法的各种操作可以至少部分地由暂时配置(例如,由软件)或永久配置用于执行相关操作的一个或多个处理器来执行。无论是暂时配置还是永久配置,这样的处理器可以构成处理器实现的模块,其操作以执行一个或多个操作或功能。在一些示例实施例中,本文提到的模块可以包括处理器实现的模块。

类似地,本文描述的方法可以至少部分地是处理器实现的。例如,方法的操作中的至少一些操作可以由一个或多个处理器或处理器实现的模块执行。操作中的特定操作的执行可以分布在一个或多个处理器之中,不仅驻留在单个机器内,而且跨多个机器部署。在一些示例实施例中,一个或多个处理器可以位于单个位置(例如,在家庭环境、办公室环境内或作为服务器场),而在其他实施例中,处理器可以跨多个位置分布。

一个或多个处理器还可以操作以支持相关操作在“云计算”环境中或者作为“软件即服务”(saas)的执行。例如,可以通过一组计算机(作为包括处理器的机器的示例)执行操作中的至少一些操作,这些操作可经由网络(例如,互联网)并且经由一个或多个适当的接口(例如,应用编程接口(api))访问。

电子装置和系统

示例实施例可以以数字电子电路实现,或者以计算机硬件、固件、软件或其组合实现。示例实施例可以使用计算机程序产品来实现,例如,有形地包含在信息载体中的计算机程序,例如,包含在机器可读介质中以用于由数据处理装置(例如,可编程处理器、计算机或多台计算机)执行或控制数据处理装置的操作。

计算机程序可以以任何形式的编程语言编写,包括编译语言或解释语言,并且可以以任何形式部署,包括作为独立程序或作为模块、子例程或适合于在计算环境中使用的其他单元。可以部署计算机程序以在一台计算机上或在多台计算机上执行,该多台计算机在一个站点处或者跨多个站点分布并且通过通信网络互连。

在示例实施例中,操作可以由执行计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。方法操作还可以由专用逻辑电路(例如,现场可编程门阵列(fpga)或专用集成电路(asic))执行,并且示例实施例的装置可以实现为这种专用逻辑电路。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且典型地通过通信网络进行交互。客户端和服务器的关系由于计算机程序在相应的计算机上运行并且彼此具有客户端-服务器关系而产生。在部署可编程计算系统的实施例中,应认识到,硬件架构和软件架构两者都值得考虑。具体地,应认识到,对是以永久配置的硬件(例如,asic)、以暂时配置的硬件(例如,软件和可编程处理器的组合)还是以永久配置的硬件和暂时配置的硬件的组合来实现特定功能的选择可能是设计选择。以下陈述了在各种示例实施例中可以部署的硬件(例如,机器)架构和软件架构。

示例机器架构和机器可读介质

图9是根据示例实施例的可以在其上执行本文描述的方法的示例计算机系统900的框图。在替代实施例中,机器作为独立设备操作或者可以连接(例如,联网)到其他机器。在联网部署中,机器可以在服务器-客户端网络环境中以服务器或客户端机器的能力操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web设备、网络路由器、交换机或网桥,或者能够执行(顺序的或其他方式的)指令的任何机器,该指令指定机器要采取的动作。此外,虽然仅示出了单个机器,但是术语“机器”还应被认为包括单独地或联合地执行一组(或多组)指令以执行本文讨论的方法中的任何一种或多种方法的任何机器集合。

示例计算机系统900包括处理器902(例如,中央处理单元(cpu)、图形处理单元(gpu)或两者)、主存储器904和静态存储器906,其经由总线908彼此通信。计算机系统900还可以包括图形显示单元910(例如,液晶显示器(lcd)或阴极射线管(crt))。计算机系统900还包括字母数字输入设备912(例如,键盘或触敏显示屏)、用户接口(ui)导航设备914(例如,鼠标)、存储单元916、信号生成设备918(例如,扬声器)和网络接口设备920。

机器可读介质

存储单元916包括其上存储有一组或多组指令和数据结构(例如,软件)924的机器可读介质922,该一组或多组指令和数据结构体现本文描述的方法或功能中的任何一个或多个或由本文描述的方法或功能中的任何一个或多个使用。指令924还可以在其由计算机系统900执行期间完全或至少部分地驻留在主存储器904内和/或处理器902内,主存储器904和处理器902也构成机器可读介质。

虽然机器可读介质922在示例实施例中被示为单个介质,但是术语“机器可读介质”可以包括单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器),其存储一个或多个指令924或数据结构。术语“机器可读介质”还应被认为包括任何这样的有形介质:能够存储、编码或携带指令(例如,指令924)以供机器执行,并且使机器执行本公开的方法中的任何一种或多种方法,或者能够存储、编码或携带由这些指令使用或与这些指令相关联的数据结构。因此,术语“机器可读介质”应被认为包括但不限于固态存储器以及光学介质和磁性介质。机器可读介质的特定示例包括非易失性存储器,通过示例的方式,包括半导体存储器设备,例如,可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和闪速存储器设备;磁盘,例如,内部硬盘和可移除盘;磁光盘;以及cd-rom和dvd-rom盘。

传输介质

还可以使用传输介质通过通信网络926来发送或接收指令924。可以使用网络接口设备920和多种公知的传输协议(例如,http)中的任何一种来发送指令924。通信网络的示例包括局域网(“lan”)、广域网(“wan”)、互联网、移动电话网络、普通老式电话服务(pots)网络和无线数据网络(例如,wifi网络和wimax网络)。术语“传输介质”应被认为包括能够存储、编码或携带用于由机器执行的指令的任何无形介质,并且包括数字通信信号或模拟通信信号或者用于促进这种软件的通信的其他无形介质。

虽然已经参考特定示例实施例描述了实施例,但是显而易见的是,在不脱离本公开的更宽泛的精神和范围的情况下,可以对这些实施例进行各种修改和改变。因此,说明书和附图应被视为说明性的而非限制意义的。形成本公开的一部分的附图通过说明而非限制的方式示出了其中可以实践主题的特定实施例。所示出的实施例以足够的细节进行描述,以使得本领域技术人员能够实践本文公开的教导。可以利用其他实施例并且从中推导出其他实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑的替换和改变。因此,该具体实施方式不应被认为具有限制意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求赋予的等同物的全部范围来限定。虽然本文已经说明和描述了特定实施例,但是应认识到,被计算以实现相同目的的任何布置可以替换所示出的特定实施例。本公开旨在覆盖各种实施例的任何和所有的改编或变化。在阅读以上说明书后,上述实施例的组合以及本文未具体描述的其他实施例对于本领域技术人员而言将是显而易见的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1