用于职位推荐的具深度和宽度的机器学习模型的制作方法

文档序号:17009604发布日期:2019-03-02 02:11阅读:251来源:国知局
用于职位推荐的具深度和宽度的机器学习模型的制作方法

本公开大体上涉及在推荐对应于计算机网络上职位发布的职位的过程中遭遇到的技术问题。更具体地说,本公开涉及使用用于职位推荐的具深度和宽度的机器学习模型。



背景技术:

因特网的崛起已引起两种不同但相关的现象:社交网络存在感增强,其对应成员简档对大量人员可见;和这些社交网络的使用增加,以执行对已在社交网络上发布或链接到社交网络的职位的搜索。公司在因特网上发布职位发布的流行趋势还已经引起另一中更新的现象:社交网络服务和/或其它服务会在成员并未主动搜索此类列表的情况下尝试向成员推荐职位发布。

已提议用于向成员推荐职位发布的各种解决方案。最近,深度神经网络已在职位发布推荐方面获得成功。深度神经网络结构可有效地产生非线性低维度密集嵌入特征,而不需要许多特征工程工作。这些特征适合于泛化并可极大地减小特征维度,但会遭受过度泛化。

另一解决方案将是使用具有非线性变换特征的通用线性模型。虽然这具有更少过度泛化,但是其依赖于特征工程以产生宽的稀疏特征。特征常常不会捕获成员和职位的语义含义。举例来说,在职称“应用程序开发者”与“软件工程师”之间存在极少余弦类似性,且在现实世界中这两者之间又存在相当大的重叠。此外,稀疏特征在线性模型中并不泛化良好。此外,过多特征会产生高在线计分时延和困难的适配。

所需要的是不依赖于特征工程同时不会引起过度泛化的解决方案。

附图说明

借助于实例而非限制,在附图的各图中说明本技术的一些实施例。

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

图2是绘示与本公开的一些实施例一致的用于产生并提供搜索查询的搜索结果的社交网络服务的功能组件,包含在本文中被称作搜索引擎的数据处理模块的框图。

图3是更详细地说明根据实例实施例的图2的应用程序服务器模块的框图。

图4是说明根据实例实施例的具深度和宽度的机器学习模型的框图。

图5是更详细地说明根据实例实施例的深度神经网络协作式滤波模型的框图。

图6是说明根据实例实施例的由提升决策树模型产生的树的系综的实例的框图。

图7是说明根据实例实施例的用以训练提升决策树模型的迭代方法的流程图。

图8到11是说明根据实例实施例的图7的方法的实例概要的框图。

图12是说明根据实例实施例的关于一个或多个职位发布的信息可显示于来自社交网络服务的“您可能感兴趣的职位”网页上的方式的截图。

图13是说明可以与在本文中描述的各种硬件架构结合使用的代表性软件架构的框图。

图14是说明根据一些实例实施例的能够从机器可读媒体(例如机器可读存储媒体)读取指令并执行本文中论述的方法中的任何一个或多个的机器的组件的框图。

具体实施方式

本公开描述个别地提供各种功能性的方法、系统和计算机程序产品等等。在以下描述中,出于解释的目的,阐述众多具体细节以便提供对本公开的不同实施例的各种方面的透彻理解。然而,所属领域的技术人员将显而易见,可以在没有所有所述具体细节的情况下实践本公开。

在实例实施例中,深度神经网络用以产生一般密集深度特征,且提升树用以在没有额外特征工程的情况下产生稀疏宽特征。相比于单独的深度模型的性能,针对职位发布推荐被特别设计出的此具深度和宽度的机器学习模型提供提高。

图1是说明根据实例实施例客户端-服务器系统100的框图。网络系统102通过网络104(例如因特网或广域网(wideareanetwork,wan))向一个或多个客户端提供服务器侧功能性。举例来说,图1说明在相应客户端机器110和112上执行的网络客户端106(例如浏览器)和编程客户端108。

应用程序编程接口(applicationprogramminginterface,api)服务器114和网络服务器116耦合到一个或多个应用程序服务器118,并分别提供到所述应用程序服务器的编程和网络接口。应用程序服务器118托管一个或多个应用程序120。应用程序服务器118又绘示为耦合到便于对一个或多个数据库126进行访问的一个或多个数据库服务器124。虽然应用程序120在图1中绘示为形成网络系统102的部分,但是应了解,在替代性实施例中,应用程序120可形成与网络系统102分离且不同的服务的部分。

另外,虽然图1中绘示的客户端-服务器系统100使用客户端-服务器架构,但是本公开当然不限于此架构,并可同等良好地应用于例如分布式或对等架构系统中。各种应用程序120还可实施为不一定具有联网能力的独立的软件程序。

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

图1还将在第三方服务器130上执行的第三方应用程序128说明为可通过由api服务器114提供的编程接口对网络系统102进行编程访问。举例来说,利用从网络系统102检索到的信息,第三方应用程序128可支持由第三方代管的网站上的一个或多个特征或功能。举例来说,第三方网站可提供由网络系统102的相关应用程序120支持的一个或多个功能。

在一些实施例中,在本文中提及的任何网站可包括可在多种装置上显现的在线内容,所述装置包含但不限于桌面个人计算机(personalcomputer,pc)、笔记本电脑和移动装置(例如平板电脑、智能电话等等)。在这方面,这些装置中的任一个可由用户使用来使用本公开的特征。在一些实施例中,用户可使用移动装置(客户端机器110、112和第三方服务器130中的任一个可以是移动装置)上的移动app来访问并浏览在线内容,例如本文中所公开的在线内容中的任一个。移动服务器(例如api服务器114)可与移动app和应用程序服务器118通信以便使本公开的特征在移动装置上可用。

在一些实施例中,网络系统102可包括社交网络服务的功能组件。图2是绘示与本公开的一些实施例一致的用于产生并提供搜索查询的搜索结果的社交网络服务的功能组件,包含在本文中被称作搜索引擎216的数据处理模块的框图。在一些实施例中,搜索引擎216可驻留在图1中的应用程序服务器118上。但是,预期其它配置也在本公开的范围内。

如图2中所绘示,前端可包括用户接口模块(例如网络服务器116)212,所述用户接口模块从各种客户端计算装置接收请求并将适当响应传达给请求客户端装置。举例来说,用户接口模块212可接收呈超文本传送协议(hypertexttransferprotocol,http)请求或其它基于网络的api请求形式的请求。另外,可提供成员交互检测模块213以检测成员与不同应用程序120、服务和所呈现内容具有的各种交互。如图2中所绘示,在检测到特定交互之后,成员交互检测模块213即刻在成员活动和行为数据库222中记录交互,包含交互类型和与交互相关的任何元数据。

应用程序逻辑层可包含一个或多个各种应用程序服务器模块214,所述模块结合用户接口模块212产生具有从数据层中的各数据源检索的数据的各种用户界面(例如网页)。在一些实施例中,个别应用程序服务器模块214用以实施与由社交网络服务提供的各种应用程序120和/或服务相关联的功能性。

如图2中所绘示,数据层可包含若干数据库,例如用于存储简档数据的简档数据库218,简档数据包含各种组织(例如公司、学校等等)的成员简档数据和简档数据两者。与一些实施例一致,当人首先注册变成社交网络服务的成员时,将提示人提供一些个人信息,例如其名字、年龄(例如出生日期)、性别、兴趣、联系人信息、家乡、地址、配偶和/或家庭成员名字、教育程度(例如学校、专业、入学考试和/或毕业日期等)、工作经历、技能、职业组织等等。举例来说,此信息存储于简档数据库218中。类似地,当组织的代表首先为组织注册社交网络服务时,可提示所述代表提供关于组织的某些信息。举例来说,此信息可存储于简档数据库218或另一数据库(未绘示)中。在一些实施例中,可(例如在后台或脱机)处理简档数据以产生各种派生简档数据。举例来说,如果成员已经提供关于成员已经在相同组织或不同组织所持有的各种职称以及供职期限的信息,那么此信息可用以推断或得出指示成员的总体资历水平或在特定组织内的资历水平的用户简档属性。在一些实施例中,导入或以其它方式访问来自一个或多个外部托管的数据源的数据可丰富成员和组织两者的简档数据。举例来说,具体地就组织而言,可从一个或多个外部数据源导入财务数据且使其变成组织简档的部分。将在本文中稍后更详细地描述组织数据的此输入和数据的丰富。

一旦注册,那么成员可邀请其它成员或由其它成员邀请,以通过社交网络服务连接。“连接”可构成成员的双边协议,使得两个成员承认连接的建立。类似地,在一些实施例中,成员可选择“关注(follow)”另一名成员。与建立连接大不相同,“关注”另一成员通常是单边操作,且至少在一些实施例中,不需要由正被关注的成员承认或批准。当一名成员关注另一名成员时,正在关注的成员可接收由正被关注的成员发表的或关于由正被关注的成员进行的各种活动的状态更新(例如在活动或内容流中)或其它消息。类似地,当成员关注组织时,所述成员变得有资格接收代表组织发布的消息或状态更新。举例来说,代表成员正在关注的组织发表的消息或状态更新将出现在成员的个人化的通常被称作活动流或内容流的数据馈入中。在任何状况下,在社交图表数据库220中的社交图表内存储并维护成员与其它成员或与其它实体和物体建立的各种关联和关系。

当成员与通过社交网络服务变得可用的各种应用程序120、服务和内容交互时,可跟踪成员的交互和行为(例如查看内容、选择链接或按钮、对消息作出响应等等),且可通过成员活动和行为数据库222记录或存储关于成员的活动和行为的信息,例如如图2中所指示。此记录的活动信息可接着由搜索引擎216使用以确定搜索查询的搜索结果。

在一些实施例中,数据库218、220和222可并入到图1中的数据库126中。但是,其它配置也在本公开的范围内。

虽然未绘示,但是在一些实施例中,社交网络服务系统210提供api模块,应用程序120和服务可通过所述api模块访问由社交网络服务提供或维护的各种数据和服务。举例来说,使用api,应用程序120可以能够请求和/或接收一个或多个导航推荐。此应用程序120可以是基于浏览器的应用程序120,或可以是具体针对操作系统的。具体来说,一些应用程序120可驻留并执行(至少部分地)于具有移动操作系统的一个或多个移动装置(例如电话或平板电脑计算装置)上。此外,虽然在许多情况下充分利用api的应用程序120或服务可以是由操作社交网络服务的实体开发和维护的应用程序120和服务,但正是数据隐私关注防止了api被对公众提供或提供到在特殊布置下的第三方,由此使导览推荐可用于第三方应用程序128和服务。

虽然搜索引擎216在本文中被引用为在社交网络服务的上下文中使用,但是预期其还可在任何网站或在线服务的上下文中使用。此外,虽然本公开的特征在本文中被引用为在网页的上下文中使用或呈现,但是预期任何用户界面视图(例如移动装置或桌面软件上的用户界面)处于本公开的范围内。

在实例实施例中,当索引成员简档时,创建并存储向前搜索索引。搜索引擎216有助于针对社交网络服务内的内容索引和搜索,例如针对数据层中含有的数据或信息索引和搜索,例如简档数据(例如存储在简档数据库218中)社交图表数据(例如存储在社交图表数据库220中)和成员活动和行为数据(例如存储在成员活动和行为数据库222中)以及职位发布。搜索引擎216可收集、剖析和/或存储索引或其它类似结构中的数据,以有助于响应于接收到的对信息的查询识别和检索信息。这可包含但不限于向前搜索索引、反向索引、n个字符列索引等等。

图3是更详细地说明根据实例实施例的图2的应用程序服务器模块214的框图。虽然在多个实施例中,应用程序服务器模块214将含有用以在社交网络系统内执行各种不同动作的许多子组件,但是在图3中,仅描绘与本公开相关的那些组件。应用程序服务器模块214包含职位发布呈现器300。职位发布呈现器300向社交网络服务的成员呈现一个或多个可用职位发布。成员信息录入组件302获得关于社交网络服务的成员的成员信息。这可以若干不同方式执行。在一个实例实施例中,成员信息录入组件302接收在成员登录社交网络服务时获得的成员识别。此成员识别接着用以查询成员简档数据库以获得成员的成员简档。成员简档接着含有成员信息,例如技能、就读学校、学历等等。在另一实例实施例中,将来自成员简档的成员信息发送到成员信息录入组件302而不需要使用成员识别。

成员信息录入组件302将成员信息转发到广义线性混合模型评估组件304,所述评估组件获得一个或多个潜在职位发布以从职位发布数据库306显示并将成员信息和一个或多个潜在职位发布馈送到广义线性混合模型308中,所述广义线性混合模型被设计成基于成员信息而输出一个或多个潜在职位发布中的每一个的预测值。如将稍后更详细地描述,预测值指示成员将申请对应于职位发布的职位的机率。职位发布排名引擎310接着基于预测值而对一个或多个潜在职位发布进行排名。职位发布显示器312接着在用户界面中,例如在社交网络服务的网站或移动应用的“可能感兴趣的职位”屏幕上显示具有最高预测值的n个潜在职位发布。

在实例实施例中,广义线性混合模型308是与宽提升树模型分量组合的深度神经网络协作式滤波模型分量。此新的具深度和宽度的模型可包含职位推荐的一般职位-成员特征匹配和具体成员-职位交互作用两者。依序训练程序可由广义线性混合模型迭代训练器314使用以共同地优化所述两个模型。还呈现了用以产生推荐器系统的非线性密集和稀疏特征以减小特征维度并包含不同非线性方面的新方法。在实例实施例中,深度神经网络协作式滤波模型分量在神经协作式滤波构架中。

图4是说明根据实例实施例的具深度和宽度的机器学习模型400的框图。具深度和宽度的机器学习模型400包含是前馈神经网络的深度神经网络协作式滤波模型402、以及单独的提升决策树模型404。

深度神经网络协作式滤波模型402(深度部分)是深度神经网络,可查看所述深度神经网络以产生模型中的成员与职位之间的深度交互式特征。提升决策树模型404(宽部分)是梯度提升决策树(gradientboostingdecision,gbdt)模型,所述gbdt模型产生基于树的经变换特征。

图5是更详细地说明根据实例实施例的深度神经网络协作式滤波模型402的框图。深度神经网络协作式滤波模型402包括两个身份标识嵌入网络,一个用于成员502a且一个用于职位502b。分别用于成员502a与职位502b的嵌入网络具有相同结构:输入层504取得包含三个分量的稀疏分类特征:名称、技能和公司标识。在输入层504上方是嵌入层506,所述嵌入层是将每个分量投射到密集潜伏向量中的完全连接层。接着成员502a的三个嵌入向量508a、508b、508c和职位502b的三个嵌入向量510a、510b、510c与若干完全连接的隐蔽层512串接且连接。具体地说,每个隐蔽层512可表达为:

其中是层数且是激励函数,所述激励函数在一些实例实施例中是整流后线性单元(rectifiedlinearunit,relu)。是所述层处的(隐藏)向量、权重和偏差。隐藏表示映射到实体表示层514中的新表示中。最后,阿达马积层516对这些新表示执行阿达马积。

提升决策树模型404是通过有效组合经修剪特征来实施分类特征的非线性和元组变换的强有力的方式。提升决策树模型404包含一组一个或多个分类和回归树(classificationandregressiontree,cart),cart也被称为树的系综。每个cart的每个内部节点对应于输入变量。在由从根到叶的路径表示的输入变量的情况下,每个cart的每个叶表示可变变量的值。提升决策树模型404通过训练每个新个例以强调先前误模型化的训练个例来递增地构建树的系综。

图6是说明根据实例实施例的由提升决策树模型404产生的树600的系综的实例的框图。此处,每个个别树602a、602b的输出可被视为分类器中的分类特征。从根节点到叶节点的每个遍历对一系列特征关联进行编码。提升决策树模型404学习并选择特征关联的最有用组合。

存在提取树特征的若干方式。在实例实施例中,可利用k分之1(1-of-k)编码方法。对于提升决策树模型404中的每个树,其可含有最多2n-1个节点。因此,每个树可产生具有维度2n-1的新分类特征。每个节点可表示从根节点到此节点的决策路径,因此我们将每个节点视为特征的一个维度,其表示沿着所述路径的特征选择的非线性组合。在此实例实施例中,仅叶节点可具有含义值1。在一些实例实施例中,保持用于静态计算图表的特征的恒定长度。

提升决策树模型404使用k个相加函数以预测输出:

其中是预测的预测洛吉值,是初始余量,是树预测计分函数,是特征,且是树的总数。

深度神经网络协作式滤波模型402和提升决策树模型404与最终逻辑预测层406链接。

但是,无法共同地训练深度神经网络协作式滤波模型402和提升决策树模型404,这是因为无法以微型批次直接训练提升决策树模型404,微型批次是一种类型的随机梯度下降,其中通过参见少量实例而非整个数据集来估计梯度。但是,因为不存在梯度的概念,所以对于树分裂节点参数,无法通过梯度下降方法训练树。替代地,通过在最大化信息增益的时间挑选最佳分裂节点来充分地训练树。因此,在实例实施例中,深度模型和宽度模型被视作待优化的单独逐块坐标。具体地说,提供用以训练提升决策树模型404的迭代方式。图7是说明根据实例实施例的用以训练提升决策树模型404的迭代方法700的流程图。

首先,在操作702处,训练深度神经网络协作式滤波模型402直到汇聚(稳定损失)为止。在此步骤期间,不初始化提升决策树模型404。因此,在计算图表中,提升决策树模型404将全零特征产生到逻辑预测层406中。

接着,在操作704处,提升决策树模型404产生具有来自深度神经网络协作式滤波模型402的固定深度嵌入特征的树特征。在深度神经网络协作式滤波模型402的洛吉值作为原始余量的情况下,依序提升n个树。可接着通过k分之1编码从叶节点产生树变换特征。

在操作706处,在来自深度神经网络协作式滤波模型402的固定深度阿达马特征和来自提升决策树模型404的树变换特征作为输入的情况下,训练逻辑预测层406以更新预测权重和偏差。在操作708处,测量汇聚准则。如果确定满足汇聚准则,那么方法700结束。否则,方法700前进到操作710,在操作710中通过固定宽交叉特征训练深度神经网络协作式滤波模型402。接着方法700循环回到操作704。

图8到11是说明根据实例实施例的图7的方法700的实例概要的框图。首先参考图8,训练深度神经网络协作式滤波模型800直到汇聚为止,作为初始余量。参考图9,将深度神经网络协作式滤波模型800用作余量来训练第一梯度提升决策树900。参考图10,将深度神经网络协作式滤波模型800和第一决策树900用作余量来训练第二梯度提升决策树1000。参考图11,通过固定深度神经网络协作式滤波模型800、第一梯度提升决策树1300和第二梯度提升决策树1000训练预测层1100。假设尚未满足所述汇聚准则,接着通过固定第一梯度提升决策树900和第二梯度提升决策树1000重新训练深度神经网络协作式滤波模型800。

在实例实施例中,将以上技术应用于社交网络服务中的成员信息(例如成员技能、学历/教育、连接、职业经历等等)和职位发布信息(例如职称、描述、位置、公司)。因此,举例来说,深度神经网络协作式滤波模型800学习对于预测特定成员是否将申请特定职位重要的特征。此外,第一梯度提升决策树900可针对职称建构且第二梯度提升决策树1000可针对成员信息建构。一旦完成上文所描述的训练,那么可向通过预测层1100组合深度神经网络协作式滤波模型800、第一梯度提升决策树900与第二梯度提升决策树1000的广义线性混合模型传递输入成员数据,例如成员简档,在运行时间连同对应于一个或多个职位发布的职称,从而产生对应成员是否将对申请每个职位感兴趣的预测。以那种方式,可为成员呈现成员可能对感兴趣的职位发布而不需要主动搜索此类职位发布。

图12是说明根据实例实施例的关于一个或多个职位发布1200a-1200h的信息可显示于来自社交网络服务的“您可能感兴趣的职位”网页1202上的方式的截图。

模块、组件和逻辑

本文中将某些实施例描述为包括逻辑或数个组件、模块或机构。模块可构成软件模块(例如机器可读媒体上体现的代码)或硬件模块。“硬件模块”是能够执行特定操作并可以某一物理方式配置或布置的有形单元。在各种实例实施例中,一个或多个计算机系统(例如独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件模块(例如处理器或处理器群组)可通过软件(例如应用程序或应用程序部分)配置为操作以执行如本文所描述的某些操作的硬件模块。

在一些实施例中,可以按机械方式、电子方式或其任何合适组合实施硬件模块。举例来说,硬件模块可以包含永久地配置成执行特定操作的专用电路或逻辑。举例来说,硬件模块可以是专用处理器,例如现场可编程门阵列(field-programmablegatearray,fpga)或专用集成电路(application-specificintegratedcircuit,asic)。硬件模块还可以包含由软件暂时地配置成执行特定操作的可编程逻辑或电路。举例来说,硬件模块可以包含由通用处理器或其它可编程处理器执行的软件。一旦通过此类软件配置,那么硬件模块编程被特别地调整以执行所配置功能的具体机器(或机器的具体组件),并不再是通用处理器。应了解,可以由成本和时间考虑因素驱动以机械方式、在专用且永久性地配置的电路中或在暂时性地配置的电路(例如由软件配置)中实施硬件模块的决策。

因此,短语“硬件模块”应理解为涵盖有形实体,即以物理方式建构、永久配置(例如固线式)或暂时配置(例如编程)从而以某一方式操作或执行本文中所描述的特定操作的实体。如本文中所使用,“硬件实施模块”是指硬件模块。考虑到其中硬件模块进行暂时性配置(例如编程)的实施例,无需在任一时刻处配置或实例化硬件模块中的每一个。举例而言,在硬件模块包含通过软件配置成变成专用处理器的通用处理器的情况下,通用处理器可在不同时间处被配置成分别不同的专用处理器(例如包含不同硬件模块)。软件因此对一个或多个特定处理器进行配置,例如以在时间的一个实例处构成特定硬件模块且在时间的不同实例处构成不同硬件模块。

硬件模块可将信息提供到其它硬件模块且从其它硬件模块接收信息。因此,可以将所描述硬件模块视为以通信方式耦合。当多个硬件模块同时存在时,可通过信号发射(例如通过适当的电路和总线)实现硬件模块中的两个或更多个之间或当中的通信。在在不同时间处配置或具现化多个硬件模块的实施例中,可例如通过存储并恢复多个硬件模块已访问的存储器结构中的信息而实现此等硬件模块之间或当中的通信。例如一个硬件模块可以执行一个操作且将所述操作的输出存储在存储器装置中,所述硬件模块以通信方式耦合到所述存储器装置。接着,另一硬件模块可以随后访问存储器装置以检索和处理所存储输出。硬件模块还可以通过输入或输出装置启动通信,并可以对资源(例如信息的集合)进行操作。

本文中所描述的实例方法的各种操作可至少部分地由暂时配置(例如通过软件)或永久地配置成执行相关操作的一个或多个处理器执行。无论暂时还是永久地配置,此类处理器都可以构成操作以执行本文中所描述的一个或多个操作或功能的处理器实施模块。如本文中所使用,“处理器实施模块”是指使用一个或多个处理器实施的硬件模块。

类似地,本文所描述的方法可最少部分地是处理器实施的,一个或多个特定处理器是硬件的实例。举例来说,方法的操作中的至少一些可以由一个或多个处理器或处理器实施模块执行。此外,一个或多个处理器还可操作以支持“云计算”环境或如“软件即服务”(softwareasaservice,saas)中的相关操作的性能。举例来说,所述操作中的至少一些可由计算机的群组(作为机器的实例,包含处理器)执行,这些操作可通过网络(例如因特网)和通过一个或多个适当的接口(例如api)访问。

操作的特定性能可以分布在所述处理器当中,不仅驻存在单一机器内,而且还跨越多个机器部署。在一些实例实施例中,处理器或处理器实施模块可定位于单个地理位置中(例如家庭环境、办公室环境或服务器集群内)。在其它实例实施例中,处理器或处理器实施的模块可以跨越多个地理位置分布。

机器和软件架构

在一些实施例中,在机器和相关联软件架构的上下文中实施结合图1到12描述的模块、方法、应用程序等等。以下章节描述适合与所公开实施例一起使用的代表性软件架构和机器(例如硬件)架构。

软件架构与硬件架构结合使用以产生被调整成适于特定目的的装置和机器。举例来说,与特定软件架构耦合的特定硬件架构将产生移动装置,例如移动电话、平板电脑装置等等。略微不同的硬件和软件架构可产生用于“物联网”中的智能装置,而又一组合产生用于云端计算架构内的服务器计算机。并未在此处呈现此类软件与硬件架构的所有组合,这是因为所属领域的技术人员可易于理解如何在与在本文中含有的公开内容不同的上下文中实施本发明主题。

软件架构

图13是说明可以与在本文中描述的各种硬件架构结合使用的代表性软件架构1302的框图1300。图13仅仅是软件架构的非限制性实例,且应了解,许多其它架构可被实施以促进本文中所描述的功能性。软件架构1302可在例如图14的机器1400等硬件上执行,所述机器包含处理器1410、存储器/存储中之1430和i/o组件1450等等。代表性硬件层1400被说明并可表示例如图14的机器1400。代表性硬件层1400包括一个或多个处理器1410。可执行指令表示软件架构1302的可执行指令,包含图1到12的方法、模块等的实施方案。硬件层1400还包含也具有可执行指令的存储器/存储装置1430。

在图13的实例架构中,软件架构1302可概念化为层堆叠,其中每一层提供特定功能性。举例来说,软件架构1302可包含层,例如操作系统1304、库1306、构架/中间件1308和应用程序1310。以操作方式,层内的应用程序1310和/或其它组件可通过软件堆叠调用api调用1312,并响应于api调用1312而接收说明为消息1314的响应、返回值等等。所说明层在本质上是代表性的且并非所有软件架构具有所有层。举例来说,一些移动或专用操作系统可能不提供一层构架/中间件1308,而其它移动或专用操作系统可提供此层。其它软件架构可包含额外或不同层。

操作系统1304可管理硬件资源并提供常见服务。操作系统1304可包含例如核心程序1320、服务1322和驱动程序1324。核心程序1320可充当硬件与其它软件层之间的抽象层。举例来说,核心程序1320可负责存储器管理、处理器管理(例如调度)、组件管理、联网、安全性设置等。服务1322可为其它软件层提供其它通用服务。驱动程序1324可负责控制下伏硬件或与下伏硬件介接。举例来说,取决于硬件配置,驱动程序1324可包含显示器驱动器、相机驱动器、bluetooth®驱动器、快闪存储器驱动器、串行通信驱动器(例如通用串行总线(universalserialbus,usb)驱动器)、wi-fi®驱动器、音频驱动器、功率管理驱动器等。

库1306可提供可由应用程序1310和/或其它组件和/或层利用的通用基础结构。库1306通常提供功能性,所述功能性允许其它软件模块以比通过与下伏操作系统1304功能性(例如核心程序1320、服务1322和/或驱动器1324)直接介接更容易的方式执行任务。库1306可包含可提供函数的系统库1330(例如c标准库),所述函数例如是存储器分配函数、字符串处理函数、数学函数等。另外,库1306可包含api库1332,例如媒体库(例如用以支持各种媒体格式的呈现和处理的库,所述各种媒体格式例如mpeg4、h.264、mp3、aac、amr、jpg、png)、图形库(例如可用于在显示器上呈现2d和3d图形内容的opengl构架)、数据库的库(例如可提供各种关系型数据库函数的sqlite)、万维网库(例如可提供网络浏览功能性的webkit)等。库1306还可包含广泛多种其它库1334以向应用程序1310和其它软件组件/模块提供许多其它api。

构架1308(有时还被称作中间件)提供可由应用程序1310和/或其它软件组件/模块利用的更高水平的通用基础结构。举例来说,构架1308可提供各种图形用户界面(graphicuserinterface,gui)功能、高级资源管理、高级位置服务等。构架1308可提供可由应用程序1310和/或其它软件组件/模块利用的广泛范围的其它api,其中一些api可能是特定操作系统1304或平台所特有的。

应用程序1310包含第三方应用程序1366。代表性内置应用程序的实例可包含但不限于家庭应用程序1350、联系人应用程序1352、浏览器应用程序1354、图书阅读器应用程序1356、位置应用程序1358、媒体应用程序1360、信息传送应用程序1362和/或游戏应用程序1364。第三方应用程序1366可包含所述内置应用程序中的任一个以及广泛分类的其它应用程序。在具体实例中,第三方应用程序1366(例如使用android™或ios™软件开发工具包(softwaredevelopmentkit,sdk)通过除特定平台的供应商外的实体建立的应用程序)可以是在例如ios™、android™、windows®电话或其它移动操作系统等移动操作系统上运行的移动软件。在此实例中,第三方应用程序1366可调用由例如操作系统1304等移动操作系统提供的api调用1312,以促进本文中所描述的功能性。

应用程序1310可利用内置操作系统1304功能(例如核心程序1320、服务1322和驱动程序1324)、库1306(例如系统库1330、api库1332和其它库1334)和构架/中间件1308以产生用户界面来与系统的用户交互。替代地或另外,在一些系统中,与用户的交互可通过呈现层发生。在这些系统中,应用程序/模块“逻辑”可与应用程序/模块的与用户交互的方面分离。

实例机器架构和机器可读媒体

图14是说明根据一些实例实施例的能够从机器可读媒体(例如机器可读存储媒体)读取指令并执行本文中论述的方法中的任何一个或多个的机器1400的组件的框图。具体地说,图14绘示成计算机系统的实例形式的机器1400的图形表示,在所述计算机系统内可执行用于使得机器1400执行本文中论述的方法中的任何一个或多个的指令1416(例如软件、程序、应用程序、小程序、app或其它可执行码)指令1416将一般的非编程机器转换成经编程以按所描述方式执行所描述和说明的功能的特定机器。在替代性实施例中,机器1400充当独立装置或可耦合(例如联网)到其它机器。在联网部署中,机器1400可操作于服务器客户端网络环境中的服务器机器或客户端机器的负载中,或操作为点对点(或分布式)网络环境中的对等机器。机器1400可包括但不限于服务器计算机、客户端计算机、个人计算机(personalcomputer,pc)、平板电脑、笔记本电脑、上网本、机顶盒(set-topbox,stb)、个人数字助理(personaldigitalassistant,pda)、娱乐媒体系统、蜂巢式电话、智能电话、移动装置、可佩戴式装置(例如智能手表)、智能家庭装置(例如智能电器)、其它智能装置、网络电器、网络路由器、网络交换机、网桥、或能够依序或以其它方式执行指定应由机器1400采取的动作的指令1416的任何机器。此外,虽然仅说明单个机器1400,但是还应采用术语“机器”以包含机器1400的集合,所述机器集合个别地或共同地执行指令1416以执行本文中所论述的方法中的任何一个或多个。

机器1400可包含可被配置成例如通过总线1402彼此通信的处理器1410、存储器/存储装置1430和i/o组件1450。在实例实施例中,处理器1410(例如中央处理单元(centralprocessingunit,cpu)、精简指令集计算(reducedinstructionsetcomputing,risc)处理器、复杂指令集计算(complexinstructionsetcomputing,cisc)处理器、图形处理单元(graphicsprocessingunit,gpu)、数字信号处理器(digitalsignalprocessor,dsp)、asic、射频集成电路(reducedinstructionsetcomputing,rfic)、另一处理器或其任何适合的组合可包含例如可执行指令1416的处理器1412和处理器1414。术语「处理器」意图包含可包括可同时执行指令1416的两个或更多个非相依处理器(有时被称作“核心”)的多核处理器。尽管图14绘示多个处理器1410,但机器1400可包含具有单一核心的单一处理器1412、具有多个核心的单一处理器1412(例如多核处理器1412)、具有单一核心的多个处理器1410、具有多个核心的多个处理器1410,或其任何组合。

存储器/存储装置1430可包含例如主存储器等存储器1432、或例如静态存储器1434等其它存储器存储、和存储单元1436,前述各项例如通过总线1402各自对处理器1410可访问。存储单元1436和存储器1432存储体现本文中所描述的方法或功能中的任何一个或多个的指令1416。在其由机器1400执行期间,指令1416还可完全或部分地驻留于存储器1432内、存储单元1436内、处理器1410中的至少一个内(例如处理器的高速缓存存储器内)或其任何合适的组合。因此,存储器1432、存储单元1436和处理器1410的存储器是机器可读媒体1438的实例。

如本文所使用,“机器可读媒体”意味着能够暂时或永久存储指令1416和数据的装置,并可包含但不限于随机存取存储器(random-accessmemory,ram)、只读存储器(read-onlymemory,rom)、缓冲存储器、快闪存储器、光学媒体、磁性媒体、高速缓存存储器、其它类型的存储装置(例如可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom))、和/或其任何合适组合。术语“机器可读媒体”应被认为包含能够存储指令1416的单个媒体或多个媒体(例如集中或分布式数据库,和/或相关联高速缓存存储器和服务器)。术语“机器可读媒体”还应被视为包含能够存储用于由机器(例如机器1400)执行的指令1416,使得所述指令在由所述机器的一个或多个处理器(例如处理器1410)执行时致使所述机器执行本文中所描述的方法中的任何一个或多个的任何媒体或多个媒体的组合。因此,“机器可读媒体”是指单一存储设备或装置,以及包含多个存储设备或装置的“基于云的”存储系统或存储网络。术语“机器可读媒体”排除信号本身。

i/o组件1450可包含广泛多种组件以接收输入、提供输出、产生输出、发射信息、交换信息、撷取测量值等。包含于特定机器中的特定i/o组件1450将取决于机器的类型。举例来说,例如移动电话等便携式机器将可能包含触摸输入装置或其它此类输入机构,而无头式服务器机器将有可能不包含此触摸输入装置。应了解,i/o组件1450可包含图14中未绘示的许多其它组件。i/o组件1450根据仅用于简化以下论述的功能性分组,且分组决不是限制性的。在各种实例实施例中,i/o组件1450可包含输出组件1452和输入组件1454。输出组件1452可包含视觉组件(例如显示器,如等离子体显示面板(plasmadisplaypanel,pdp)、发光二极管(light-emittingdiode,led)显示器、液晶显示器(liquidcrystaldisplay,lcd)、投影仪或阴极射线管(cathoderaytube,crt))、声学组件(例如扬声器)、触觉组件(例如振动式发动机、电阻机构)、其它信号生成器等。输入组件1454可包含字母数字输入组件(例如键盘、被配置成接收字母数字输入的触摸屏、光学键盘或其它字母数字输入组件)、基于点的输入组件(例如鼠标、触控板、轨迹球、操纵杆、运动传感器或另一指向器械)、触感输入组件(例如物理按钮、提供触摸或触控手势的位置和/或力的触摸屏,或其它触觉输入组件)、音频输入组件(例如麦克风)等等。

在其它实例实施例中,i/o组件1450可包含生物识别组件1456、运动组件1458、环境组件1460或位置组件1462等大量的其它组件。举例来说,生物识别组件1456可包含用以进行以下各项的组件:检测表达(例如手部表达、面部表达、声音表达、身体姿势或眼部跟踪),测量生物信号(例如血压、心率、体温、出汗或脑波),识别人(例如语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等。运动组件1458可包含加速度传感器组件(例如加速度计)、重力传感器组件、旋转传感器组件(例如陀螺仪)等等。环境组件1460可包含例如照明传感器组件(例如光度计)、温度传感器组件(例如检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如气压计)、声学传感器组件(例如检测背景噪声的一个或多个麦克风)、接近度传感器组件(例如检测附近对象的红外传感器)、气体传感器(例如用以检测有害气体浓度以获得安全或用以测量大气中的污染物的气体检测传感器)或可提供对应于周围物理环境的指示、测量值或信号的其它组件。位置组件1462可包含位置传感器组件(例如全球定位系统(globalpositionsystem,gps)接收器组件)、高度传感器组件(例如检测可据以导出高度的气压的高度计或气压计)、定向传感器组件(例如磁力计)等。

可使用广泛多种技术来实施通信。i/o组件1450可包含可操作以分别通过耦合件1482和耦合件1472将机器1400耦合到网络1480或装置1470的通信组件1464。举例来说,通信组件1464可包含网络接口组件或用以与网络1480介接的其它合适的装置。在其它实例中,通信组件1464可包含有线通信组件、无线通信组件、蜂巢式通信组件、近场通信(near-fieldcommunication,nfc)组件、bluetooth®组件(例如bluetooth®低能量)、wi-fi®组件和其它通信组件以通过其它模式提供通信。装置1470可以是另一机器或广泛多种外围装置(例如通过usb耦合的周边装置)中的任一个。

此外,通信组件1464可检测标识符或包含能够操作来检测标识符的组件。举例来说,通信组件1464可包含射频识别(radiofrequencyidentification,rfid)标签阅读器组件、nfc智能标签检测组件、光学阅读器组件(例如用以检测例如通用产品码(universalproductcode,upc)条形码等一维条形码,例如快速响应(quickresponse,qr)码、aztec码、数据矩阵、dataglyph、maxicode、pdf47、超码、uccrss-2d条形码等多维条形码以及其它光码的光学传感器)或声学检测组件(例如用以识别带标记的音频信号的麦克风)。另外,可通过通信组件1464导出各种信息,例如通过因特网协议(internetprotocol,ip)地理位置的位置、通过wi-fi®信号三角测量的位置、通过检测可指示特定位置的nfc信标信号的位置等等。

发射媒体

在各种实例实施例中,网络1480的一个或多个部分可以是临时网络、企业内部网、外联网、虚拟专用网络(virtualprivatenetwork,vpn)、局域网(localareanetwork,lan)、无线lan(wirelesslan,wlan)、广域网(wan)、无线wan(wirelesswan,wwan)、城域网(metropolitanareanetwork,man)、因特网、因特网的一部分、公共交换电话网络(publicswitchedtelephonenetwork,pstn)的一部分、传统电话业务(plainoldtelephoneservice,pots)网络、蜂窝式电话网络、无线网络、wi-fi®网络、另一种类型的网络、或此类网络中的两个或多于两个的组合。举例来说,网络1480或1480的一部分可包含无线或蜂窝式网络,且耦合件1482可以是码分多址(codedivisionmultipleaccess,cdma)连接、全球移动通信系统(globalsystemformobilecommunications,gsm)连接、或另一种类型的蜂窝式或无线耦合件。在此实例中,耦合件1482可实施各种类型的数据传输技术中的任一个,所述数据传输技术例如单载波无线发射技术(singlecarrierradiotransmissiontechnology,1xrtt)、演进数据优化(evolution-dataoptimized,evdo)技术、通用包无线电服务(generalpacketradioservice,gprs)技术、gsm演进增强数据速率(enhanceddataratesforgsmevolution,edge)技术、包含3g的第三代合作伙伴计划(thirdgenerationpartnershipproject,3gpp)、第四代无线(fourthgenerationwireless,4g)网络、全球移动电信系统(universalmobiletelecommunicationssystem,umts)、高速分组接入(high-speedpacketaccess,hspa)、全球微波接入互操作性(worldwideinteroperabilityformicrowaveaccess,wimax)、长期演进(long-termevolution,lte)标准,由各种标准设定组织、其它长程协议或其它数据传输技术定义的其它标准。

可使用发射媒体通过网络接口装置(例如包含于通信组件1464)中的网络接口组件和利用数个众所周知的传送协议(例如超文本传送协议(http))中的任一个来通过网络1480传输或接收指令1416。类似地,可使用发射媒体通过到装置1470的耦合件1472(例如点对点耦合件)来发射或接收指令1416。术语“发射媒体”应被视为包含能够存储、编码或载送指令1416以由机器1400执行的任何无形媒体,并包含数字或模拟通信信号或用以促进此类软件的通信的其它无形媒体。

语言

在整个本说明书中,多个实例可实施描述为单一实例的组件、操作或结构。尽管将一个或多个方法的个别操作说明且描述为单独的操作,但可以同时执行个别操作中的一个或多个,且并不要求以所说明的次序执行操作。呈现为实例配置中的单独组件的结构和功能性可以实施为组合式结构或组件。类似地,呈现为单个组件的结构和功能性可实施为单独组件。这些以及其它变化、修改、添加和改进属于本文中的主题的范围内。

尽管已经参考具体实例实施例描述本发明主题的概要,但可在不脱离本公开的实施例的更广更广的情况下对这些实施例进行各种修改和变更。仅为方便起见,且在不希望自愿地将本申请的范围限制于任何单个公开内容或发明概念的情况下(如果实际上公开多于一个),本发明主题的此类实施例在本文中可单独地或共同地由术语“本发明”提及。

足够详细地描述本文中所说明的实施例以使得所属领域的技术人员能够实践所揭示的教示。可以使用其它实施例且从本文中导出其它实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替代和改变。因此,详细描述不应视为限制性意义,且各种实施例的范围仅通过所附权利要求书连同此类权利要求书授权的等效物的完整范围界定。

如本文中所使用,术语“或”可在包括性或独占式意义上解释。此外,针对本文中描述为单个个例的资源、操作或结构可以提供多个个例。另外,各种资源、操作、模块、引擎和数据存储装置之间的边界是略微任意的,且在特定说明性配置的上下文中说明特定操作。功能性的其它分配可以设想出且可以落入本公开的各种实施例的范围内。一般来说,呈现为实例配置中的单独资源的结构和功能性可以实施为组合式结构或资源。类似地,呈现为单个资源的结构和功能性可实施为单独资源。这些和其它变化、修改、添加和改进落入如由所附权利要求书表示的本公开的实施例的范围内。因此,应在说明性意义上而非限制性意义上看待说明书和附图。

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