使用异构社交网络的图形框架的制作方法

文档序号:16367407发布日期:2018-12-22 08:30阅读:229来源:国知局
使用异构社交网络的图形框架的制作方法

本国际申请要求2016年2月23日提交的题为“graphframeworkusingheterogeneoussocialnetworks”的美国专利申请序列号15/051,579的优先权,其全部内容通过引用整体并入本文。

本公开总体上涉及用于解决在电子通信中的技术挑战的计算机技术。更具体地,本公开涉及在线网络成员的通信回复分数的计算。

背景技术

互联网已经引起了两个迥然不同的现象:社交网络的存在和对于大量人可见的其相对应的成员简档在增长,以及在线企业交易在增长。这些在线企业交易不仅包括消费者购买(企业对消费者),而且包括企业购买(企业对企业)。对于企业对企业交易,对涉及那些公司的事件执行准确预测可能具有挑战性。这些问题被称为公司级预测问题。例如,第一企业可以是第二企业的重购客户,但可能难以预测第一企业是否可以选择停止从第二企业购买(称为“流失”)。尽管事实上这些公司级预测问题本质上通常是二元的(即,预测的结果为是或否)。

传统上,使用机器学习技术解决公司级预测问题。可以将传统分类器应用于使用公司级特征的决策树。该方法的问题在于结果很大程度上取决于训练数据的数量。如果尝试针对一百万家企业的预测,我们所知道的已经流失(并且可以被标记为“流失者”)的仅一千家企业的数据训练导致不准确的预测。因此,机器学习技术至少在训练数据也不可扩展的范围内是不可扩展的。附加地,在这些技术中使用的特征与被检查的公司无关。这忽略了与其他公司的关系以及雇员之间的关系。

附图说明

在附图的图中,通过示例而非限制的方式图示出了本技术的一些实施例。

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

图2是示出符合本公开的一些实施例的社交联网服务的功能组件的框图,该社交联网服务包括在本文中被称为搜索引擎的数据处理模块,用于生成和提供搜索查询的搜索结果。

图3是更详细地图示出图2的应用服务器模块的框图。

图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进而被示为耦合到促进访问一个或多个数据库126的一个或多个数据库服务器124。尽管图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的(多个)相关应用120支持的一个或多个功能。

在一些实施例中,本文涉及的任何网站可以包括可在多种设备上显现的在线内容,所述设备包括但不限于台式个人计算机(pc)、膝上型设备和移动设备(例如,平板计算机、智能手机等)。为此,用户可以采用这些设备中的任何设备来使用本公开的特征。在一些实施例中,用户可以使用移动设备(机器110、112和第三方服务器130中的任何一个可以是移动设备)上的移动小应用(app)来访问和浏览在线内容,诸如本文公开的在线内容中的任何一个。移动服务器(例如,api服务器114)可以与移动app和(多个)应用服务器118进行通信,以便使本公开的特征在移动设备上可用。

在一些实施例中,联网系统102可以包括社交联网服务的功能组件。图2是示出符合本公开的一些实施例的社交联网服务的功能组件的框图,该社交联网服务包括在本文中被称为搜索引擎216的数据处理模块,用于生成和提供搜索查询的搜索结果。在一些实施例中,搜索引擎216可以驻留在图1中的(多个)应用服务器118上。然而,设想到,其他配置也在本公开的范围内。

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

应用逻辑层可以包括一个或多个各种应用服务器模块214,其与(多个)用户接口模块212结合生成具有从数据层中的各种数据源检索的数据的各种用户接口(例如,web页面)。在一些实施例中,独立的应用服务器模块214被用于实现与由社交联网服务提供的各种应用120和/或服务相关联的功能性。

如图2中所示,数据层可以包括若干数据库,诸如用于存储简档数据的简档数据库218,所述简档数据包括各种组织(例如公司、学校等)的简档数据和成员简档数据两者。与一些实施例一致,当一个人初始地注册成为社交联网服务的成员时,将提示这个人提供一些个人信息,诸如他或她的姓名、年龄(例如出生日期)、性别、兴趣、联系信息、家乡、地址、配偶和/或家庭成员的姓名、教育背景(例如学校、专业、入学和/或毕业日期等)、工作经历、技能、专业机构等。例如,该信息被存储在简档数据库218中。一旦注册,成员可以邀请其他成员,或由其他成员邀请,以经由社交联网服务连接。“连接”可以由成员构建双边协定,使得两个成员都确认连接的建立。类似地,在一些实施例中,成员可以选择“关注”另一个成员。与建立连接相反,“关注”另一个成员的概念典型地是单边操作,并且至少在一些实施例中,不要求由正被关注的成员进行确认或批准。当一个成员关注另一个成员时,正关注的成员可以接收到由被关注的成员发布的或与被关注的成员进行的各种活动相关的状态更新(例如,在活动或内容流中)或其他消息。类似地,当成员关注组织时,该成员变得有资格接收代表组织发布的消息或状态更新。比如,代表成员所关注的组织发布的消息或状态更新将出现在通常被称为活动流或内容流的成员的个性化数据馈送中。在任何情况下,成员与其他成员或与其他实体和对象建立的各种关联和关系被存储和维护在社交图数据库220中的社交图中。

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

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

尽管未示出,但在一些实施例中,社交联网服务系统210提供api模块,应用120和服务可以通过该api模块访问由社交联网服务提供或维护的各种数据和服务。例如,使用api,应用可能能够请求和/或接收一个或多个导航推荐。这样的应用120可以是基于浏览器的应用120,或者可以是特定于操作系统的。具体而言,一些应用120可以驻留并且(至少部分地)在具有移动操作系统的一个或多个移动设备(例如,电话或平板计算设备)上执行。此外,虽然在许多情况下,利用api的应用120或服务可以是由运营社交联网服务的实体开发和维护的应用120和服务,但除了数据隐私的忧虑之外,没有其他任何方面阻止将api提供给公众或在特殊安排下向某些第三方提供,从而使导航推荐可用于第三方应用128和服务。

尽管搜索引擎216在本文中被称为在社交联网服务的上下文中使用,但应设想到,也可以在任何网站或在线服务的上下文中被采用。附加地,尽管本公开的特征在本文中被称为在web页面的上下文中被使用或呈现,但应设想到,任何用户接口视图(例如,移动设备上或桌面软件上的用户接口)都在本公开的范围内。

在示例实施例中,当成员简档被索引时,创建并存储正向搜索索引。搜索引擎216促进索引和搜索在社交联网服务内的内容,诸如索引和搜索在数据层中包含的数据或信息,诸如简档数据(存储在例如简档数据库218中)、社交图数据(存储在例如社交图数据库220中)以及成员活动和行为数据(存储在例如成员活动和行为数据库222中)。搜索引擎216可以收集、解析和/或存储在索引或其他类似结构中的数据,以便促进响应于接收到的对信息的查询来标识和检索信息。这可以包括但不限于正向搜索索引、倒排索引、n-gram索引等。

图3是更详细地图示出图2的应用服务器模块214的框图。虽然在许多实施例中,应用服务器模块214将包含用于在社交联网系统内执行各种不同动作的许多子组件,但在图3中仅仅描绘了与本公开相关的那些组件。这里,摄取平台300从简档数据库218、社交图数据库220以及成员活动和行为数据库222获得与由用户接口服务器组件302标识的预测问题相关的信息。用户接口服务器组件302与位于客户端设备306上的用户接口客户端组件304通信,以获得关于预测问题的信息。然后将该信息提供给摄取平台300,摄取平台300使用该信息从数据库218、220、222获得相关信息。然后将该数据库信息传递给预测发生器308。用户接口服务器组件302还将预测问题信息传递给预测发生器308。因此,预测发生器308具有它可以从数据库218、220、222获得的数据和预测问题信息,以执行与构造和使用异构图形框架解决预测问题相关的各种操作。

图4是图示出根据示例实施例的使用社交网络信息构造异构图以便解决预测问题的方法400的流程图。在操作402,根据来自数据库218、220、222的社交网络信息创建节点的异构网络。节点的异构网络包括多个不同类型的节点和多个不同类型的边,因此在相同类型的节点之间可能创建多个不同类型的路径。

图5是图示出根据示例实施例的针对给定问题创建的示例异构网络500的图。异构网络500包括公司节点,包括公司502a、502b、502c;用户节点,包括用户504a、504b、504c;职位节点,包括软件工程师506a和产品经理506b;资历节点,包括初级508a和高级508b;以及行业节点,包括互联网服务510a和金融510c。节点之间的连接(有时称为边)表示节点之间的某种关系。该图中的连接使用不同的样式描绘,以表示不同类型的连接。例如,连接512a指示用户504a具有软件工程师506a的职位并且可以被称为职位连接。连接512b指示用户504b也具有软件工程师506a的职位,并且连接512c指示用户504c具有产品经理506b的职位。连接514a指示用户504a是公司502a的雇员,并且可以被称为雇佣边。连接514b指示用户504b是公司502b的雇员,并且连接514c指示用户504c是公司502c的雇员。连接516a指示用户504a具有与用户504b的社交联网关系,并且因此可以被称为社交连接边。连接516b指示用户504c具有与用户504b的社交联网关系。连接518a可以指示用户504b具有“高级”508b的资历,并且因此可以被称为资历边。连接518b可以指示用户504c具有“高级”508b的资历并且连接518c可以指示用户504a具有“初级”508a的资历。连接520a可以指示用户504c处于“金融”510c的行业中,并且因此可以被称为行业边。连接520b和520c可以分别指示用户504a和504b处于互联网服务510a的行业中。因此,该图描绘了在节点之间具有五种不同类型的连接的图,每种类型的连接意味着不同的事物。

结果是异构网络500描绘了公司502a和公司502b之间通过其他节点和通过其他类型的连接的关系,尽管公司502a和502b之间不存在直接的公司到公司链接。实际上,公司502a和公司502b之间存在多条可能的路径。

应当注意,这种类型的图可以用于以不同方式表示多个不同类型的实体。以这种方式,可能存在许多不同类型的节点(不仅仅是这里描绘的五种),以及许多不同的连接类型(不仅仅是这里描绘的五种)。本公开的概念将适用于节点的任何异构网络。

在构造节点的该异构网络500之后,定义用于连接相关实体的元路径类型。返回参考图4,在操作404,定义了用于连接相关实体的多个不同元路径类型。相关实体包括预测问题希望检查的任何实体。例如,如果预测问题想要确定各种公司将从第一公司购买物品的可能性,所定义的元路径可以是第一公司与那些各种公司中的每一个公司之间的多个不同的元路径。在示例实施例中,如节点的异构网络中所定义的,相关实体是所有相同类型的节点。例如,节点可以都是企业,或者都是用户,或者都是职位等。

节点的异构网络中的元路径指的是基于网络模式定义的节点和边类型的序列。元路径类型中的每一个包括不同边类型的组合。对于图5中的示例,比如可以定义公司502a和公司502b之间的连接的五种不同的元路径类型,每种连接类型一种元路径类型。虽然元路径类型可以包括多个连接类型的序列,连接类型中的一种将被视为元路径类型的主要连接类型。例如,在图5中,第一元路径可以是社交路径,其使用社交连接边(以及雇佣边)连接公司502a、502b。

这里,社交路径可以是公司(节点)-雇佣(边)-雇员(节点)-雇佣(边)-公司(节点),或者就图中的示例而言,公司502a通过雇佣边514a,通过用户504a,通过社交连接边516a,通过用户504b,通过雇佣边514b,到公司502b。

职位趋同路径可以是公司(节点)-雇佣(边)-雇员(节点)-具有职位(边)-职位(节点)-具有职位(边)-雇员(节点)-雇佣(边)-公司(节点),或者就该图的示例而言,公司502a通过雇佣边514a,通过用户504a,通过职位边512a,通过软件工程师506a,通过职位边512b,通过用户504b,通过雇佣边514b,到公司502b。

资历趋同路径可以是公司(节点)-雇佣(边)-雇员(节点)-具有资历(边)-高级(节点)-资历(边)-雇员(节点)-雇佣(边)-公司(节点)。就图5的示例而言,实际上不存在连接公司502a和公司502b的资历趋同路径,但存在连接公司502b和公司502c的一条资历趋同路径,即公司502b通过雇佣边514b,通过用户504b,通过资历边518a,通过高级508b,通过资历边518b,通过用户504c,通过雇佣边514c,到公司502c。

行业趋同路径可以是公司(节点)-雇佣(边)-雇员(节点)-具有行业(边)-行业(节点)-具有行业(边)-雇员(节点)-雇佣(边)-公司(节点),或者就该图的示例而言,公司502a通过雇佣边514a,通过用户504a,通过行业边520b,通过互联网服务510a,通过行业边520c,通过用户504b,通过雇佣边514b,到公司502b。

在公司具有直接链接的情况下可能会发生一种附加的特殊情况,在这种情况下路径仅包含公司的节点。

此时,可以为每对相关实体的元路径类型各自指派强度。在操作406,定义元路径类型的强度。为每种类型的元路径定义强度。对于不直接连接两个公司的每个元路径类型(即,上述的前四个元路径类型),连接ci和cj的元路径类型的强度(表示为)计算为:

o标识一个元路径类型mp的路径实例的集合,其两端的公司节点是ci和cj,

o|*|指集合中的实例总数。

这将元路径类型的强度基于在两个节点之间具有元路径类型的路径数量,其中某种归一化例如考虑具有大量雇员的公司或与连接的强度无关的连接到公司的其他节点。

对于不包括任何边且仅包含两个节点ci和cj(上述最后一个示例元路径类型)的特殊元路径类型,强度计算如下:

o表示范数,

o是缩放因子,其可以通过交叉验证来决定,

o表示公司cx的特征。这样的特征通常由传统预测算法使用,并且可以根据域和应用而变化。

值得注意的是是一个或多个特征的向量。上述公式对所有这些特征同等地加权。在一些示例实施例中,可以对特征应用不同的权重,以允许一些特征对输出分数的影响比其他特征更大。

返回参考图4,在操作408,针对每对相关实体组合不同元路径类型的强度,以生成仅实体图。仅实体图是其中节点仅具有应用预测问题的类型的图。例如,这可以是来自操作404的“相关实体”的节点类型。因此,如果预测问题涉及公司是否将从彼此购买,节点类型是公司节点。至于组合强度,例如,如果存在n种不同类型的元路径,则两个公司之间存在n种强度。通过对所有这些进行组合生成统一强度如下:

o,这是n个类型的元路径的n个权重,

o,这是每个权重的参数,

o可以基于训练数据通过最大似然估计(mle)学习。

结果是仅实体图(这里,例如,所有节点代表公司,尽管在一些示例实施例中,如果解决与公司不同的实体的问题,则可以使用一些其他类型的节点),节点之间的边各自包含如上计算的组合强度。

返回参考图4,在操作410,在仅公司图上运行标签传播算法以获得预测结果。图6是图示出根据示例实施例的标签传播算法410的流程图。标签传播算法410将用于为可以进行预测的每个节点指派和重新计算分数。因此,例如,如果正在预测的问题是特定公司是否将从另一公司购买商品或服务,则将为正被预测的特定公司中的每一个指派、计算和重新计算分数。在操作600,对仅实体图中的每个节点的分数进行初始化。该初始化可以包括,对于表示被认为对正在预测的问题具有肯定结果的实体的节点,指派“1”,而对于所有其他节点(包括丢失的实体和未知实体),指派“0”。因此,例如,如果正在预测的问题是特定公司是否将从另一公司购买商品或服务,则可以将“1”指派给代表已经从被检查公司购买商品或服务的帐户的任何公司节点,而可以将“0”指派给代表尚未从被检查的(或购买状态未知的)公司购买商品或服务的帐户的任何公司节点。

在操作602,对于所考虑的每个节点(u),基于邻居分数和连接强度更新节点的分数。在示例实施例中,使用以下计算来更新每个节点的分数:sum(sv×w(u,v))/sumw(u,v)。sv是指派给节点v的分数,并且v属于u的邻居集(直接邻居)。对于我们已经知道结果的节点,可以取决于每次迭代的结果将值重置为0或1。因此,例如,如果我们知道特定公司已经从一个公司购买了商品或服务,则无论公式的计算结果如何,该特定公司的分数将被重置为1。同样,如果我们知道特定公司将不从一个公司购买商品或服务,则无论公式的计算结果如何,该特定公司的分数将被重置为0。换言之,分数实际上仅针对我们还不知道预测结果的节点计算。

由于在操作602的第一次迭代中许多节点可能不是具有大于0的分数的节点的邻居的事实,操作602可以重复多次直到收敛发生为止。因此,在操作604,确定是否已经发生收敛。当来自每个节点的操作602的最近迭代的分数的变化低于预设阈值(即,自上次运行以来,没有分数已经改变超过预设阈值)时,发生收敛。当然,这意味着操作602将通常需要执行至少两次,使得存在要比较的上次迭代。如果尚未发生收敛,则重复操作602。如果已经发生收敛,则该过程可以进行到操作606,其中基于分数对正在检查的所有节点排序。正在检查的节点是尚不知道预测的任何节点(即,具有除“0”或“1”之外的分数的任何节点)。还应注意,当发生第二次或更晚的迭代时,被计算的公式使用来自先前迭代的分数进行计算。这与使用例如在当前迭代期间指派给相邻节点的分数形成对比。以这种方式,在每次迭代中针对节点所计算值的排序是无关的。

图7是根据示例实施例的可以用于图示出操作600-606的示例仅实体图700。具体地,该图包括节点702a-702d,其中权重被指派给节点702a-702d之间的边。这里,节点702a和702c具有预测问题未知的标签,而节点702b具有肯定标签,并且节点702d具有否定标签。例如,如果与节点702b相关联的公司从特定公司购买了物品,而与节点702d相关联的公司尽管有机会却未从特定公司购买物品,则可能是这种情况。因此,在操作600之后,节点702b被指派值“1”并且剩余节点被指派值“0”,因此分数向量是[0100]。在操作602之后,该公式使得向量变为[0.600.40],尽管节点702b的0因为节点702b是其预测已经知道为肯定的节点而被重置为1,得到向量[0.610.40]。在操作604,确定没有发生收敛,因为节点702a的分数的改变是0.6并且节点702c的分数的改变是0.4,两者都大于0.2的示例阈值。因此,操作602重复,这次产生向量[0.7210.760]。由于对所有节点702a-702d的分数的改变小于0.2(最大的是对节点702c的改变,其增加了0.16),已经发生收敛并且该过程可以进行到操作606,在操作606中所考虑的所有节点可以基于向量中的分数排序。

返回参考图4,操作410的输出是预测值的集合,被检查的每个节点(尚不知道预测的节点)一个预测值。这些预测值可以在例如0和1之间,较高的值指示相应节点对于被检查的任何问题将具有肯定结果的较高概率。在操作412,预测值被用于在显示器上产生视觉响应。如何使用这些预测值可以基于实现而变化。在一个示例实施例中,将排序的节点连同它们对应的分数一起显示给用户。在另一示例实施例中,使用分数的某一阈值来过滤掉低于特定等级的分数,并且仅向用户显示高于该阈值的那些节点。在另一示例实施例中,预测值用于计算与用户相关的一些其他度量并显示给用户。例如,如果用户是想要知道公司从非客户转化为客户的机会的销售人员,则可以在计算转化百分比的公式中使用预测值。在另一示例实施例中,预测值用于将节点分组成类别(例如,高销售可能性、中销售可能性、低销售可能性),以及使用一些视觉指示符显示的组(例如,不同组的不同颜色)。

如上面简要描述的,用于构造仅实体图的实体类型可以基于所呈现的预测问题而变化。例如,用户或技能可以是仅实体图中的实体,而不是公司作为仅实体图中的实体。实际上,由于该灵活性,节点的异构网络的图可以用于解决许多不同类型的预测问题。

模块、组件和逻辑

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

在一些实施例中,硬件模块可以被机械地、电子地或以其任何合适的组合实现。例如,硬件模块可以包括被永久配置为执行某些操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件模块还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路。例如,硬件模块可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件进行配置,硬件模块就成为被唯一地定制来执行所配置的功能的特定机器(或机器的特定组件)并且不再是通用处理器。将理解的是,在专用的和永久地配置的电路中或在临时配置的电路(例如由软件配置)中机械地实现硬件模块的决定可以由成本和时间考虑来驱动。

因此,短语“硬件模块”应该被理解为涵盖有形实体,其是物理地构造、永久配置(例如,硬连线)或临时配置(例如编程)从而以某种方式操作或执行本文描述的某些操作的实体。如本文所使用的,“硬件实现的模块”是指硬件模块。考虑在其中硬件模块被临时配置(例如,编程)的实施例,硬件模块中的每一个不需要在时间上的任何一个实例处被配置或实例化。例如,在硬件模块包括由软件配置的通用处理器以成为专用处理器的情况下,通用处理器在不同的时间可以被配置为各自不同的专用处理器(例如,包括不同的硬件模块)。软件因此配置具体处理器或多个处理器,例如以在一个时间实例处构成特定硬件模块并且在不同的时间实例处构成不同的硬件模块。

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

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

类似地,本文描述的方法可以是至少部分地由处理器实现的,其中具体处理器或多个处理器是硬件的示例。例如,方法的操作中的至少一些可以由一个或多个处理器或处理器实现的模块执行。另外,一个或多个处理器也可以操作以支持在“云计算”环境中的相关操作的执行或作为“软件即服务”(saas)。例如,操作中的至少一些可以由一组计算机(作为包括处理器的机器的示例)执行,其中这些操作是经由网络(例如,互联网)并且经由一个或多个合适接口(例如,api)可访问的。

某些操作的执行可以分布在处理器之间,不仅驻留在单个机器内,而且被跨多个机器部署。在一些示例实施例中,处理器或处理器实现的模块可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施例中,处理器或处理器实现的模块可以跨许多地理位置地分布。

机器和软件架构

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

软件架构与硬件架构结合使用以创建针对特定目的定制的设备和机器。例如,与特定软件架构耦合的特定硬件架构将创建移动设备,诸如移动电话、平板设备等。稍微不同的硬件和软件架构可能会生成用于“物联网”的智能设备,而又一种组合则会产生在云计算架构内使用的服务器计算机。并非这些软件和硬件架构的所有组合都在这里呈现,因为本领域技术人员可以容易地理解如何在与本文所包含的公开内容不同的上下文中实现本发明主题。

软件架构

图8是图示出可与本文所描述的各种硬件架构结合使用的代表性软件架构802的框图800。图8仅仅是软件架构的非限制性示例,并且应意识到,可以实现许多其他架构以促进本文描述的功能性。软件架构802可以在诸如图9的机器900之类的硬件上执行,所述机器900除了其他组件之外还包括处理器910、存储器/存储装置930和i/o组件950。代表性硬件层804被图示出并且可以表示例如图9的机器900。代表性硬件层804包括具有关联的可执行指令808的一个或多个处理单元806。可执行指令808表示软件架构802的可执行指令,包括图1-7的方法、模块等的实现。硬件层804还包括也具有可执行指令808的存储器和/或存储模块810。硬件层804还可以包括其他硬件812,其表示硬件层804的任何其他硬件,诸如被图示为机器900的一部分的其他硬件。

在图8的示例架构中,软件架构802可以被概念化为其中每个层提供特定功能性的层的堆叠。例如,软件架构802可以包括诸如操作系统814、库816、框架/中间件818、应用程序820和呈现层844之类的层。在操作上,层内的应用820和/或其他组件可以通过软件堆栈回调api调用824,并且响应于api调用824接收被图示为消息826的响应、返回值等。所图示的层本质上是代表性的,并不是所有的软件架构都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件层818,而其他移动或专用操作系统可能提供这样的层。其他软件架构可能包括附加的或不同的层。

操作系统814可以管理硬件资源并提供公共服务。操作系统814可以包括例如内核828、服务830和驱动器832。内核828可以充当在硬件与其他软件层之间的抽象层。例如,内核828可以负责存储器管理、处理器管理(例如调度)、组件管理、联网、安全设置等。服务830可以为其他软件层提供其他公共服务。驱动器832可以负责控制底层硬件或与其接口连接。例如,驱动器832根据硬件配置可以包括显示器驱动器、相机驱动器、bluetooth®驱动器、闪存驱动器、串行通信驱动器(例如通用串行总线(usb)驱动器)、wi-fi®驱动器、音频驱动器、电源管理驱动器等。

库816可以提供可以被应用820和/或其他组件和/或层利用的公共基础设施。库816典型地提供允许其他软件模块以比通过与底层操作系统814功能性(例如,内核828、服务830和/或驱动器832)直接接口连接更容易的方式执行任务的功能性。库816可以包括系统库834(例如,c标准库),其可以提供诸如存储器分派功能、字符串操纵功能、数学功能等功能。附加地,库816可以包括api库836,诸如媒体库(例如,支持诸如mpeg4、h.264、mp3、aac、amr、jpg、png之类的各种媒体格式的呈现和操纵的库)、图形库(例如可以用于在显示器上显现2d和3d图形内容的opengl框架)、数据库库(例如,可以提供各种关系数据库功能的sqlite)、web库(例如,可以提供web浏览功能性的webkit)等。库816还可以包括各种各样的其他库838,以向应用820和其他软件组件/模块提供许多其他api。

框架818(有时也被称为中间件)可以提供可以由应用820和/或其他软件组件/模块利用的更高级别的公共基础设施。例如,框架818可以提供各种图形用户接口(gui)功能、高级资源管理、高级位置服务等。框架818可以提供可以被应用820和/或其他软件组件/模块利用的广泛的其他api,其中一些可以是特定于特定操作系统或平台的。

应用820包括内置应用840和/或第三方应用842。代表性内置应用840的示例可以包括但不限于联系人应用、浏览器应用、图书阅读器应用、位置应用、媒体应用、消息收发应用和/或游戏应用。第三方应用842可以包括任何内置应用840以及广泛搭配的其他应用。在特定示例中,第三方应用842(例如,由除特定平台的供应商之外的实体使用android™或ios™软件开发套件(sdk)开发的应用)可以是运行在诸如ios™、android™、windows®phone之类的移动操作系统或其他移动操作系统上的移动软件。在该示例中,第三方应用842可以回调由诸如操作系统814之类的移动操作系统提供的api调用824以促进本文描述的功能性。

应用820可以利用内置操作系统814功能(例如,内核828、服务830和/或驱动器832)、库816(例如,系统库834、api库836和其他库838),以及框架/中间件818以创建用户接口来与系统的用户进行交互。可替代地或附加地,在一些系统中,可以通过诸如呈现层844之类的呈现层来发生与用户的交互。在这些系统中,可以将应用/模块“逻辑”同与用户进行交互的应用/模块的方面分开。

一些软件架构利用虚拟机。在图8的示例中,这由虚拟机848图示出。虚拟机创建软件环境,其中应用程/模块可以像它们正在硬件机器(诸如,例如图9的机器900)上执行一样执行。虚拟机由主机操作系统(例如,图8中的操作系统814)托管,并且典型地(尽管不总是)具有虚拟机监视器846,虚拟机监视器846管理虚拟机848的操作以及与主机操作系统(例如,操作系统814)的接口。软件架构在虚拟机848内执行,诸如操作系统850、库852、框架/中间件854、应用856和/或呈现层858。在虚拟机848内执行的软件架构的这些层可以与先前描述的对应层相同或者可以不同。

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

图9是图示出根据一些示例实施例的能够从机器可读介质(例如,机器可读存储介质)读取指令并且执行本文讨论的任何一个或多个方法的机器的组件的框图900。具体而言,图9示出了以计算机系统的示例形式的机器900的图形表示,在机器900内,用于使机器900执行本文讨论的任何一种或多种方法的指令916(例如,软件、程序、应用、小应用件、app或其他可执行代码)可以被执行。指令916将通用的、未编程的机器变换成被编程为以所描述的方式执行所描述和图示出的功能的特定机器。在可替代实施例中,机器900作为独立设备操作或者可以耦合(例如联网)到其他机器。在联网部署中,机器900可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器900可以包括但不限于服务器计算机、客户端计算机、pc、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web电器、网络路由器、网络交换机、网络桥接器或能够顺序地或以其他方式执行指定机器900要采取的动作的指令916的任何机器。此外,尽管图示出了仅仅单个机器900,术语“机器”也应被视为包括单独或联合执行指令916以执行本文讨论的任何一种或多种方法的机器900的集合。

机器900可以包括处理器910、存储器/存储装置930和i/o组件950,其可以被配置为诸如经由总线902彼此通信。在示例实施例中,处理器910(例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、asic、射频集成电路(rfic)、另一个处理器或其任何合适的组合)可以包括例如可以执行指令916的处理器912和处理器914。术语“处理器”旨在包括多核处理器,该多核处理器可以包括可以同时执行指令的两个或更多个独立处理器(有时称为“核”)。尽管图9示出了多个处理器910,但机器900可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或者任何它们的组合。

存储器/存储装置930可以包括诸如主存储器或其他存储器存储装置之类的存储器932,和存储单元936,两者都可以由处理器910诸如经由总线902访问。存储单元936和存储器932存储体现本文描述的方法或功能中的任何一个或多个的指令916。在由机器900执行期间,指令916还可以完全或部分地驻留在存储器932内,在存储单元936内,在处理器910中的至少一个内(例如,在处理器的高速缓存存储器内)或在其任何合适的组合内。相应地,存储器932、存储单元936和处理器910的存储器是机器可读介质的示例。

如本文所使用的,“机器可读介质”意指能够临时或永久地存储指令和数据的设备,并且可以包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲器存储器、闪存、光学介质、磁性介质、高速缓存存储器、其他类型的存储装置(例如,可擦除可编程只读存储器(eeprom))和/或其任何适当的组合。术语“机器可读介质”应被视为包括能够存储指令916的单个介质或多个介质(例如,集中式或分布式数据库,或关联的高速缓存和服务器)。术语“机器可读介质”应当也被视为包括能够存储供机器(例如,机器900)执行的指令(例如,指令916)的任何介质或多个介质的组合,使得指令在由机器的一个或多个处理器(例如,处理器910)执行时使机器执行本文描述的方法中的任何一个或多个。相应地,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的“基于云的”存储系统或存储网络。术语“机器可读介质”排除信号本身。

i/o组件950可以包括各种各样的组件以接收输入,提供输出,生成输出,传送信息,交换信息,捕获测量等。包括在特定机器中的特定i/o组件950将取决于机器的类型。例如,诸如移动电话之类的便携式机器很可能包括触摸输入设备或其他这样的输入机制,而无头式服务器机器将可能不包括这样的触摸输入设备。应意识到,i/o组件950可以包括图9中未示出的许多其他组件。根据功能性对i/o组件950进行分组仅仅是为了简化以下讨论并且分组决不是限制性的。在各种示例实施例中,i/o组件950可以包括输出组件952和输入组件954。输出组件952可以包括视觉组件(例如,显示器,诸如等离子显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt)),声学组件(例如扬声器)、触觉组件(例如振动电机、阻力机制)、其他信号发生器以及等。输入组件954可以包括字母数字输入组件(例如,键盘、被配置为接收字母数字输入的触摸屏、光电键盘或其他字母数字输入组件)、基于点的输入组件(例如鼠标、触摸板、轨迹球、操纵杆、运动传感器、或者另一个指示仪器)、触知输入组件(例如,物理按钮、提供触摸或触摸手势的位置和/或力量的触摸屏,或其他触知输入组件)、音频输入组件(例如麦克风)等。

在另外的示例实施例中,i/o组件950可以包括在非常大批的其他组件中的生物测定组件956、运动组件958、环境组件960或方位组件962。例如,生物测定组件956可以包括组件来检测表达(例如,手部表达、面部表达、人声表达、身体姿势或眼部跟踪),测量生物信号(例如血压、心率、体温、出汗或脑波),标识人(例如,语音标识、视网膜标识、面部标识、指纹标识或基于脑电图的标识)等。运动组件958可以包括加速度传感器组件(例如,加速度计)、重力传感器组件、旋转传感器组件(例如陀螺仪)等。环境组件960可以包括例如照明传感器组件(例如光度计)、温度传感器组件(例如,检测周围温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如气压计)、声学传感器组件(例如,检测背景噪声的一个或多个麦克风)、接近传感器组件(例如,检测附近物体的红外传感器)、气体传感器(例如,用于为了安全而检测有害气体的浓度或者用于测量大气中的污染物的气体检测传感器)或可以提供对应于周围物理环境的指示、测量结果或信号的其他组件。方位组件962可以包括位置传感器组件(例如,全球定位系统(gps)接收器组件)、高度传感器组件(例如高度计或检测可以从其导出高度的气压的气压计)、取向传感器组件(例如,磁力计)等。

通信可以使用各种各样的技术来实现。i/o组件950可以包括通信组件964,通信组件964可操作以分别经由耦合982和耦合972将机器900耦合到网络980或设备970。例如,通信组件964可以包括网络接口组件或其他合适的设备以与网络980接口连接。在另外的示例中,通信组件964可以包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信nfc)组件、bluetooth(蓝牙)®组件(例如,bluetooth®lowenergy)、wi-fi®组件和其他通信组件以通过其他模态提供通信。设备970可以是另一台机器或各种各样的外围设备中的任何一种(例如,经由usb耦合的外围设备)。

而且,通信组件964可以检测标识符或包括可操作以检测标识符的组件。例如,通信组件964可以包括射频标识(rfid)标签读取器组件、nfc智能标签检测组件、光学读取器组件(例如,这样的光学传感器,其用于检测诸如通用产品代码(upc)条形码之类的一维条形码,诸如快速响应(qr)码、阿兹特克(aztec)码、数据矩阵、dataglyph、maxicode、pdf417、超码、uccrss-2d条形码以及其他光学码之类的多维条形码)或声学检测组件(例如,用于标识标记的音频信号的麦克风)。附加地,可以经由通信组件964导出各种信息,诸如经由互联网协议(ip)地理位置的位置、经由wi-fi®信号三角测量的位置、经由检测可以指示特定位置的nfc信标信号的位置等。

传输介质

在各种示例实施例中,网络980的一个或多个部分可以是自组织网络、内联网、外联网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、wan、无线wan(wwan)、城域网(man)、互联网、互联网的一部分、公共交换电话网(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、wi-fi®网络、另一种类型的网络、或两个或更多个这样的网络的组合。例如,网络980或网络980的一部分可以包括无线或蜂窝网络,并且耦合982可以是码分多址(cdma)连接,全球移动通信系统(gsm)连接或另一类型的蜂窝或无线耦合。在该示例中,耦合982可以实现多种类型的数据传输技术中的任一个,诸如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线电服务(gprs)技术、增强gsm演进数据速率(edge)技术,包括3g的第三代合作伙伴项目(3gpp),第四代无线(4g)网络,通用移动电信系统(umts),高速分组接入(hspa),全球微波接入互操作性(wimax),长期演进(lte)标准,由各种标准设置组织、其他远程协议定义的其他技术或其他数据传输技术。

可以经由网络接口设备(例如,在通信组件964中包括的网络接口组件)使用传输介质并利用许多公知的传输协议中的任何一种协议(例如http),以通过网络980传送或接收指令916。类似地,可以使用传输介质经由到设备970的耦合972(例如,对等耦合)发送或接收指令916。术语“传输介质”应被视为包括能够存储、编码或携带供机器900执行的指令916的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进这样的软件的通信。

语言

贯穿本说明书,多个实例可以实现如单个实例所描述的组件、操作或结构。虽然一个或多个方法的单独操作被图示和描述为分离的操作,但可同时执行单个操作中的一个或多个,并且不要求以图示的顺序执行操作。在示例配置中被呈现为分离组件的结构和功能性可被实现为组合的结构或组件。类似地,被呈现为单个组件的结构和功能性可以被实现为分离的组件。这些和其他变化、修改、添加和改进落入本文的主题的范围内。

尽管已经参照特定示例实施例描述了发明主题的概况,可以对这些实施例进行各种修改和改变而不背离本公开的实施例的更宽范围。发明主题的这些实施例在此可以单独地或共同地由术语“发明”引用,这仅仅是为了方便,而并不意在自愿地将本申请的范围限制为任何单个公开或发明构思(如果实际上公开了多于一个)。

本文图示的实施例被足够详细地描述以使本领域技术人员能够实践所公开的教导。其他实施例可以被使用并从中导出,使得可以在不背离本公开的范围的情况下进行结构和逻辑的替换和改变。因此,具体实施方式不应该被以限制的意义理解,并且各种实施例的范围仅由所附权利要求以及这些权利要求对其享有权利的全部等同范围来限定。

如本文所使用的,术语“或”可以被以包括性或排他性的意义来解释。另外,对于本文描述的资源、操作或结构,可以将多个实例作为单个实例来提供。附加地,在各种资源、操作、模块、引擎和数据存储之间的边界有些随意,并且具体操作在特定的说明性配置的上下文中说明。设想了功能性的其他分配并且其可以落入本公开的各种实施例的范围内。通常,在示例配置中呈现为分离资源的结构和功能性可以实现为组合的结构或资源。类似地,呈现为单个资源的结构和功能性可以被实现为分离的资源。这些和其他变型、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图要以说明性的而不是限制性的意义来看待。

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