确定行业相似性以增强职位搜索的制作方法

文档序号:18516802发布日期:2019-08-24 09:30阅读:229来源:国知局
确定行业相似性以增强职位搜索的制作方法

本国际申请要求享受2016年12月15日提交的美国专利申请序列号no.15/379,641的优先权,故以引用方式将该申请的全部内容并入本文。

概括地说,本文所公开的主题涉及用于为社交网络的成员查找优质职位供应的方法、系统和程序。



背景技术:

一些社交网络向其成员提供职位招聘信息。成员可以通过输入职位搜索查询来执行职位搜索,或者社交网络可以建议用户可能感兴趣的职位。但是,当前的职位搜索方法可能会错过成员的宝贵机会,这是因为职位搜索引擎将搜索限制于特定参数。例如,职位搜索引擎可以查找与简档中的成员名称的匹配,但是可能存在与该成员感兴趣的不同名称相关联的优质职位。

附图说明

附图中的各个附图仅示出了本公开内容的示例性实施例,但不能将其视作为限制本发明的保护范围。

图1是根据一些示例性实施例,示出包括社交网络服务器的网络化系统的框图。

图2是根据一些示例性实施例,包括职位推荐的用户界面的屏幕截图。

图3是根据一些示例性实施例的用户简档视图的屏幕截图。

图4根据一些示例性实施例,示出了用于存储职位和成员信息的数据结构。

图5根据一些示例性实施例,示出了用于基于匹配的成员名称和职位名称的职位搜索的方法。

图6根据一些示例性实施例,示出了用于基于语义分析来识别名称之间的相似性的方法。

图7根据一些示例性实施例,示出了用于识别职位和成员行业之间的相似性的方法。

图8根据一些示例性实施例,示出了用于识别成员技能之间的相似性的方法。

图9根据一些示例性实施例,示出了用于扩展具有类似行业的职位搜索查询的方法。

图10示出了根据一些示例性实施例的用于扩展具有类似成员技能的职位搜索查询的方法。

图11根据一些示例性实施例,示出了用于扩展具有类似名称的职位搜索查询的方法。

图12根据一些示例性实施例,示出了用于扩展具有类似名称、技能和行业的职位搜索查询的方法。

图13示出了用于实现示例性实施例的社交网络服务器。

图14是根据一些示例性实施例,示出与职位搜索引擎的改进的用户交互的图。

图15是根据一些示例性实施例,用于通过添加与职位搜索中输入的职位名称类似的名称来扩展职位搜索的方法的流程图。

图16是根据一些示例性实施例,示出可以安装在机器上的软件架构的例子的框图。

图17根据示例性实施例,示出了计算机系统形式的机器的图形表示,其中在该计算机系统中,可以执行一组指令以使机器执行本文所讨论的方法中的任何一种或多种。

具体实施方式

示例性方法、系统和计算机程序针对于通过添加与在职位搜索中输入的职位名称类似的名称,来扩展职位搜索。示例只代表可能的变型。除非另外明确地说明,否则组件和功能是可选的,并且可以进行组合或细分,操作可以按顺序地变化或者进行组合或细分。在下面的描述中,为了便于解释起见,阐述了许多特定的细节以提供对示例性实施例的透彻理解。但是,对于本领域普通技术人员来说显而易见的是,可以在不使用这些具体细节的情况下实现本发明的主题。

本文给出的实施例利用深度学习技术(例如,word2vec工具)来增强职位搜索和职位推荐的效能。例如。如果成员和职位具有不同的名称,则一些职位搜索方法不能使成员与职位相匹配,但该职位名称与成员的名称是紧密相关的。例如,虽然使用“词袋表示(bag-of-wordsrepresentation)”的“软件工程师”的矢量表示与“应用程序开发人员”的矢量完全不同,但这些表达式在语义上是相似的。通过获知成员简档和职位简档中使用的文本的语义含义,大大地提高了职位搜索功能。

在一个方面,获得职位名称之间的相似性,并且在执行职位搜索时,使用职位名称相似性来发现与职位搜索中与职位名称类似的职位名称相关联的职位。

一种方法识别社交网络中的成员的职位名称,利用机器学习程序执行职位名称的语义分析,以识别职位名称之间的相似性系数。机器学习程序利用社交网络数据来识别相似性系数。此外,该方法包括用于以下的操作:从第一成员接收包括查询职位名称的职位搜索查询,以及使用与查询职位名称类似的职位名称来扩展职位搜索查询。该方法还包括用于以下的操作:执行扩展的职位搜索查询以生成多个职位结果,以及用于在显示器上呈现最佳职位结果中的一个或多个职位结果。

一种方法包括:用于由具有一个或多个处理器的社交网络服务器访问多个职位申请的操作,其中每个职位申请由成员为了公司中的职位而提交,并且该成员具有来自多个行业的成员行业,该职位具有来自多个行业的就业行业。该方法还包括:用于通过机器学习程序执行职位申请的语义分析以识别所述多个行业之间的相似性系数的操作,以及用于从第一成员接收职位搜索查询的操作,其中职位搜索查询包括来自所述多个行业的查询行业。使用与查询行业类似的行业来扩展职位搜索查询,社交网络服务器执行扩展的职位搜索查询以生成多个职位结果。该方法还包括:用于在显示器上呈现最佳职位结果中的一个或多个职位结果的操作。

一个通常方面包括社交网络服务器,其包括具有指令的存储器、存储包括来自多个行业的成员行业的成员信息的成员数据库、存储多个职位申请的职位数据库、以及一个或多个计算机处理器。每个职位申请由成员针对公司中的职位来提交,其中该职位具有来自所述多个行业的职位行业。当所述指令由一个或多个计算机处理器执行时,使所述一个或多个计算机处理器执行包括以下的操作:访问所述多个职位申请;通过机器学习程序执行职位申请的语义分析以识别所述多个行业之间的相似性系数;从第一成员接收职位搜索查询,其中职位搜索查询包括来自所述多个行业的查询行业;使用与查询行业类似的行业来扩展职位搜索查询;执行扩展的职位搜索查询以生成多个职位结果;并且在显示器上呈现一个或多个最佳职位结果。

一个通常方面包括一种包含指令的非临时性机器可读存储介质,其中当所述指令由机器执行时使所述机器执行包括以下的操作:由具有一个或多个处理器的社交网络服务器访问多个职位申请,其中每个职位申请由成员为了公司中的职位而提交,并且该成员具有来自多个行业的成员行业,该职位具有来自多个行业的就业行业。此外,所述存储介质还包括:由所述社交网络服务器通过机器学习程序执行职位申请的语义分析以识别所述多个行业之间的相似性系数,以及由所述社交网络服务器从第一成员接收职位搜索查询,其中职位搜索查询包括来自所述多个行业的查询行业。此外,所述存储介质还包括:由所述社交网络服务器使用与查询行业类似的行业来扩展职位搜索查询;由所述社交网络服务器执行扩展的职位搜索查询以生成多个职位结果;并且使得在显示器上呈现一个或多个最佳职位结果。

图1是根据一些示例性实施例,示出包括社交网络服务器112的网络化系统的框图,其示出了高层级基于客户端-服务器的网络架构102的示例性实施例。社交网络服务器112经由网络114(例如,互联网或广域网(wan))向一个或多个客户端设备104提供服务器侧功能。例如,图1示出了web浏览器106(例如,由公司开发的internet浏览器)、客户端应用程序108和在客户端设备104上执行的社交网络客户端110。社交网络服务器112还与提供对一个或多个数据库116-124的访问的一个或多个数据库服务器126通信地耦合。

客户端设备104可以包括但不限于:移动电话、桌面型计算机、膝上型计算机、便携式数字助理(pda)、智能电话、平板设备、超级电子书、上网本、多处理器系统、基于微处理器或可编程的消费电子系统、或者用户128可以用于访问社交网络服务器112的任何其它通信设备。在一些实施例中,客户端设备104可以包括显示信息(例如,以用户界面的形式)的显示模块(没有示出)。在另外的实施例中,客户端设备104可以包括触摸屏、加速度计、陀螺仪、相机、麦克风、全球定位系统(gps)设备等等中的一个或多个。

在一个实施例中,社交网络服务器112是基于网络的设备,其响应来自客户端设备104的初始化请求或搜索查询。一个或多个用户128可以是人、机器或者与客户端设备104交互的其它方式。在各个实施例中,用户128不是网络架构102的一部分,但是可以经由客户端设备104或其它装置与网络架构102进行交互。例如,网络114的一个或多个部分可以是自组织网络、内联网、外联网、虚拟专用网(vpn)、局域网(lan)、无线lan(wlan)、wan、无线wan(wwan)、城域网(man)、互联网的一部分、公共交换电话网(pstn)的一部分、蜂窝电话网络、无线网络、wifi网络、wimax网络、另一种类型的网络、或者两个或更多这样的网络的组合。

客户端设备104可以包括一个或多个应用程序(其也称为“app”),例如但不限于:web浏览器106、社交网络客户端110、以及诸如消息传递应用程序、电子邮件(email)应用程序、新闻应用程序等等之类的其它客户端应用程序108。在一些实施例中,如果社交网络客户端110存在于客户端设备104中,则社交网络客户端i10被配置为在本地提供应用的用户界面并且根据需要与社交网络服务器112进行通信,以获得本地不可用的数据和/或处理能力(例如,访问成员简档、认证用户128、识别或定位其它连接的成员等等)。相反,如果社交网络客户端110不包括在客户端设备104中,则客户端设备104可以使用web浏览器106来访问社交网络服务器112。

此外,虽然参考客户端-服务器体系结构描述了基于客户端-服务器的网络体系结构102,但是本发明的主题当然并不限于这种体系结构,并且同样可以在例如分布式或对等架构系统中找到应用程序。

除了客户端设备104之外,社交网络服务器112与一个或多个数据库服务器126和数据库116-124进行通信。在一个示例性实施例中,社交网络服务器112通信地耦合到成员活动数据库116、社交图数据库118、成员简档数据库120、职位数据库122和公司数据库124。数据库116-124可以实现成一种或多种类型的数据库,其包括但不限于:分层数据库、关系数据库、面向对象的数据库、一个或多个胖文件或者其组合。

成员简档数据库120存储关于已向社交网络服务器112注册的成员的成员简档信息。关于成员简档数据库120,该成员可包括个人或组织,例如公司、企业、非营利性组织、教育机构或者其它此类组织。

与一些示例性实施例一致,当用户最初注册成为社交网络服务器112提供的社交网络服务的成员时,提示用户提供一些个人信息,例如姓名、年龄(例如,出生日期)、性别、兴趣、联系信息、籍贯、地址、配偶和/或家庭成员的姓名、教育背景(例如,学校、专业、预科和/或毕业日期等等)、就业历史、专业行业(本文也简单地称为行业)、技能、专业组织等等。将该信息例如存储在成员简档数据库120中。类似地,当组织的代表最初向社交网络服务器112提供的社交网络服务注册该组织时,可以提示该代表提供关于该组织的某些信息,例如公司行业。可以将该信息存储在例如成员简档数据库120中。在一些实施例中,可以处理简档数据(例如,以后台或离线方式)以生成各种导出的简档数据。例如,如果某个成员提供了该成员与同一公司或不同公司持有的各种职位名称、以及多长时间的信息,则可以使用该信息来推断或推导指示该成员的整体资历水平或特定公司内的资历水平的成员资料属性。在一些示例性实施例中,从一个或多个外部托管的数据源导入或以其它方式访问其数据,可以增强成员和组织的简档数据。例如,特别是对于公司,可以从一个或多个外部数据源导入财务数据,并将其作为公司简档的一部分。

在一些示例性实施例中,公司数据库124将关于公司的信息存储在成员的简档中。公司也可以是成员,但是一些公司可能不是社交网络的成员,虽然公司的一些员工可能是社交网络的成员。公司数据库124包括公司信息,例如名称、行业、联系信息、网站、地址、位置、地理范围等等。

当用户与社交网络服务器112提供的社交网络服务交互时,社交网络服务器112被配置为监测这些交互。交互的示例包括但不限于:评论其他成员输入的帖子、查看成员简档、编辑或查看成员自己的简档、共享社交网络服务之外的内容(例如,由不同于社交网络服务器112的实体提供的文章)、更新当前状态、发布其他成员的内容以查看和评论、成员的职位建议、工作岗位搜索、以及其它这样的交互。在一个实施例中,将这些交互的记录存储在成员活动数据库116中,成员活动数据库116将成员进行的交互与存储在成员简档数据库120中的他或她的成员简档进行关联。在一个示例性实施例中,成员活动数据库116包括由社交网络服务的用户创建的用于在用户馈送上呈现的帖子。

职位数据库122包括公司数据库124中的公司提供的职位发布。每个职位发布包括职位相关信息,例如以下的任意组合:雇主、职位名称、职位描述、职位要求、工资和福利、地理位置、需要的一个或多个工作技能、职位发布日期、搬迁福利等等。

在一个实施例中,社交网络服务器112通过一个或多个数据库服务器126与各种数据库116-124进行通信。在该方面,数据库服务器126提供一个或多个接口和/或服务,以用于向数据库116-124提供内容、修改其内容、从数据库116-124中移除内容或者以其它方式与数据库116-124交互。举例而言但非做出限制,这些接口和/或服务可以包括一个或多个应用程序接口(api)、通过面向服务的体系结构(soa)提供的一个或多个服务、通过面向rest的体系结构(roa)提供的一个或多个服务、或者其组合。在替代的实施例中,社交网络服务器112与数据库116-124进行通信,并且包括数据库客户端、引擎和/或模块,以用于向一个或多个数据库116-124提供数据、修改存储在其中的数据和/或从所述一个或多个数据库116-124中检索数据。

虽然将数据库服务器126示出为单个块,但本领域普通技术人员应当认识到,数据库服务器126可以包括一个或多个这样的服务器。例如,数据库服务器126可以包括但不限于:exchange服务器、sharepoint服务器、轻量级目录访问协议(ldap)服务器、mysql数据库服务器、或者被配置为提供对一个或多个数据库116-124的访问的任何其它服务器、或者其组合。因此,在一个实施例中,由社交网络服务实现的数据库服务器126还被配置为与社交网络服务器112进行通信。

图2是根据一些示例性实施例,包括职位推荐202-206的用户界面200的屏幕截图。在一个示例性实施例中,社交网络用户界面提供职位推荐,其是与用户感兴趣的职位相匹配并且与来自用户的特定职位搜索请求一起呈现的职位发布。

在另一种示例性实施例中,提供职位搜索界面以用于输入职位搜索,并且在用户界面200中将所获得的职位匹配呈现给用户。

当用户向下滚动用户界面200时,向用户呈现更多职位推荐。在一些示例性实施例中,对职位推荐进行优先次序排序以按照用户感兴趣的估计顺序来呈现职位。

图3是根据一些示例性实施例的用户的简档视图的屏幕截图。社交网络中的每个用户具有成员简档302,其包括关于用户的信息。用户简档可由用户配置,并且还包括基于社交网络中的用户活动的信息(例如,喜欢、阅读的帖子)。

在一个示例性实施例中,成员简档302可以包括若干类别的信息,例如经验308、教育310、技能和认可312、成就314、联系信息334、接着316等。技能包括成员拥有的专业能力,成员或社交网络的其他成员可以添加技能。示例性技能包括c++、java、面向对象编程、数据挖掘、机器学习、数据科学家等等。社交网络的其他成员可以认可这些技能中的一种或多种,在一些示例性实施例中,帐户与从其他成员接收的针对每种技能的认可的数量相关联。

经验308信息包括与用户的专业经验相关的信息。在一个示例性实施例中,经验308信息包括行业306,其标识用户工作的行业。在一个示例性实施例中,当在简档中输入该值时,向用户提供从多个行业中选择行业的选项。在其它示例性实施例中,用户还可以输入不在预先规定的行业列表中的行业。在一些示例性实施例中,规定行业处于高水平。在用户简档中可配置的行业的一些示例包括信息技术、机械工程、营销等等。将用户的简档识别为与特定行业相关联,认为与该特定行业相关的帖子包含在用户的订阅源中(即使这些帖子不源自于用户的连接或者源自用户明确遵循的其它类型的实体)。体验308信息区域还可以包括关于当前职位和用户持有的先前职位的信息。

教育310包括关于用户的教育背景的信息。技能和认可312包括关于用户已经标识的被该用户获取的专业技能的信息、以及支持该用户技能的社交网络的其他用户输入的认可。成就314区域包括用户输入的成就,联系信息334包括用户的联系信息(例如,电子邮件和电话号码)。接着316区域包括用户所遵循的社交网络中的实体的名称。

在一些实现中,为了提供职位推荐,职位搜索引擎在成员的名称或技能中查找匹配。这种方法的问题在于:可能存在与不同名称相关联的职位,但这些不同的名称可能类似于成员的名称。例如,名称“软件工程师”与名称“应用程序开发人员”不同,但这两个名称密切相关,这是因为大多数软件工程师是也是应用程序开发人员,反之亦然。职位搜索未获知这种名称相似性,因此可能错过用户可能感兴趣的很多结果。本文给出的实施例使用相似性分析来识别密切相关的名称,以便改进职位搜索和职位推荐。

图4根据一些示例性实施例,示出了用于存储职位和成员信息的数据结构。如上所述的成员简档302包括成员信息,例如姓名、名称(例如,职位名称)、行业(例如,法律服务)、地理区域、雇主、技能和认可等等。在一些示例性实施例中,成员简档还包括与职位相关数据,例如先前应用到的职位、或者已经向成员建议的职位(以及已向成员建议该职位的次数)。在成员简档302内,技能信息链接到技能数据410,雇主信息链接到公司数据406,行业信息链接到行业数据404。

行业数据404是用于存储在社交网络中识别的行业的表。在一个示例性实施例中,行业数据404包括行业标识符(例如,数字值或文本串)和行业名称,其中行业名称是与行业相关联的文本串(例如,法律服务)。

在一个示例性实施例中,公司数据406包括公司信息,例如公司名称、与公司相关联的行业、雇员数量、地址、公司的概述描述、职位发布等等。在一些示例性实施例中,行业链接到行业数据404。

技能数据410是用于存储在社交网络中识别的不同技能的表。在一个示例性实施例中,技能数据410包括技能标识符(d)(例如,数字值或文本串)和用于技能的名称。技能标识符可以链接到成员简档302和职位数据408。

在一个示例性实施例中,职位数据408包括由社交网络中的公司发布的职位的数据。职位数据408包括以下各项中的一个或多个:与职位相关联的名称(例如,软件开发者)、发布职位的公司、职位的地理区域、职位的描述、职位的类型、职位所需的资格、以及一项或多项技能。职位数据408可以链接到公司数据406和技能数据410。

应当注意,图4中所示出的实施例是举例,其并未描述每个可能的实施例。其它实施例可以利用不同的数据结构、更少的数据结构更少,将来自两个数据结构的信息合并为一个,在数据结构之间添加另外的或更少的链接等等。因此,图4中所示出的实施例不应被解释为排他性的或者限制性的,而是说明性的。

图5根据一些示例性实施例,示出了用于基于匹配的成员和职位名称的职位搜索的方法。在一些示例性实施例中,职位搜索和职位推荐利用机器学习算法来执行搜索。

基本职位搜索功能包括操作502、504和506。在操作502处,对具有与成员名称匹配的名称的职位执行搜索。在操作504处,根据用于估计职位的值的标准,对来自名称匹配的结果向用户进行排序。在操作506处,将一些职位呈现给成员,例如在图3的用户界面中。这种基本职位搜索将找不到与成员的名称不同的名称相关联的职位,但职位名称可能在语义上类似于成员的名称。

在其它示例性实施例中,利用机器学习算法来找到名称相似性以便改进职位搜索。机器学习是一个研究领域,其使计算机具有无需明确编程即可进行学习的能力。机器学习探索了算法(本文也称为工具)的研究和构建,机器学习可以从现有数据中学习并对新数据进行预测。这种机器学习工具通过从示例性输入中构建模型进行操作,以便将数据驱动的预测或决策表达为输出。虽然针对较少的机器学习工具呈现了示例性实施例,但是本文给出的原理也可以应用于其它机器学习工具。

在一些示例性实施例中,可以使用不同的机器学习工具。例如,逻辑回归(lr)、朴素贝叶斯、随机森林(rf)、神经网络(nn)和支持向量机(svm)工具可以用于对职位发布进行分类或评分。

通常,在机器学习中存在两种类型的问题:分类问题和回归问题。分类问题旨在将项分类为几个类别之一(例如,该对象是苹果还是桔子?)。回归算法旨在对一些项进行量化(例如,通过提供实数的值)。在一些实施例中,示例性机器学习算法提供评分(例如,从1到100的数字)以将每个职位限定为用户的匹配。在其它示例性实施例中,还利用机器学习来提供评分(例如,从1到100的数字)以找到关于名称、技能或行业的相似性。机器学习算法利用训练数据来找到所识别特征之间的相关性,以及这些特征值如何影响结果。

在一个示例性实施例中,用于本文给出的实施例的特征可以包括图4的数据结构中标识的任何特征、以及在这些特征之间获得的相似性值,如下面所更详细描述的。

图6根据一些示例性实施例,示出了用于基于语义分析来识别名称之间的相似性的方法。在一个示例性实施例中,将来自名称的每个词表示为词汇大小的矢量,其中1对应于该词,矢量中的其余元素等于0。这种表示称为词袋矢量表示。例如,词语“软件”具有单个1的矢量602,词语“工程师”在矢量中也具有单个1,但处于不同的位置。

在一个示例性实施例中,将矢量压缩成固定维度矢量(例如,维度为200,但是其它大小也是可能的),压缩矢量的元素是实数,其中一个以上的元素可以为非零。例如,对于词语“软件”,存在具有多个非零值的对应压缩矢量608。

语义分析通过为每个词创建矢量608来找到词之间的相似性,使得具有相似含义的词具有彼此接近的矢量。在一个示例性实施例中,使用工具word2vec来执行语义分析,但也可以使用其它工具,例如gensim、latentdirichletallocation(lda)或tensorflow。

这些模型是浅两层神经网络,其经过训练可以重建词语的语言环境。word2vec以大量的文本语料作为输入,并产生高维空间(其通常在一百到几百维度之间)。向语料库中的每个唯一性词分配空间中的相应矢量608。将矢量608定位在矢量空间中,使得在语料库中共享共同上下文的词在空间中彼此非常接近。在一个示例性实施例中,矢量608的每个元素都是实数。

例如,可以利用word2vec来识别两个词之间的相似性。在一个例子中,使用大量的名称作为输入,并且创建具有与词语“软件”类似含义的词语列表。语义分析也使用文本语料库604来识别相似性。在一些示例性实施例中,文本语料库604包括与成员相关数据和公司数据,但是其它实施例可以利用更少的数据或另外的数据,例如社交网络上的用户帖子、行业数据、技能数据等等。

在另一个示例性实施例中,通过将成员名称与每个职位申请的职位名称进行配对,利用职位申请数据来执行语义分析606。下面参照图7来描述关于利用职位申请数据的更多细节,其中图7描述了用于职位申请的配对职位和成员行业,但是相同的原理也可以应用于配对的职位和成员名称。

在一些示例性实施例中,使用以下参数来执行语义分析606。

–在字典中要考虑的最少出现次数的词min_count(例如,5)。

–与目标字的左窗口和右窗口的最大大小window_size(例如,5)。

–要使用的负样本的数量negative_sample(例如,25)。

-并发步骤的数量concurrent_steps(例如,12)。

用于词出现的子样本阈值subsample,其中出现频率较高的词将被随机下采样(例如,1e-3)。

历元的数量num_epochs(例如,15)

在一些示例性实施例中,对名称(以及行业、技能等等)执行标记化(tokenization)和词干提取(stemming)。标记化是对一串输入字符的一些部分进行划分和可能的分类的过程。此外,文档可以包括不同形式的词,例如“组织”、“组织集”和“进行组织”。另外,存在具有相似含义的衍生相关词的家族,例如“民主”、“民主性”和“民主化”。在一个示例性实施例中,对常用停用词进行删除。停用词是英语中最常用的词,停用词的数量可以从几十到几百不等。可以选择任意一组词作为停用词。常见的一些停用词包括“the”、“is”、“at”、“which”和“on”。词干提取通常指代一个启发式过程,其会切断词的结束,以旨在实现找到这些词的共同根(commonroot),其通常包括派生词缀的删除。词形还原(lemmatization)通常是指基于词的形态分析对词进行分类,其旨在消除词尾变化以返回被称为词元(lemma)的词的基础或词典形式。

词干提取和词形还原的目标是将一个词的构形(inflectional)形式以及有时候和衍生相关的形式减少到一个共同的基础形式。例如,“am”、“are”和“is”可以用“be”这个词来表示。“house”、“houses”、“house's”和“houses”可以用简单的“house”来表示。

如本文所用的,第一词和第二词之间的相似性系数是量化第一词和第二词之间的相似性的实数。在一些示例性实施例中,相似性系数范围是[0-1],但是其它范围也是可能的。在一些实施例中,利用余弦相似性来计算词矢量之间的相似性系数。

下面词语“software”和“doctor”的一些相似性结果,其中每个相似的词后面分别跟着参考“software”和“doctor”的相似性系数。按相似性系数对前15个相似词进行排序。

“software”的前15个相似词是:

–software1.0000

–sofware0.8110

–sotware0.7480

–softwre0.6879

–frontend0.6857

–android0.6615

–software0.6610

–python0.6582

–softwar0.6541

–firmware0.6282

–php0.6214

–sofrware0.6152

–sotfware0.6032

–softwere0.6016

–fullstack0.5967

–softeware0.5960

-.net0.5959

–softare0.5922

–application0.5881

–alphapp10.5841

“doctor”的前15个相似词是:

–doctor1.0000

–docter0.6323

–naturapathy0.5915

–fy10.5759

–docotor0.5530

–fy20.5443

–philosophiae0.5412

–naturopathic0.5386

–naturopathy0.5365

–introduktionslaege0.5340

–medicicne0.5327

–paediatrics0.5321

-–nautropathic0.5266

–doctore0.5247

–paeditrics0.5234

–docotr0.5226

–obstetric&gynaecology0.5207

–gpst20.5207

–homoeopathic0.5191

–physician0.5172

应当注意的是,该列表包括拼写错误的词,例如“sofware”和“docter”。然而,很多名称具有一个以上的词(例如,“软件工程师”、“行政助理”等),在操作610处必须对用于名称的多个词的压缩矢量608进行组合以获得组合矢量612,这是源自于对两个或多个词的压缩矢量进行组合所得到的压缩矢量。例如,通过组合“软件”和“工程师”的压缩矢量608获得“软件工程师”的组合矢量612(其表示为w1~w2)。

存在几种用于对矢量进行组合的合并技术。在一个示例性实施例中,通过计算矢量的平均值来组合矢量,其包括计算矢量内的每个元素的平均值。

在另一个示例性实施例中,通过计算压缩矢量608的总和来合并矢量。在其它示例性实施例中,在计算组合矢量612时不包括一些词,这是因为这些词中的一些词对于名称中的一些可能是干扰量。例如,计算诸如“presidentofthetradeassociationofamericanplumbers”之类的名称,可以忽略“of”、“the”和“american”以获得名称组合矢量612。

在一些示例性实施例中,基于它们对名称含义的预期贡献,在组合每个词矢量之前向它们分配权重,并且通过为每个词增加加权矢量来计算组合矢量。应当注意的是,权重之一可以是0,这相当于不使用该词矢量作为组合矢量。在一个示例性实施例中,利用术语频率-逆文档频率(tf-idf)评分来计算权重。

tf-idf是旨在反映一个词在集合或语料库中对文档的重要程度的数字统计。tf-idf的值与词在文档中出现的次数成比例地增加,但是与该词在语料库中的频率具有偏移,这有助于调整一些词在一般情况下更频繁出现的事实。

tf是一个项在文档中的原始频率,例如,一个项在文档中出现的次数。idf是对该词提供的信息量的度量,即该项在所有文档中是常见的还是罕见的。在一些示例性实施例中,将idf计算为文档总数的总数除以包含该项的文档的数量的算法。在其它示例性实施例中,可以利用其它等式来计算idf。然后将tf-idf计算为tf乘以idf,但可以使用tf和idf的其它组合来计算tf-idf。

“软件”是一个重要的名称词,在一个例子中,其获得的tf为2并且idf为5。因此,tf-idf为10(2x5)。诸如“usa”的另一个词很常见,并且获得的tf-idf为0或接近0。

在一些示例性实施例中,通过获得压缩矢量608的加权平均来计算组合矢量,其中权重是这些词的相应tf-idf。这可以根据下式来表示:

其中,是组合矢量612,wi是词i的权重(例如,tf-idf),是词i的压缩矢量。在另一个示例性实施例中,可以将组合矢量612简单地计算为:

在另一个示例性实施例中,使用前n个(例如,3个)最重要的词(通过它们的tf-idf测量)来计算组合矢量612。但是,一些重要的上下文可能由于该方法而丢失,这是因为一些被丢弃的词可能具有重要的语义含义。

一旦压缩矢量可以用于单字和多字名称,则执行名称相似性分析614来获得相似性值616。在一个示例性实施例中,针对名称“业务分析员”获得下面的前十个结果,其包括相似性系数:

-0.9406,“高级商业分析师”;

-0.8023,“高级分析师”;

-0.7802,“商业顾问”;

-0.7775,“金融分析师”;

-0.7640,“研究分析师”;

-0.7423,“业务发展”;

-0.7332,“业务发展经理”;

-0.7010,“业务发展主管”;

-0.6894,“导演业务发展”;以及

-05868,“高级客户经理”。

在另一个示例性实施例中,“软件工程师”和“应用程序开发人员”之间的余弦相似度是用0.6377的相似性系数来计算的。

图7根据一些示例性实施例,示出了用于识别职位和成员行业之间的相似性的方法。如上所述,每个成员在其简档中具有行业,每个公司也与行业相关联。在一些示例性实施例中,成员仅与系统中的一个行业相关联,但成员可能与多个行业(例如,互联网和计算机科学)相关联。目标是识别用户可能属于的其它行业,从而允许职位搜索扩展到相关行业,以便为成员在多个行业中找到良好的职位匹配。

在一些示例性实施例中,为了识别用户的相关行业,对职位申请数据进行分析。成员申请与不同行业(发布该职位的公司的行业)相关联的职位是一个好的迹象,其表明与该成员申请的职位具有相同行业的职位将成为向该成员或者与该成员在同一行业的成员呈现的良好候选。

例如,一家公司可能在娱乐行业,该公司雇佣了很多软件开发人员来创建与娱乐相关的程序和功能。因此,软件开发人员可能希望看到该公司的职位(尽管该公司不在软件开发行业)。

在一个示例性实施例中,行业数据404包括具有数字值(例如,25)的行业标识符。职位数据408和成员简档302通过行业标识符链接到行业数据404。

对职位申请表704进行配置,其中每行与一个职位申请相关联,该行包括职位行业和成员行业(例如,44和17)。应当注意的是,有时职位和成员行业将是相同的,而其它职位申请将具有不同的职位和成员行业。在一个示例性实施例中,基于行业标识符进行分析,但其它实施例可以对行业名称执行分析。

执行语义分析706以使用职位申请表704获知不同行业之间的相似性。在一个示例性实施例中,使用word2vec来执行语义分析706,但是也可以利用其它机器学习工具。该分析将行业标识符编码为多维矢量(n维)。这使得能够对行业执行矢量运算以发现相似性(例如,余弦相似性)。

在一个示例性实施例中,使用以下参数来执行word2vec:(min_count,5)、(window_size,1)、(negative_sample,25)、(concurrent_steps,12)、(subsample,le-3)、(num_epochs,15)。但是,也可以使用其它参数值。

语义分析706的结果包括行业相似性708,其中对于每个行业id,利用相应的相似性系数来识别多个行业。获得的结果表明,相似行业具有较高的相似性系数。例如,用于“计算机软件”、“法律服务”和“医疗实践”的前五个结果(表示为行业标识符、余弦相似度和行业名称)如下所示:

对于“计算机软件”(id4):

-6,0.6535,“互联网”;

-84,0.6401,“信息服务”;

-96,0.6208,“信息技术&服务”;

-118,0.6168,“计算机&网络安全”;以及

-3,0.5949,“计算机硬件”。

对于“法律服务”(id10):

-9,0.6507,“法律实践”;

-43,0.4956,“金融服务”;

-120,0.4915,“替代性争议解决”;

-73,0.4612,“司法机构”;以及

-147,0.4241,“工业自动化”。

对于“医疗实践”(id13):

-14,0.6635,“医院&保健”;

-12,0.5489,“生物技术”;

-139,0.5098,“精神保健”;

-124,0.5028,“健康、健壮&健身”;以及

-15,0.5011,“药品”。

图8根据一些示例性实施例,示出了用于识别成员技能之间的相似性的方法。在一些示例性实施例中,识别技能相似性以便提高职位搜索。在一些职位搜索中,如果在查询中标识了该技能,则执行查询扩展。例如,如果为“软件工程师c++”输入搜索,则将“c++”识别为一种技能。一旦将“c++”识别为技能,则可以使用类似技能扩展职位搜索查询。

也可以从职位中提取技能。例如,通过分析职位名称、描述或要求,可以针对该职位识别一种或多种技能。目标是向具有与该职位相关技能(其包括与从职位发布中发现的技能相似的技能)的成员推荐工作。如果只考虑职位技能的字面意义,那么可能会丢失重要的机会。例如,如果职位搜索系统不知道“机器学习”和“数据挖掘”技能之间的相似性,那么一个人就可能错过与该成员良好匹配的好工作。

在一些示例性实施例中,技能数据410包括技能标识符(例如,整数值)和技能描述文本(例如,c++)。在一些示例性实施例中,成员简档302链接到技能标识符。

最初,为每个技能创建压缩技能矢量810(例如,通过遵循针对名称而参照图6所描述的相同过程)。然后,创建级联技能表804,其中每行包括具有相应成员的所有技能的序列。因此,级联技能表804的第一行包括用于第一成员的技能的所有压缩技能矢量,第二行包括用于第二成员的技能的所有压缩技能矢量,以此类推。

然后,对级联技能表804执行语义分析806。在一个示例性实施例中,使用以下参数来利用word2vec:(min_count,1)、(window_size,25,其是第90个百分位数)、(negative_sample,25)、(concurrent_steps,12)、(subsample,0)、(num_epochs,15)和(embedding_size,100)。结果是技能相似性808,其中每个技能与相应的相似技能相关联)。

通常,并不是所有的技能都对成员具有同等重要性。因此,在一些示例性实施例中,通过将每个压缩技能矢量810乘以相应的权重来加权技能。在一个示例性实施例中,权重是成员为该技能接收的认可的数量。通常,成员对一个技能获得的认可越多,该成员的此技能就越重要。

“机器学习”(括号中为技能标识符)的一些示例结果包括以下内容:

-模式识别(5449),0.9100;

–神经网络(4892),0.9053;

–人工智能(2407),0.8989;

–自然语言处理(5835),0.8836;

–算法(1070),0.8834;

–算法设计(6001),0.8791;

–计算机视觉(4262),0.8779;

-latex(6420),0.8500;

–计算机科学(1541),0.8441;

–深度学习(50518),0.8411;

–数据挖掘(2682),0.8356;

–文本挖掘(7198),0.8326;

–并行计算(5626),0.8308;

–推荐系统(12226),0.8306;

–人工神经网络(12469),0.8252;

–数据科学(50061),0.8213;

–通用算法(7630),0.8093;

–python(1346),0.8037;以及

–图像处理(2741),0.8019。

在其它示例性实施例中,可以对公司名称执行相同的相似性分析,使得如果成员输入针对指定公司中的职位的搜索查询,则职位结果还可以包括来自类似公司的职位发布。

图9根据一些示例性实施例,示出了用于使用相似行业来扩展职位搜索查询902的方法。在确定了不同行业的相似性之后,可以使用相似性系数来改进和扩展职位搜索。

用户128在客户端设备104中输入搜索查询902,并且将搜索查询902发送到社交网络服务器。标记器程序分析该查询并判断查询902是否包括嵌入式行业908(例如,计算机科学)、或诸如技能、名称、公司等等之类的其它参数。例如,如果职位搜索查询902是“互联网中的软件工程师”,则标记器识别出“互联网”是行业,“软件工程师”是名称。

在一些示例性实施例中,类似于搜索查询902中的行业908的类似行业914被识别并用于扩展职位搜索。例如,识别出行业908的前五个类似行业以用于搜索,但是其它实施例可以利用不同数量的类似行业进行查询扩展。此外,在一些示例性实施例中,当进行搜索时,例如通过使用相似性系数,对相似行业进行加权。此外,在一些示例性实施例中,识别阈值相似性系数,并且将具有关于阈值相似性系数的相似性系数的行业包括在职位搜索中。

在一个示例性实施例中,将两个类似的行业添加到“互联网”行业;“计算机软件”和“在线媒体”。在操作916处,职位搜索引擎利用搜索查询902和类似行业914来为用户128执行职位搜索。在操作918处,职位搜索引擎对候选作业进行排序以在操作920处呈现给用户。

在一个示例性实施例中,对职位进行排序包括:对职位的行业等于搜索查询902的行业的结果进行提升,以及对职位的行业等于用户128的行业的结果进行提升。

图10根据一些示例性实施例,示出了用于扩展具有类似成员技能的职位搜索查询的方法。职位搜索查询902还可以包括由搜索查询902中的标记器识别的技能1006。例如,如果识别出技能“机器学习”,则获得类似技能1012并将其用于职位搜索1016。在一个示例性实施例中,对于技能“机器学习”,包括以下的相似技能以用于搜索职位1016:“模式识别”、“神经网络”、“人工智能”、“自然语言处理”和“算法”。

在一些示例性实施例中,在搜索中包括预定数量的相似技能(例如,在3到20或更大的范围内的数字)。在其它示例性实施例中,识别阈值相似性系数,并且将相似性系数高于阈值的技能包括在职位搜索1016中。在搜索职位之后,对职位进行排序(1018)并呈现(1020)给用户。

图11根据一些示例性实施例,示出了用于使用类似名称来扩展职位搜索查询的方法。职位搜索查询902还可以包括由搜索查询902中的标记器识别的名称1104。例如,如果识别出“业务分析师”,则获得类似名称1110并用于搜索1116。在一个示例性实施例中,对于名称“业务分析员”,包括以下的相似技能以用于搜索职位1116:“高级业务分析师”、“高级分析师”、“商业顾问”和“金融分析师”。

在一些示例性实施例中,在搜索中包括预定数量的类似名称(例如,在3到20或更大的范围内的数字)。在其它示例性实施例中,识别阈值相似性系数,并且将相似性系数高于阈值的名称包括在职位搜索1116中。在搜索职位之后,对职位进行排序(1118)并呈现(1120)给用户。

图12根据一些示例性实施例,示出了用于使用类似名称、技能和行业来扩展职位搜索查询的方法。如图9到图11中所示,可以通过分别使用类似的行业、技能或名称来扩展职位搜索。在一个示例性实施例中,可以通过名称1204、技能1206和行业1208(如果存在的话)的任何组合来扩展职位搜索。

例如,如果标记器在搜索查询902中识别出名称1204、技能1206和行业1208,则对职位1216的搜索是基于初始搜索查询902,除了类似名称1210、类似技能1212和类似行业1214之外。如果另一个搜索查询902包括名称和技能,则通过添加对应的类似名称和类似技能来增强相对应的职位搜索。在操作中搜索之后,在操作1218中对职位进行排序,并在操作1220中将其呈现给用户。

图13示出了用于实现示例性实施例的社交网络服务器。在一个示例性实施例中,社交网络服务器112包括搜索服务器1302、名称相似性引擎1304、技能相似性引擎1306、职位搜索/建议服务器1310、行业相似性引擎1312、用户界面1314、以及多个数据库(其包括社交图数据库118、成员简档数据库120、职位数据库122、成员活动数据库136和公司数据库124)。

搜索服务器1302在社交网络上执行数据搜索,例如搜索成员或公司。职位搜索/建议服务器1310基于搜索查询或基于成员简档来执行职位搜索,以便提供职位建议。在一些示例性实施例中,搜索服务器1310包括用于执行搜索的机器学习算法,其利用多个特征来对职位进行选择和评分。这些特征至少包括以下各项中的一个或多个:名称、行业、技能、成员资料、公司简介、职位名称、职位数据、地区、以及薪资范围。

名称相似性引擎1304分析数据以便找到不同名称之间的相似性。例如,名称相似性引擎1304执行图6和7中所示的操作。

技能相似性引擎1306分析数据以便找到不同技能之间的相似性。例如,技能相似性引擎1306执行图8中所示的操作。

行业相似性引擎1312分析数据以便找到不同行业之间的相似性。例如,行业相似性引擎1312执行图9中所示的操作。

用户界面1314与客户端设备128进行通信以交换用户界面数据,以向用户呈现用户界面1314。应当注意,图13中所示的实施例只是示例,其并没有描述每种可能的实施例。其它实施例可以利用不同的服务器、另外的服务器,将两个或更多个服务器的功能组合到单一服务器中,利用分布式服务器池等等。因此,图13中所示的实施例不应被解释为排他性的或者限制性的,而是说明性的。

图14是根据一些示例性实施例,示出与职位搜索引擎的改进用户交互的图。在一些示例性实施例中,跟踪职位申请,并观察到随着成员名称和职位名称之间的相似性(以余弦相似性测量)增加,职位申请1402的百分比增加。

在一些示例性实施例中,用户被给予取消工作建议的选项,例如,“我不喜欢你提出的这项工作”。同样,对职位申请进行跟踪,并观察到随着成员和职位名称之间的相似性(以余弦相似性衡量)增加,被取消的工作数量1404减少。

图15是根据一些示例性实施例,用于通过增加与在职位搜索中输入的职位名称类似的名称来扩展职位搜索的方法1500的流程图。虽然顺序地呈现和描述了该流程图中的各种操作,但普通技术人员应当理解,可以以不同的顺序执行这些操作中的一些或所有操作、对这些操作中的一些或所有操作进行组合或省略或者并行地执行。

在操作1502处,具有一个或多个处理器的社交网络服务器识别社交网络中的成员的多个职位名称。从操作1502,该方法流程转到操作1504,其中,社交网络服务器利用机器学习程序执行对所述多个职位名称的语义分析,以识别所述多个职位名称之间的相似性系数,其中机器学习程序利用社交网络数据来识别相似性系数。

此外,从操作1504,该方法流程转到操作1506,以便由社交网络服务器从第一成员接收职位搜索查询,该职位搜索查询包括来自所述多个职位名称的查询职位名称。

在操作1508处,社交网络服务器使用与查询职位名称类似的职位名称来扩展职位搜索查询,在操作1510处,社交网络服务器执行扩展的职位搜索查询以生成多个职位结果。从操作1510,该方法流程转到操作1512,以用于在显示器上呈现最佳职位结果中的一个或多个职位结果。

在一个实施例中,扩展职位搜索查询还包括:确定与查询职位名称的相似性系数大于预定阈值的职位名称。

在另一个实施例中,扩展职位搜索查询还包括:将所确定的职位名称添加到职位搜索查询以获得扩展的职位搜索查询。

在一个例子中,执行所述语义分析还包括:识别多个名称中的词;为每个词分配一个矢量;计算每个词的压缩矢量,使得具有相似含义的词具有彼此接近的矢量;对于具有多个词的名称,通过对名称中的这些词的压缩矢量进行聚合来计算组合矢量。

在另一个例子中,社交网络数据包括以下各项中的一个或多个:成员简档数据、社交网络中的成员活动数据、职位申请数据、职位发布数据和公司数据、或者其任意组合。

第一职位名称和第二职位名称之间的相似性系数是对第一职位名称和第二职位名称之间的相似性进行量化的实数。

在一个实施例中,该方法还包括:由社交网络服务器解析搜索查询以识别多个词;检测所述多个词中的一个或多个词与查询职位名称相关联。

在一个例子中,所述扩展的职位搜索查询是通过使用包括职位名称和成员职位名称的所识别特征进行训练的机器学习算法来执行的。

在另一个例子中,该方法还包括:在执行扩展的职位搜索查询之后,对来自所述多个职位结果中的每个职位结果进行评分;基于该评分对所述多个职位结果进行排序。

在另一个例子中,该方法还包括:在没有接收到职位搜索查询的情况下识别对第二成员的职位推荐,其中识别职位推荐包括:访问第二成员的简档数据,该简档数据包括第二成员职位名称;识别与第二成员职位名称相似的职位名称;由社交网络服务器基于第二成员的简档数据和与第二成员职位名称相似的所识别的职位名称,来执行职位搜索;使得在显示器上呈现来自职位搜索的一个或多个结果。

图16是示出代表性软件架构1602的框图1600,其中该软件架构1602可以与本文所描述的各种硬件架构结合使用。图16仅是软件架构1602的非限制性示例,应当理解的是,可以实现许多其它架构以促进本文所描述的功能。软件架构1602可以在诸如图17的机器1700之类的硬件上执行,其中机器1700包括处理器1704、存储器/存贮设备1706和输入/输出(i/o)组件1718等等。示出了代表性硬件层1650,其可以代表例如图17的机器1700。代表性硬件层1650包括具有相关联的可执行指令1654的一个或多个处理单元1652。可执行指令1654表示软件架构1602的可执行指令,其包括图1-15的方法、模块等等的实现。硬件层1650还包括存储器和/或存储模块1656,存储器和/或存储模块1656也具有可执行指令1654。硬件层1650还可以包括其它硬件1658,其表示硬件层1650的任何其它硬件,例如示出成机器1700的一部分的其它硬件。

在图16的示例性架构中,可以将软件架构1602概念化为层的堆栈,其中每个层提供特定的功能。例如,软件架构1602可以包括诸如操作系统1620、库1616、框架/中间件1614、应用程序1612和表示层1610之类的层。在操作上,层中的应用程序1612和/或其它组件可以通过软件栈调用应用程序接口(api)调用1604,并接收响应于api调用1604的响应、返回值等等(其示出为消息1608)。所示出的层在本质上是代表性的,并非所有的软件架构都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件层1614,而其它操作系统可以提供这样的层。其它软件架构可以包括另外的或不同的层。

操作系统1620可以管理硬件资源并提供公共服务。操作系统1620可以包括例如内核1618、服务1622和驱动程序1624。内核1618可以充当为硬件和其它软件层之间的抽象层。例如,内核1618可以负责存储器管理、处理器管理(例如,调度)、组件管理、网络化、安全设置等等。服务1622可以为其它软件层提供其它公共服务。驱动程序1624可以负责控制底层硬件接口或者与之交互。例如,驱动程序1624可以根据硬件配置,包括显示驱动程序、相机驱动程序、驱动程序、闪存驱动程序、串行通信驱动程序(例如,通用串行总线(usb)驱动程序)、驱动程序、音频驱动程序、电源管理驱动程序等等。

库1616可以提供可以由应用程序1612和/或其它组件和/或层使用的公共基础结构。库1616通常提供允许其它软件模块以比直接与底层操作系统1620功能(例如,内核1618、服务1622和/或驱动程序1624)直接接口更容易方式来执行任务的功能。库1616可以包括系统库1642(例如,c标准库),其可以提供诸如存储器分配功能、字符串操作功能、数学功能等等之类的功能。另外,库1616可以包括api库1644,例如媒体库(如,用于支持诸如mpeg4、h.264、mp3、aac、amr、jpg、png之类的各种媒体格式的呈现和操作的库)、图形库(例如,可以用于在显示器上呈现二维和三维图形内容的opengl框架)、数据库库(例如,可以提供各种关系数据库功能的sqlite)、web库(例如,可以提供web浏览功能的webkit)等等。库1616还可以包括各种各样的其它库1646,以向应用程序1612和其它软件组件/模块提供许多其它api。

框架1614(其有时也称为中间件)可以提供能够由应用程序1612和/或其它软件组件/模块使用的更高级别的公共基础结构。例如,框架1614可以提供各种图形用户界面(gui)功能、高级资源管理、高级位置服务等等。框架1614可以提供能够由应用程序1612和/或其它软件组件/模块使用的广泛的其它api,其中一些可以是特定于特定的操作系统或平台。

应用程序1612包括相似性应用程序1662、职位搜索/建议1310、内置应用程序1636和第三方应用程序1638。相似性应用程序1662包括名称相似性引擎1304、技能相似性引擎1306和行业相似性引擎1312,如上面参照图13所讨论的。代表性内置应用程序1636的例子可以包括但不限于:联系人应用程序、浏览器应用程序、书籍阅读器应用程序、位置应用程序、媒体应用程序、消息传递应用程序和/或游戏应用程序。第三方应用程序1638可以包括任何内置应用程序1636以及各种其它应用程序。在特定的例子中,第三方应用程序1638(例如,由不同于特定平台的供应商的实体使用androidtm或iostm软件开发工具包(sdk)开发的应用程序)可以是在诸如iostm、androidtmphone或其它移动操作系统之类的移动操作系统上运行的移动软件。在该例子中,第三方应用程序1638可以调用由诸如操作系统1620之类的移动操作系统提供的api调用1604,以促进本文所描述的功能。

应用程序1612可以利用内置操作系统功能(例如,内核1618、服务1622和/或驱动程序1624)、库(例如,系统库1642、api库1644和其它库1646)或框架/中间件1614,以创建用于与系统的用户进行交互的用户界面。替代地或另外地,在一些系统中,与用户的交互可以通过表示层(例如,表示层1610)发生。在这些系统中,应用程序/模块“逻辑”可以与与用户交互的应用程序/模块的方面分离。

一些软件架构利用虚拟机。在图16的例子中,这通过虚拟机1606来示出。虚拟机创建软件环境,其中应用程序/模块可以像在硬件机器(例如,图17的机器1700)上执行一样执行。虚拟机1606由主机操作系统(例如,图16中的操作系统1620)托管,并且通常(但不总是)具有虚拟机监视器1660,虚拟机监视器1660管理虚拟机1606的操作以及与主机操作系统(例如,操作系统1620)的交互。软件架构在虚拟机1606内执行诸如操作系统1634、库1632、框架/中间件1630、应用程序1628和/或表示层1626。在虚拟机1606内执行的这些软件架构层可以与先前描述的相应层相同,也可以不同。

图17是根据一些示例性实施例,示出机器1700的组件的框图,其能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所讨论的方法中的任何一种或多种。具体而言,图17示出了计算机系统的示例形式的机器1700的图形表示,其中在机器1700中,可以执行用于使机器1700执行本文所讨论的方法中的任何一种或多种的指令1710(例如,软件、程序、应用程序、小应用程序、app或其它可执行代码)。例如,指令1710可以使机器1700执行图6到图12和图15的流程图。另外地或替代地,指令1710可以实现社交网络服务器112(其包括图13的搜索服务器1302、名称相似性引擎1304、技能相似性引擎1306、职位搜索/建议1310、行业相似性引擎1312、以及用户界面1314等等)的程序。指令1710将通用的未编程的机器1700转换成特定的机器1700,该机器1700被编程为以所描述的方式执行所描述和示出的功能。

在替代的实施例中,机器1700作为独立设备进行操作或者可以耦合(例如,联网)到其它机器。在网络化部署中,机器1700可以在服务器-客户端网络环境中的服务器机器或客户端机器的容量中运行,或者作为对等(或分布式网络环境)中的对等机器进行运行。机器1700可以包括但不限于:交换机、控制器、服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能家电)、其它智能设备、网络设备、网络路由器、网络交换机、网桥、或者能够顺序地或以其它方式执行指令1710的任何机器,其中指令1710指定要由机器1700采取的动作。此外,虽然仅示出了单个机器1700,但术语“机器”也应当是包括机器集合1700,它们单独地或共同地执行指令1710以执行本文所讨论的方法中的任何一种或多种。

机器1700可以包括处理器1704、存储器/存贮设备1706和i/o组件1718,它们可以被配置为例如经由总线1702来彼此通信。在示例性实施例中,处理器1704(例如,中央处理器单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、另一处理器或者其任何适当组合)可以包括例如能够执行指令1710的处理器1708和处理器1712。术语“处理器”旨在包括多核处理器,后者可以包括能够同时执行指令的两个或更多个独立处理器(它们有时称为“核”)。虽然图17示出了多个处理器1704,但机器1700可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核心的多个处理器、或者其任意组合。

存储器/存贮设备1706可以包括存储器1714(例如,主存储器或其它存储器存贮设备)和存储单元1716,二者都可以由处理器1704例如通过总线1702进行访问。存储单元1716和存储器1714存储指令1710,后者包含本文所描述的方法或功能中的任何一个或多个。指令1710还可以在执行期间,完全地或部分地驻留在存储器1714、存储单元1716、处理器1704中的至少一个(例如,处理器的高速缓冲存储器)内、或者其任何适当的组合内。因此,存储器1714、存储单元1716和处理器1704的存储器是机器可读介质的例子。

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

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

在另外的示例性实施例中,i/o组件1718可以包括生物识别组件1730、运动组件1734、环境组件1736或者位置组件1738、以及各种各样的其它组件。例如。生物识别组件1730可以包括用于检测表达(例如,手表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑电波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等等的组件。运动组件1734可以包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等等。环境组件1736可以包括例如照明传感器组件(例如,光度计)、温度传感器组件(例如,检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如,气压计)、声学传感器组件(例如,检测背景噪声的一个或多个麦克风)、接近传感器组件(例如,检测附近物体的红外传感器)、气体传感器(例如,用于检测危险气体浓度以确保安全或者测量大气中污染物的气体检测传感器)、或者可以提供与周围物理环境相对应的指示、测量或信号的其它组件。位置组件1738可以包括位置传感器组件(例如,gps接收器组件)、高度传感器组件(例如,用于检测可以从其导出高度的空气压力的高度计或气压计)、方向传感器组件(例如,磁力计)等等。

可以使用各种各样的技术来实现通信。i/o组件1718可以包括通信组件1740,其可操作以分别经由耦合1724和耦合1722将机器1700耦合到网络1732或设备1720。例如,通信组件1740可以包括网络接口组件或者与网络1732进行接口的其它适当设备。在另外的例子中,通信组件1740可以包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(nfc)组件、组件(例如,低功耗)、组件、以及用于通过其它模式提供通信的其它通信组件。设备1720可以是另一种机器或者各种各样的外围设备中的任何一种(例如,经由usb耦合的外围设备)。

此外,通信组件1740可以检测标识符或包括可操作以检测标识符的组件。例如,通信组件1740可以包括射频识别(rfid)标签读取器组件、nfc智能标签检测组件、光学读取器组件(例如,用于检测一维条形码(如,通用产品码(upc)条形码)、多维条形码(如,快速响应(qr)码、aztec码、数据矩阵、dataglyph、maxicode、pdf417、超级码、uccrss-2d条形码和其它光学码)的光学传感器)、或声学检测组件(例如,用于识别标记的音频信号的麦克风)。另外,可以经由通信组件1740导出各种信息,比如经由互联网协议(ip)地理位置的位置、经由信号三角测量的位置、经由检测可以指示特定位置的nfc信标信号的位置等等。

在各种示例性实施例中,网络1732的一个或多个部分可以是adhoc网络、内联网、外联网、vpn、lan、wlan、wan、wwan、man、互联网、互联网的一部分、pstn的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络、或者两种或更多这样的网络的组合。例如,网络1732或网络1732的一部分可以包括无线或蜂窝网络,耦合1724可以是码分多址(cdma)连接、全球移动通信系统(gsm)连接或者其它类型的蜂窝或无线耦合。在该例子中,耦合器1724可以实现各种类型的数据传输技术中的任何一种,例如,单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线电服务(gprs)技术、gsm演进增强数据速率(edge)技术、包括3g、第四代无线(4g)网络的第三代合作伙伴计划(3gpp)、通用移动电信系统(umts)、高速分组接入(hspa)、全球微波互通接入(wimax)、长期演进(lte)标准、由各种标准制定组织规定的其它标准、其它远程协议或其它数据传输技术。

可以经由网络接口设备(例如,包括在通信组件1740中的网络接口组件)使用传输介质并利用多种众所周知的传输协议中的任何一种(例如,超文本传输协议(http)),在网络1732上发送或接收指令1710。类似地,可以经由到设备1720的耦合1722(例如,对等耦合),使用传输介质来发送或接收指令1710。术语“传输介质”应当被视为包括能够存储、编码或携带指令1710以供机器1700执行的任何无形介质,以及包括有助于这种软件的通信的数字或模拟通信信号或其它无形介质。

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

足够详细地描述了本文所示出的实施例,以使本领域普通技术人员能够实践所公开的教导内容。可以使用其它实施例并从中导出其它实施例,使得可以在不脱离本公开内容的保护范围的情况下进行结构和逻辑替换和改变。因此,具体实施方式不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求书以及这些权利要求所赋予的等同物的全部范围来界定。

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

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