Bridging skills gap

This disclosure provides for a social networking server that helps a member of a social networking service find a bridge between his or her current skill set and skills associated with a job listed on the social networking service. The social networking server forms a skills graph for the members of the social networking service, where nodes of the skills graph correspond to skills possessed by the members. The nodes are collected into pairs, where an edge between a selected pair is established based on a confidence measure that a given member possesses each skill of the selected pair. By traversing a path through the nodes of the skills graph, the social networking service helps a member identify intermediary skills that the member could learn to help bridge a gap between his or her current skill set and skills associated with a job opening.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to a system and method for recommending intermediary skills given an initial skill and a desired skill, and in particular, for generating a skills graph, where each node of the skills graph corresponds to a skill, and traversing the skills graph from the initial skill to the desired skill to determine a minimum distance value or maximum distance value path skill, where the path includes intermediary nodes corresponding to intermediary skills for recommendation.

BACKGROUND

An online social networking service provides a platform whereby a member of the social networking service may connect with other members of the social networking service. The social networking service provides a number of services to the member, such as job seeking services, job hosting services, member profile services, job history services, resume building services, and other such services. From interacting with these services, the social networking service stores information provided by members in a corresponding member profile.

Where the social networking service advertises one or more job openings, a job opening may be associated with one or more skills that the associated employer would like the potential employee to have. There may be a number of candidates for the job opening, but none of the potential candidates may have the skills that the employer would like the employee to have for the job opening. In addition, some candidates for the job opening may desire to learn the skills associated with the job opening, but may be unsure as to how they would go about acquiring such skills. Other candidates may also be skilled within their own industry, but would like to transition to another industry or another career via the job associated with the job opening. As there may be little or no direct correlation between the skills currently possessed by these candidates and the skills associated with the job opening, it may be difficult for these candidates to determine which intermediary skills they should acquire or learn to transition from their current skill set to the skills associated with the job opening. Thus, the job opening may remain vacant or unfulfilled as there may be no suitable candidates to fill it. Accordingly, there is a benefit to both employers and job candidates in identifying transitional or intermediary skills.

DETAILED DESCRIPTION

Example methods and systems are directed to automatically generating electronic presentations and, more particularly, to integrating different data architectures to automatically generate an electronic presentation having various metrics obtained from different data sources. The disclosed embodiments include a client-server architecture where a social networking server has access to a social graph of its social networking members. The social networking server includes various modules and engines that facilitate identifying intermediary skills given a set of initial skills and one or more target or desired skills. To identify the intermediary skills, the social networking server initially builds a skills graph where the nodes of the graph are associated with a given skill and edges between the nodes indicate the degree of similarity between skills associated with their corresponding nodes. By finding a path from a node associated with an initial skill to a node associated with a desired or target skill, the social networking server can identify those skills which are intermediary and would help a person with the initial skill gain or achieve the desired skill. The technical benefit of the approach disclosed herein is that it reduces the amount of human effort needed to research and evaluate skills that would help an individual achieve the desired skill.

With reference toFIG. 1, an example embodiment of a high-level client-server-based network architecture102is shown. A social networking server112provides server-side functionality via a network114(e.g., the Internet or wide area network (WAN)) to one or more client devices104.FIG. 1illustrates, for example, a web client106(e.g., a browser, such as the Internet Explorer® browser developed by Microsoft® Corporation of Redmond, Wash. State), client application(s)108, and a programmatic client110executing on client device104. The social networking server112is further communicatively coupled with one or more database servers124that provide access to one or more databases116-122.

The client device104may comprise, but is not limited to, a mobile phone, desktop computer, laptop, portable digital assistants (PDAs), smart phone, tablet, ultra book, netbook, laptop, multi-processor system, microprocessor-based or programmable consumer electronic, or any other communication device that a user126may utilize to access the social networking server112. In some embodiments, the client device104may comprise a display module (not shown) to display information (e.g., in the form of user interfaces). In further embodiments, the client device104may comprise one or more of touch screens, accelerometers, gyroscopes, cameras, microphones, global positioning system (GPS) devices, and so forth. The client device104may be a device of a user126that is used to perform one or more searches for user profiles accessible to, or maintained by, the social networking server112.

In one embodiment, the social networking server112is a network-based appliance that responds to initialization requests or search queries from the client device104. One or more users126may be a person, a machine, or other means of interacting with the client device104. In various embodiments, the user126is not part of the network architecture102, but may interact with the network architecture102via the client device104or another means. For example, one or more portions of the network114may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular telephone network, a wireless network, a WiFi network, a WiMax network, another type of network, or a combination of two or more such networks.

The client device104may include one or more applications (also referred to as “apps”) such as, but not limited to, a web browser, messaging application, electronic mail (email) application, a social networking access client, and the like. In some embodiments, if the social networking access client is included in the client device104, then this application is configured to locally provide the user interface and at least some of the functionalities with the application configured to communicate with the social networking server112, on an as needed basis, for data and/or processing capabilities not locally available (e.g., access to a member profile, to authenticate a user126, to identify or locate other connected members, etc.). Conversely if the social networking access client is not included in the client device104, the client device104may use its web browser to access the initialization and/or search functionalities of the social networking server112.

One or more users126may be a person, a machine, or other means of interacting with the client device104. In example embodiments, the user126is not part of the network architecture102, but may interact with the network architecture102via the client device104or other means. For instance, the user126provides input (e.g., touch screen input or alphanumeric input) to the client device104and the input is communicated to the client-server-based network architecture102via the network114. In this instance, the social networking server112, in response to receiving the input from the user126, communicates information to the client device104via the network114to be presented to the user126. In this way, the user126can interact with the social networking server112using the client device104.

Further, while the client-server-based network architecture102shown inFIG. 1employs a client-server architecture, the present subject matter is of course not limited to such an architecture, and could equally well find application in a distributed, or peer-to-peer, architecture system, for example.

In addition to the client device104, the social networking server112communicates with other one or more database server(s)124and/or database(s)116-122. In one embodiment, the social networking server112is communicatively coupled to a member activity database116, a social graph database118, a member profile database120, and a job profile database122. The databases116-122may be implemented as one or more types of databases including, but not limited to, a hierarchical database, a relational database, an object-oriented database, one or more flat files, or combinations thereof.

The member profile database120stores member profile information about members who have registered with the social networking server112. With regard to the member profile database120, the member may include an individual person or an organization, such as a company, a corporation, a nonprofit organization, an educational institution, or other such organizations.

Consistent with some embodiments, when a person initially registers to become a member of the social networking service provided by the social networking server112, the person will be prompted to provide some personal information, such as his or her name, age (e.g., birthdate), gender, interests, contact information, home town, address, the names of the member's spouse and/or family members, educational background (e.g., schools, majors, matriculation and/or graduation dates, etc.), employment history, skills, professional organizations, and so on. This information is stored, for example, in the member profile database120. Similarly, when a representative of an organization initially registers the organization with the social networking service provided by the social networking server112, the representative may be prompted to provide certain information about the organization. This information may be stored, for example, in the member profile database120. With some embodiments, the profile data may be processed (e.g., in the background or offline) to generate various derived profile data. For example, if a member has provided information about various job titles the member has held with the same company or different companies, and for how long, this information can be used to infer or derive a member profile attribute indicating the member's overall seniority level, or seniority level within a particular company. With some embodiments, importing or otherwise accessing data from one or more externally hosted data sources may enhance profile data for both members and organizations. For instance, with companies in particular, financial data may be imported from one or more external data sources, and made part of a company's profile.

Members of the social networking service may establish connections with one or more members and/or organizations of the social networking service. The connections may be defined as a social graph, where the member and/or organization is represented by a vertex in the social graph and the edges identify connections between vertices. In this regard, the edges may be bilateral (e.g., two members and/or organizations have agreed to form a connection), unilateral (e.g., one member has agreed to form a connection with another member), or combinations thereof. In this manner, members are said to be first-degree connections where a single edge connects the vertices representing the members; otherwise, members are said to be “nth”-degree connections where “n” is defined as the number of edges separating two vertices. As an example, two members are said to be “2nd-degree” connections where each member shares a connection in common with the other member, but the members are not directly connected to one another. In one embodiment, the social graph maintained by the social networking server112is stored in the social graph database118.

Although the foregoing discussion refers to “social graph” in the singular, one of ordinary skill in the art will recognize that the social graph database118may be configured to store multiple social graphs. For example, and without limitation, the social networking server112may maintain multiple social graphs, where each social graph corresponds to various geographic regions, industries, members, or combinations thereof.

As members interact with the social networking service provided by the social networking server112, the social networking server112is configured to monitor these interactions. Examples of interactions include, but are not limited to, commenting on content posted by other members, viewing member profiles, editing or viewing a member's own profile, sharing content outside of the social networking service (e.g., an article provided by an entity other than the social networking server112), updating a current status, posting content for other members to view and/or comment on, and other such interactions. In one embodiment, these interactions are stored in a member activity database116, which associates interactions made by a member with his or her member profile stored in the member profile database120.

As the social networking server112provides a platform for individuals and organizations to interact via a social networking service, one or more of the organizations may leverage the social networking service to recruit individual members or to advertise job openings within their organization. Accordingly, the social networking server112provides a job profile database122that maintains one or more job profiles corresponding to job openings that organizational members have made available via the social networking service. In one embodiment, a job profile includes the organization associated with the job, a job title identifying a title associated with the job, one or more job functions expected to be performed by the individual hired for the job, minimum educational requirements for the job, and one or more skills that a job candidate should possess when applying for the job. In this manner, as individual members interact with the social networking service provided by the social networking server112, one or more advertisements corresponding to the job profiles may be displayed to the individual members.

In one embodiment, the social networking server112communicates with the various databases116-122through one or more database server(s)124. In this regard, the database server(s)124provide one or more interfaces and/or services for providing content to, modifying content in, removing content from, or otherwise interacting with, the databases116-122. For example, and without limitation, such interfaces and/or services may include one or more Application Programming Interfaces (APIs), one or more services provided via a Service-Oriented Architecture (“SOA”), one or more services provided via a REST-Oriented Architecture (“ROA”), or combinations thereof. In an alternative embodiment, the social networking server112communicates with the databases116-122and includes a database client, engine, and/or module, for providing data to, modifying data stored within, and/or retrieving data from, the one or more databases116-122.

While the database server(s)124is illustrated as a single block, one of ordinary skill in the art will recognize that the database server(s)124may include one or more such servers. For example, the database server(s)124may include, but are not limited to, a Microsoft® Exchange Server, a Microsoft® Sharepoint® Server, a Lightweight Directory Access Protocol (“LDAP”) server, a MySQL database server, or any other server configured to provide access to one or more of the databases116-122, or combinations thereof. Accordingly, and in one embodiment, the database server(s)124implemented by the social networking service are further configured to communicate with the social networking server112.

FIG. 2illustrates the social networking server112ofFIG. 1in accordance with an example embodiment. In one embodiment, the social networking server112includes one or more processor(s)204, one or more communication interface(s)202, and a machine-readable medium206that stores computer-executable instructions for one or more modules208and data210used to support one or more functionalities of the modules208.

The various functional components of the social networking server112may reside on a single device or may be distributed across several computers in various arrangements. The various components of the social networking server112may, furthermore, access one or more databases (e.g., databases116-122or any of data210), and each of the various components of the social networking server112may be in communication with one another. Further, while the components ofFIG. 2are discussed in the singular sense, it will be appreciated that in other embodiments multiple instances of the components may be employed.

The one or more processors204may be any type of commercially available processor, such as processors available from the Intel Corporation, Advanced Micro Devices, Texas Instruments, or other such processors. Further still, the one or more processors204may include one or more special-purpose processors, such as a Field-Programmable Gate Array (FPGA) or an Application Specific Integrated Circuit (ASIC). The one or more processors204may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. Thus, once configured by such software, the one or more processors204become specific machines (or specific components of a machine) uniquely tailored to perform the configured functions and are no longer general-purpose processors.

The one or more communication interfaces202are configured to facilitate communications between the social networking server112, the client device104, and one or more of the database server(s)124and/or databases116-122. The one or more communication interfaces202may include one or more wired interfaces (e.g., an Ethernet interface, Universal Serial Bus (“USB”) interface, a Thunderbolt® interface, etc.), one or more wireless interfaces (e.g., an IEEE 802.11b/g/n interface, a Bluetooth® interface, an IEEE 802.16 interface, etc.), or combinations of such wired and wireless interfaces.

The machine-readable medium206includes various modules208and data210for implementing the social networking server112. The machine-readable medium206includes one or more devices configured to store instructions and data temporarily or permanently and may include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage (e.g., Erasable Programmable Read-Only Memory (EEPROM)) and/or any suitable combination thereof. The term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the modules208and the data210. Accordingly, the machine-readable medium206may be implemented as a single storage apparatus or device, or, alternatively and/or additionally, as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices. As shown inFIG. 2, the machine-readable medium206excludes signals per se.

In one embodiment, the modules208are written in a computer-programming and/or scripting language. Examples of such languages include, but are not limited to, C, C++, C#, Java, JavaScript, Perl, Python, or any other computer programming and/or scripting language now known or later developed.

With reference toFIG. 2, the modules208of the social networking server112include, but are not limited to, a user interface module234, a data processing engine212, a graph analytic engine214, a graph construction module216, a confidence module218, and a reporting module220. The data210referenced and used by the modules208include one or more member profile(s)222, one or more job profile(s)224, various skill nodes226, skill pairings228, graph edge values230, and a skills report232. The result from processing the data210includes the skills report232, which is communicated to the client device104.

The user interface module234is configured to provide access to, and interactions with, the social networking server112. In one embodiment, the user interface module234provides one or more graphical user interfaces, which may be provided using the Hypertext Transfer Protocol (HTTP). The graphical user interfaces are displayable by the client device104and accept input from the user126for interacting with the social networking server112. Further still, the user interface module234may be configured to provide such interfaces to one or more clients displayable by the client device104, such as the web client106, one or more client applications108, or the programmatic client110. By interacting with the user interface module234, the user126can instruct the social networking server112to generate one or more skills report232from various profile data (e.g., the member profile(s)222and the job profile(s)224) and selected ones of the job profile(s)224. Further still, the user interface module234is configured to generate a display of one or more of the skills report232generated by the social networking server112.

In one embodiment, the user interface module234provides a graphical user interface for receiving a user selection of a given target or desired skill and/or an advertisement associated with a job opening corresponding to one or more of the job profile(s)224. A target or desired skill may include one or more skills associated with a particular job opening or one or more skills associated with another member of the social networking service. In this regard, when the user selects one or more skills as targets or desired skills, the social networking server112generates a skills report232(as discussed below) that identifies one or more intermediary skills the user126may acquire or learn to help him or her achieve the desired or target skill.

In addition, the social networking server112may identify training programs offered by organizational members to help the user126learn the intermediary skills as they progress towards the desired or target skill. In one embodiment, an organizational member notifies the social networking server112that the organizational member offers the training program and identifies one or more skills that a participant would learn from engaging such training program.

Similarly, during interactions with the social networking service, the user126may be presented with one or more advertisements for job openings associated with one or more of the job profiles224. When such advertisement is selected, the user126may be presented with details about the associated job opening such as the organizational member associated with the job opening, the job functions associated with the job opening, the skills that a potential candidate for the job opening should possess, and other such details retrievable from the corresponding job profile224. Further still, an option may be presented to the user126to learn how the user126can achieve or learn the skills associated with the job opening. In a similar fashion as selecting a target or desired skill, the social networking server112provides a listing of one or more training programs that would help the user126learn or achieve one or more intermediary skills as he or she progresses towards the skills associated with the job opening.

The data processing engine212is configured to process data retrieved from one or more of the databases116-122. In addition, the data processing engine212provides a platform in which one or more of the other modules208are instantiated, such as the graph analytic engine214, the graph construction module216, the confidence module218, and/or the reporting module220. In one embodiment, the data processing engine212is implemented as Apache Spark™, which is available from the Apache Software Foundation. As known to one of ordinary skill in the art, Apache Spark™ is an open-source cluster computing framework that includes various modules and APIs for streaming, Structured Query Language (SQL), machine learning and graph processing. Further still, and in one embodiment, the data processing engine212is configured to retrieve data from one or more of the databases116-122including, but not limited to, one or more social graphs from the social graph database118, one or more member profiles222from the member profile database120, and one or more job profiles224from the job profile database122. Member profile information retrieved from the member profile database120is stored as the member profile(s)222, and job profile information retrieved from the job profile database122is stored as the job profile(s)224. As discussed below with reference to the graph construction module216and the graph analytic engine214, the data processing engine212may be further configured to extract particular attributes from the retrieved member profile information, one or more of the retrieved social graphs, and/or one or more of the retrieved job profile information.

The graph construction module216is configured to construct a graph from the data retrieved by the data processing engine212. In one embodiment, the graph construction module216is implemented as GraphX. As one of ordinary skill in the art would understand, GraphX is a set of APIs available through Apache Spark™ that provide for exploratory analysis, construction, and iterative graph computations. The graph construction module216is configured to construct one or more graphs from data representing one or more nodes and/or one or more edges. In one embodiment, the graph construction module216constructs the one or more graphs based on the data retrieved by the data processing engine212including, but not limited to, one or more attribute values extracted from the retrieved member profiles222and the retrieved job profiles224.

The attributes extracted from a retrieved member profile222include one or more skills (e.g., “writing,” “programming,” “painting,” “graphic design,” etc.) that the member corresponding to the retrieved member profile222has identified as possessing or that other members of the social networking service have identified the member corresponding to the retrieved member profile222as possessing. For example, these identifications by the member or other members may occur while the member has a member profile with the social networking service or while the member interacts with the social networking service. Similarly, and in one embodiment, the attributes extracted from a retrieved job profile224include one or more skills that the owner or organizational member associated with the job profile224have identified or selected.

In one embodiment, the graph construction module216defines the nodes of one or more graphs as the skill attributes extracted from the retrieved member profiles222and/or the retrieved job profiles224. In particular, each node in a graph may correspond to a single skill and the graph may include a unique set of nodes such that a given skill is not duplicated. The graph construction module216stores the nodes representing the skill attributes of the member profile(s)222and/or the job profile(s)224as the skill nodes226.

In an alternative embodiment, the graph construction module216defines the skill nodes226by retrieving a preconfigured list of skills maintained by the social networking server112, and defines nodes corresponding to each one of the skills of the preconfigured list of skills. In this alternative embodiment, the skill nodes226may include nodes corresponding to skills that are not listed by one or more of the member profile(s)222and/or the job profile(s)224. In some instances, the skill nodes226may omit nodes for skills in the preconfigured list of skills where the omitted skills are not associated with any of the member profile(s)222or any of the job profile(s)224. In other instances, the user126or an administrator of the social networking server112may choose which skills to include from the member profiles222, the job profiles224, and/or the preconfigured list of skills as nodes for the skill nodes226.

Each of the skill nodes226are connected by one or more edges to other skill nodes226. Edges between the skill nodes226indicate a correlation. Thus, a first skill node is directly correlated to a second skill node where an edge directly connects a first skill node to the second skill node (e.g., there are no intervening nodes between the first skill node and the second skill node). In one embodiment, the skills associated with one or more of the member profile(s)222are used as a proxy to establish correlation between the nodes. In this manner, an edge directly connects a first node and a second node where at least one member profile is associated with the first skill and the second skill.

However, as discussed below, a first node may still be connected to a second node where there are intervening nodes between the first node and the second node. While there may be intervening nodes between the first node and the second node, this disclosure contemplates that, even in this instance, the first node and the second node are still correlated. In alternative terms, where there are intervening nodes between a first node and a second node, the first node and the second node are considered indirectly correlated. By establishing edges between nodes using the member profile(s)222as a proxy for correlation, the social networking server112can identify intervening skills (e.g., intervening nodes) that a member may learn if he or she desires to learn a desired skill (e.g., the second skill or second node) given that the member has an initial skill or skills (e.g., the first skill or first node).

In addition to establishing edges between the skill nodes226, the graph construction module216determines a value for one or more of the edges. In one embodiment, the graph construction module216communicates with a confidence module218to determine these values. By assigning a value to each edge connecting a pair of nodes, the social networking server112can identify a minimum value path representing the most co-related set of skills given a starting or initial skill (e.g., a first node) and a target or desired skill (e.g., a second node). In one embodiment, the graph construction module216stores the determined edge of values for a pair of nodes as the graph edge values230. The pseudocode below provides one methodology for assigning the graph edges values:

In the pseudocode above, the method getConfidenceScore( ) returns a value indicating the confidence that the ith member possesses a given skill. In one embodiment, the method getConfidenceScore( ) is implemented to return a ranking of the ith member having the given skill as described in U.S. Pat. No. 8,650,177, titled “SKILL EXTRACTION SYSTEM,” and is incorporated by reference herein in its entirety. The confidence module218is configured to implement the getConfidenceScore( ) methodology, where input parameters to getConfidenceScore( ) may include a member profile or member profile identifier, and a skill associated with the member profile.

In this embodiment, the ranking of the member is used to approximate, or as a proxy for, a confidence value that the member possesses the given skill (e.g., Skill A and Skill B in the pseudocode above). As shown above, the value for an edge is the summation of the confidence scores associated with member profiles that have been identified as being associated with both a given first skill (e.g., Skill A) and a given second skill (e.g., Skill B).

In this manner, the minimum distance value between a pair of nodes indicates the shortest path a member could traverse to achieve or learn a desired skill. As used in this context, the minimum distance value between a pair of nodes is the summation of the edge values230between the pair of nodes. This is because the method getConfidenceScore( ) returns a value where a smaller value indicates that the member is more likely to possess a given skill. However, in alternative embodiments where getConfidenceScore( ) returns a value where a greater value indicates that the member is more likely to possess a given skill, the shortest path a member could traverse to achieve or learn a desired skill would be the maximum distance value between a pair of nodes.

FIG. 3illustrates an example302of assigning graph edge values to pairs of skill nodes defined by the social networking server112ofFIG. 1, according to an example embodiment. As shown inFIG. 3, one or more skill pairings228are provided as input to the graph construction module216. In one embodiment, the skill pairings228are based on the skill nodes226and are paired such that each node of the skill nodes226is paired with another node of the skill nodes226. In an alternative embodiment, skill pairings228are selected according to the skills associated with the member profiles222. In this alternative embodiment, the skill pairings228are determined by analyzing each member profile of the member profile(s)222and identifying the skills associated with each member profile. In this manner, where a member profile is associated with three different skills (e.g., a first skill, a second skill, and the three skill), there are a total of three pairings. In the example302ofFIG. 3, there are twelve pairings A-L, where each pairing is associated with a corresponding graph edge value230.

FIG. 3also illustrates that three sets of member profiles304-308, along with various skill pairings228, are being communicated to the confidence module218to determine the graph edge values230for the skill pairings228determined from the sets of member profiles304-308. In the example302ofFIG. 3, the skill pairings228include a first skill (e.g., Skill A) and a second skill (e.g., Skill B), the first skill and a third skill (e.g., Skill C), and the first skill and the fourth skill (e.g., Skill D). These skill pairings228may correspond to skill pairings A-C of the skill pairings228. Accordingly, the confidence module218determines graph edge values A′-C′, which are then each associated with their corresponding skill pairings A-C by way of the graph construction module216.

WhileFIG. 3only illustrates three sets of member profiles304-308for three corresponding skill pairings228, one of ordinary skill in the art will appreciate that different member sets corresponding to different skill pairings are communicated to the confidence module218until the various combinations of skill pairings228are exhausted. In one embodiment, where skill nodes226are paired regardless of whether there is an associated member profile set, the corresponding graph edge value may be set to a NULL value such that the edge corresponding to the graph edge value is skipped or bypassed by the graph analytic engine214in determining the minimum or maximum distance value between a pair of nodes.

After the graph edge values230are associated with the various skill pairings228and/or the skill nodes226, the graph construction module216has effectively constructed a skills graph representing the interconnectedness of skills associated with the member profile(s)222. The graph analytic engine214is configured to determine the minimum distance value path for the maximum distance value path between an initial or starting node and a desired or target node from the constructed skills graph. In one embodiment, the graph analytic engine214performs Dijkstra's algorithm on the skills graph given the initial skill and the desired skill. In an alternative embodiment, the graph analytic engine214performs a Bellman-Ford algorithm on the skills graph given the initial skill and the desired skill. One of ordinary skill in the art will appreciate that other algorithms that solve a shortest path problem may be implemented by the graph analytic engine214and are contemplated as falling within the scope of this disclosure.

In one embodiment, the skill nodes226are further clustered according to a category or topic to which the corresponding skill belongs.FIG. 4illustrates an example of a skills graph402determined by the social networking server112ofFIG. 1, according to an example embodiment. In the example shown inFIG. 4, the skills graph402includes a single cluster corresponding to the category of “TECHNICAL: COMPUTER PROGRAMMING,” which includes various skill nodes, which may be selected from the skill nodes226. One or more of the skill nodes are connected by edges A′-L′, where each edge is associated with a corresponding graph edge value. The skills illustrated in the skills graph402include “object-oriented,” “C++,” “AJAX programming,” “Java,” “debugging,” and “web development.” Each of these nodes may be assigned to the category of “TECHNICAL: COMPUTER PROGRAMMING” based on a preconfigured list of skills maintained by the social networking server112. For example, the social networking server112may maintain a lookup table or other database of skills where each skill is associated with a corresponding category.

Referring to the skills graph402, suppose a member of the social networking server112desires to learn the skill of AJAX programming, but is only familiar with object-oriented programming (e.g., the only skill associated with the member profile corresponding to this member is “object-oriented”). According to the skills graph402, there are multiple paths leading from “object-oriented” to “Ajax programming.” For example, and without exhausting all possible paths, these paths include edges B′-E′, edges D′-F′, edges A′-I′-K′-F′, and edges A′-J′. Each of these paths lead through intermediary nodes, which indicate intermediary skills that could help the member learn the desired skill of “AJAX programming.” The path that is selected and communicated to the member will depend on the values assigned to the edges, but is a path that is either a minimum distance value path or a maximum distance value path depending on the way in which the confidence module218is implemented. As discussed above, the graph analytic engine214determines the path from the node corresponding to the “object-oriented” skill to the node corresponding to the “AJAX programming” skill.

In addition to determining a path within a cluster of skill nodes226, the graph analytic engine214is also configured to determine a path between clusters of skill nodes226.FIG. 5illustrates an example of a skills graph502having clusters504-508of different skill nodes, according to an example embodiment. As shown inFIG. 5, the skills graph502includes a first cluster504of skill nodes categorized as “TECHNICAL: COMPUTER PROGRAMMING,” a second cluster506of skill nodes categorized as “TECHNICAL: COMPUTER ARCHITECTURE,” and a third cluster508of skill nodes categorized as “LITERATURE: TECHNICAL WRITING.” Each of the clusters504-508may be determined as discussed previously, where the edges within clusters are determined based on pairing skill nodes according to the skills associated with one or more member profile(s)222. Edges between clusters, such as the edges between the first cluster504and the third cluster508, may be established because there may be one or more member profile associated with a first skill categorized as “TECHNICAL: COMPUTER PROGRAMMING” and a second skill categorized as “LITERATURE: TECHNICAL WRITING.”

Like the skills graph402illustrated inFIG. 4, the graph analytic engine214is also configured to explore and traverse edges of a multiple cluster skills graph like the skills graph502ofFIG. 5. In one embodiment, the graph analytic engine214is configured to determine a path between an initial or starting node510and a desired or target node512, and to provide an output that includes one or more intermediary nodes that lie along this path. For example, the graph analytic engine214may determine that the path between the initial node510and the target node512bypasses the second cluster506. In this example, the listing of skills to achieve the target skill (e.g., the skill associated with the target node512) may omit the skills categorized within the second cluster506. However, the graph analytic engine214may determine that the path between the initial node510and the target node512includes a second cluster506, in which case the listing of skills would include one or more intermediary skills categorized within the second cluster506. In this manner, the number of skills and clusters accommodated by the social networking server112may include hundreds or thousands of skills and/or clusters such that any one skill maintained by the social networking server112may be correlated (e.g., directly or indirectly) to any other skill.

Having determined a skills graph for the member profile(s)222(e.g., a single cluster skills graph or a multiple cluster skills graph), the social networking server112can identify intermediary skills a member may learn to help reach a desired skill associated with a job opening listed by an organizational member of the social networking service.FIG. 6illustrates an example602of determining a path to achieving one or more skills associated with a job opening, according to an example embodiment.

As shown inFIG. 6, the data processing engine212is provided with a member profile604and a selected job profile606. In one embodiment, the member profile604corresponds to a member viewing advertisements associated with various job openings. As discussed above, such job openings are associated with one or more job profiles (e.g., job profile(s)224). Accordingly, when a member submits a request to learn about how to achieve one or more skills associated with a given job opening, the member profile corresponding to the member and the job profile corresponding to the given job opening are communicated to the data processing engine212.

The data processing engine212then extracts or retrieves one or more member skills608from the member profile604and one or more job skills610associated with the job profile606. The data processing engine212may store the retrieved member skills608and the retrieved job skills610in the machine-readable medium206. Thereafter, the member skills608and the job skills610are communicated to the graph analytic engine214.

The graph analytic engine214then determines a path from one or more of the member skills608to one or more of the job skills610using the previously determined skills graph (e.g., the skill nodes226and the graph edge values230). In one embodiment, the graph analytic engine214determines either a minimum distance value path or maximum distance value path for each member skill paired with each job skill. Supposing that there are M member skills608and N job skills610, the total number of member skills608paired with job skills610is M×N.

The graph analytic engine214then generates a skills report232that includes the minimum distance value path or maximum distance value path for one or more of the job skills610. In one embodiment, this skills reports232identifies the intermediary skills (e.g., the intermediary skill nodes) that the member could learn to achieve a desired job skill given his or her initial member skills. The skills report232may be configurable such that the member may request a verbose skills report, where the verbose skills report includes the minimum distance value path or maximum distance value path for each member skill and job skill pairing (e.g., for a total of M×N paths). Alternatively, the member may select which paths are to be included in the report given a member skill, a job skill, or a member and job skill pairing. In this manner, the skills report232is configurable along many different metrics depending on the level of detail requested by the member.

Referring back toFIG. 2, the reporting module220is configured to communicate the skills report232to the client device104. In one embodiment, the skills report232is communicated in an electronic document format readable by a word processing or other electronic document reader. In alternative embodiments, the skills report232is embedded within an HTML document and viewable by the web client106being executed by the client device104. In this embodiment, the skills report232may be provided within a graphical user interface generated by the user interface234such that the skills report232is displayable alongside any interface used to interact with the social networking server112. Embedding the skills report232within an HTML document makes it possible for the member to review the skills report232while concurrently taking advantage of the services and products offered by the social networking server112.

FIGS. 7A-7Billustrate a method702, in accordance with an example embodiment, for determining a path to achieving one or more skills associated with a job opening. The method702may be implemented by one or more of the modules208and data210of the social networking server112and is discussed by way of reference thereto.

Initially, and with reference toFIG. 7AandFIG. 2, the social networking server112, via the data processing engine212, retrieves one or more member profiles from the member profile database120(Operation704). In one embodiment, the retrieved member profiles are stored as the member profiles222and a machine-readable medium206. The data processing engine212then extracts or retrieves one or more skills from the member profiles222(Operation706). In this embodiment, and using the extracted skills, the graph construction module216then defines one or more skill nodes226corresponding to the extracted or retrieved skills (Operation708). In an alternative embodiment, the graph construction module216defines one or more skill nodes226corresponding to skills determined from a preconfigured list of skills maintained by the social networking server112.

Using the defined skills nodes226, the graph construction module216then establishes one or more skill pairings228, where a skill pairing228includes a first node and a second node selected from the skill nodes226(Operation710). In one embodiment, the skill pairings228are determined from the member profiles222. In this embodiment, a skill pairing is defined when a member profile includes the first node and the second node. In an alternative embodiment, skill pairings228are defined according to the skill nodes226, such that each skill node is paired with every other skill node. In this embodiment, and as discussed previously, there may be instances where an edge value is not determinable for a given skill node pair (e.g., there are no member profiles222that include the skills associated with the skill node pair), in which case the edge value for this node pairing is assigned a NULL value.

Referring toFIG. 7B, the graph edge values230are then determined for the skill pairings228(Operation712). As discussed with reference toFIG. 3, determining the graph edge values230includes processing member profiles222via the confidence module218and determining a confidence value for a given skill pairing. The confidence value is then assigned as the graph edge value for the skill pairing via the graph construction module216(Operation714).

Finally, and in one embodiment, the graph construction module216clusters the skill nodes226according to one or more skill classifications previously assigned to the skills associated with the skill nodes226(Operation716). Clustering the skill nodes226groups the skill nodes according to a general classification and may impact edge values that traverse clusters. For example, and with reference toFIG. 5, edges that extend between the first cluster504and the second cluster506may be adjusted by a weighting factor to indicate the degree of difficulty in transferring skills from the first cluster504to the second cluster506. Where the skills of the first cluster504are not easily transferred to the skills of the second cluster506, the weighting factor may increase the edge values between these clusters504,506, whereas if the skills of the first cluster504are easily transferred to the skills of the second cluster506, the weighting factor may decrease the edge values between these clusters504,506. As one of ordinary skill in the art will recognize, the weighting factor will depend on whether the graph analytic engine214is configured to determine whether a minimum distance value path or a maximum distance value path is implemented.

FIG. 8illustrates a method802, in accordance with an example embodiment, for determining a path to achieving one or more skills associated with a job opening. The method802may be implemented by one or more of the modules208and data210of the social networking server112and is discussed by way of reference thereto.

Initially, the social networking server112obtains a member profile corresponding to a member viewing an advertisement corresponding to a job opening, and a job profile (e.g., job profile606) corresponding to the job opening. The data processing engine212then extracts one or more skills from the obtained member profile (Operation804) and one or more skills from the obtained job profile (Operation806). The graph analytic engine214then establishes one or more skill pairings, where a skill pairing includes an initial skill selected from the member skills (e.g., member skills608) and a target skill selected from the job skills (e.g., job skills610) (Operation808). For each skill pairing, the graph analytic engine214then determines the path from the initial skill to the target skill using the previously determined skills graph ofFIGS. 7A-7B(Operation810). As discussed throughout this disclosure, this path may be a minimum distance value path or a maximum distance value path depending on the manner in which the graph edge values230were determined.

In one embodiment, the graph analytic engine214then selectively determines which paths to include in the skills report232(Operation812). For example, the skills report232may be configurable such that the member for whom the skills report232is being prepared may choose whether the skills report232is to be shortened or verbose. Where the skills report232is a shortened report, the graph analytic engine214may select the most minimum distance value path or most maximum distance value path from among all the determined paths. Alternatively or additionally, the graph analytic engine214may select the most minimum distance value path or most maximum distance value path for each initial skill. As one skilled in the art will recognize, other combinations and permutations of the manner in which paths are selected are contemplated as falling within the scope of this disclosure. Where the skills report232is a verbose report, all of the determined paths may be included in the report.

Having selected the path(s) to include in the skills report232, the graph analytic engine214then generates a skills report232(Operation814). In one embodiment, generating the skills report232includes listing or illustrating the path(s) and/or listing the intermediary skills that lie along the listed or illustrated path(s). The generated skills report232is then communicated to the client device104of the member via the reporting module220(Operation816). In one embodiment, the skills report232is communicated as an electronic document readable by a word processing application or other electronic document reader. Additionally and/or alternatively, the skills report232may be embedded within an HTML document communicated to the client device104.

In this manner, this disclosure provides systems and methods for identifying intermediary skills given a set of initial skills and one or more target or desired skills. The systems and methods disclosed herein may be implemented by a social networking server that provides a social networking service to members where the members have access to advertisements or other notifications about job openings. Ordinarily, a member of the social networking service would have to spend a significant amount of time and effort in researching the skills associated with the job opening and determining which of his or her skills would transfer to the job described by the job opening. This can lead to some qualified members being discouraged from applying to the job opening as they may be unable to figure out how their current skill set translates to the skill set associated with the job opening. This also impacts the employer associated with the job opening as a job may go unfulfilled as qualified members fail to apply for the job. Thus, the systems and methods disclosed herein streamline the jobseeking process and help members to truly understand their qualifications and plan a path for making career changes. The systems and methods disclosed herein also help employers as the systems and methods encourage members who otherwise may not have applied for a given job to apply. Accordingly, this disclosure has economic importance in finding potential employees and helping to keep the market at healthy employment levels.

Modules, Components, and Logic

Machine and Software Architecture

The modules, methods, applications and so forth described in conjunction withFIGS. 1-8are implemented in some embodiments in the context of a machine and an associated software architecture. The sections below describe a representative architecture that is suitable for use with the disclosed embodiments.

Example Machine Architecture and Machine-Readable Medium

FIG. 9is a block diagram illustrating components of a machine900, according to some example embodiments, able to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any one or more of the methodologies discussed herein. Specifically,FIG. 9shows a diagrammatic representation of the machine900in the example form of a computer system, within which instructions916(e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine900to perform any one or more of the methodologies discussed herein may be executed. For example, the instructions916may cause the machine900to execute the flow diagrams ofFIGS. 7A-7BandFIG. 8. Additionally, or alternatively, the instructions916may implement one or more of the components ofFIG. 2. The instructions916transform the general, non-programmed machine900into a particular machine900programmed to carry out the described and illustrated functions in the manner described. In alternative embodiments, the machine900operates as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine900may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine900may comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a personal digital assistant (PDA), or any machine capable of executing the instructions916, sequentially or otherwise, that specify actions to be taken by machine900. Further, while only a single machine900is illustrated, the term “machine” shall also be taken to include a collection of machines900that individually or jointly execute the instructions916to perform any one or more of the methodologies discussed herein.

The machine900may include processors910, memory/storage930, and I/O components950, which may be configured to communicate with each other such as via a bus902. In an example embodiment, the processors910(e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Radio-Frequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processor912and processor914that may execute the instructions916. The term “processor” is intended to include multi-core processor that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions916contemporaneously. AlthoughFIG. 9shows multiple processors910, the machine900may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core process), multiple processors with a single core, multiple processors with multiples cores, or any combination thereof.

The memory/storage930may include a memory932, such as a main memory, or other memory storage, and a storage unit936, both accessible to the processors910such as via the bus902. The storage unit936and memory932store the instructions916embodying any one or more of the methodologies or functions described herein. The instructions916may also reside, completely or partially, within the memory932, within the storage unit936, within at least one of the processors910(e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine900. Accordingly, the memory932, the storage unit936, and the memory of processors910are examples of machine-readable media.

Communication may be implemented using a wide variety of technologies. The I/O components950may include communication components964operable to couple the machine900to a network980or devices970via coupling982and coupling972respectively. For example, the communication components964may include a network interface component or other suitable device to interface with the network980. In further examples, communication components964may include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and other communication components to provide communication via other modalities. The devices970may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).

Transmission Medium

The instructions916may be transmitted or received over the network980using a transmission medium via a network interface device (e.g., a network interface component included in the communication components964) and utilizing any one of a number of well-known transfer protocols (e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions916may be transmitted or received using a transmission medium via the coupling972(e.g., a peer-to-peer coupling) to devices970. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions916for execution by the machine900, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software.

Language