The subject matter disclosed herein generally relates to data processing associated with a skill suggestion system having an endorsement database. The endorsement database can suggest an endorsement using social graph data and profile data of a member. Specifically, the present disclosure relates to techniques for calculating a score to trigger the suggestion.
A social network system can maintain information on members, companies, organizations, employees, and employers. The social network system may maintain profile pages of members, which can include education information, employment information, and location information about a specific member. Additionally, the social network system can store information about a member's relationships (e.g., connections) with other members of the social network system. Furthermore, the social network system can store endorsements and recommendations of a member. For example, a first member of the social network system can endorse a second member in a skill using an endorsement. The endorsement can be presented on the profile page of the second member.
Some embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings.
Example methods and systems are directed to techniques for a skill validation system having an endorsement database. More specifically, the present disclosure relates to methods, systems, and computer program products for suggesting an endorsement to a member based on a quality score for the endorsement. Techniques for calculating the quality score for the endorsement are described herein.
Examples merely demonstrate possible variations. Unless explicitly stated otherwise, components and functions are optional and may be combined or subdivided, and operations may vary in sequence or be combined or subdivided. In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of example embodiments. It will be evident to one skilled in the art, however, that the present subject matter may be practiced without these specific details.
Techniques for suggesting to a first member an endorsement of a skill possessed by a second member are described. In an example, disclosed is a system that accesses a plurality of skills associated with a first member and a second member from a member database, and accesses a reputation score of each member for each skill from a skill reputation database. Moreover, a subset of skills can be selected based on the reputation scores of the first member. Furthermore, a specific skill in which to endorse the second member can be determined from the subset of skills based on the reputation score of the second member for the specific skill. A quality score for the endorsement of the specific skill is calculated. Subsequently, a user interface can present, on a display of a device of the first member, an endorsement suggestion for the specific skill of the second member when the quality score transgresses a predetermined threshold.
In current implementations, a first member of a social network system can endorse (e.g., recommend) a second member of the social network system in a specific skill by sending an endorsement for the specific skill. The first member can be the “endorser” who sends the endorsement for the specific skill to the second member. The second member can be referred to as the “recipient” of the endorsement. Additionally, the endorsement can be presented on a profile page of the recipient. The endorsement can signify that the endorser recommends the recipient as an expert or as being proficient in the corresponding skill. For example, an endorsement in accounting demonstrates that the endorser recognizes the recipient's skill in accounting.
However, in current implementations, not all endorsements received by the recipient can be equally representative of the recipient's ability in the specific skill. For example, an endorsement received from a first endorser who has the specific skill and knows the recipient can be more meaningful than an endorsement received from a second endorser who does not possess the specific skill and does not know the recipient.
According to some embodiments, the social network system can generate an endorsement suggestion of a specific skill. For example, the endorsement suggestion can be presented to a first member. The endorsement suggestion can correspond to the first member endorsing a second member in the specific skill. The endorsement suggestion can be presented on a home page of the social network system. Alternatively, the endorsement suggestion can be presented when the first member is viewing the profile page of the second member.
The endorsement suggestion can be generated using a quality score. The quality score of an endorsement can depend on an endorser value of the first member, a recipient value of the second member, and an overlap value between the first member and the second member. Additionally, the quality score can further depend on a reputation score of first member possessing the specific skill and a reputation score of the second member possessing the specific skill. In some instances, the reputation scores are stored in the skill reputation database.
The quality score can be correlated to the likelihood that the endorser knows the skill. Furthermore, the quality score can further depend on a connection strength between the endorser and the recipient. Continuing with the example above, when the endorser is skilled in accounting and also works with the recipient at the same accounting firm, then the quality score for the endorsement can be higher than a quality score of an endorsement from another endorser who does not possess the skill or know the recipient.
The social network system can generate an endorsement suggestion when the quality score is higher than a predetermined threshold (e.g., 80 out of 100). A score that is at or above the predetermined threshold is generally considered a high quality score. Furthermore, an endorsement with a high quality score can be classified as a high-quality endorsement. In some instances, the high-quality endorsements can lye highlighted in the profile page of the recipient. For example, the endorsement is presented by having the specific skill listed as a featured skill on the profile page of the recipient when the quality score is above the predetermined threshold. Alternatively, when the quality score is below the predetermined threshold, the specific skill is not listed as the featured skill on the profile page of the recipient.
In some instances, a member of the social network system may want to search for a member having a specific skill. In current implementations, the search results for the member can be associated with the number of endorsements received for the skill. However, ranking simply based on the number of endorsements received can have many limitations. For example, a member profile page can include, without verification, an endorsement associated with a specific skill. In contrast, techniques are described herein for finding a member with a validated skill using the quality score of the endorsement. By finding the member with the validated skill, a user can obtain accurate information about members of the social network system, which can result in the user saving time and resources.
According to some embodiments, an indexing process can rank members using the quality scores associated with the endorsements. For example, a higher ranking in the search results can be given to a member with endorsements that have been classified as high-quality endorsements. An endorsement is qualified as a high-quality endorsement when the quality score is above a predetermined threshold (e.g., 80 out of 100). Additionally, the member profile page can include featured skills that only include high-quality endorsements. In some instances, the profile page of a member includes a section that lists the featured skills of the member. For example, the featured skills can include endorsements from endorsers who either have worked with the member or know the member. The high-quality endorsements listed in the featured skills section can include educational information or employment information about the endorser.
According to some embodiments, the social network system includes a specialized endorsement database having a database architecture tailored specifically for endorsements. As a result, the endorsement database allows for a faster data retrieval rate, for the endorsements to be sent faster by an endorser, and for faster data processing related to the endorsements. For example, when a first member views a profile page of a second member, suggested endorsements of the second member can be presented in real-time for the first member to endorse. Furthermore, the endorsement database can include an endorsement quality metric that can deliver more insights about the endorsement received by analyzing the connections and skills of the endorser and the recipient.
Additionally, techniques described herein allow for generating an endorsement suggestion based on a quality score associated with the endorsement. Techniques described herein allow for faster processing speed for processing endorsement data to determine the skill, the endorser, and the recipient of the endorsement in real time. Additionally, techniques described herein allow for a faster retrieval of the endorsement data.
The member database 115 can store, but is not limited to storing, member data, company data, education data, social graph data, and member activity data for the social network system. In some instances, the member database 115 can include a plurality of databases (e.g., a first database to store profile data, a second database to store social data, and a third database to store member activity data). The server machine 110 can access the information in the member database 115 using the network 190.
The skill reputation database 118 can store a plurality of reputation scores for the members. Each reputation score in the plurality of reputation scores can be associated with a member having a skill. The reputation score for a skill of a member can be calculated using member data (e.g., job title, company name, education information, or years of experience) of the member. For example, the reputation score for the accounting skill of a member who is an accountant with 15 years of experience can be 95 out of 100, which can indicate that the member is proficient and an expert in accounting. The server machine 110 can access the information in the skill reputation database 118 using the network 190.
The endorsement database 120 can store a plurality of endorsements. An endorsement 125 is an example of an endorsement in the plurality of endorsements that is stored in the endorsement database 120. The endorsement 125 includes an endorser 126, a recipient 127, and a skill 128. For example, the endorser 126 endorses the recipient 127 in the skill 128. Both the endorser 126 and the recipient 127 can be members of the social network system. The server machine 110 can access the information in the endorsement database 120 using the network 190.
Also shown in
In some instances, the user 132 can be the endorser 126 who endorses the user 152, who is the recipient 127 of the endorsement 125. In another example, the user 132 can be the member searching for a member proficient in a specific skill, and the user 152 can be validated in the specific skill. For example, the server machine 110 can transmit a message to the user 152 on behalf of the user 132 using the network 190.
The network 190 may be any network that enables communication between or among machines, databases, and devices (e.g., the server machine 110 and the first device 130). Accordingly, the network 190 may be a wired network, a wireless network (e.g., a mobile or cellular network), or any suitable combination thereof. The network 190 may include one or more portions that constitute a private network, a public network (e.g., the Internet), or any suitable combination thereof. Accordingly, the network 190 may include one or more portions that incorporate a local area network (LAN), a wide area network (WAN), the Internet, a mobile telephone network (e.g., a cellular network), a wired telephone network (e.g., a plain old telephone system (POTS) network), a wireless data network (e.g., a Wi-Fi network or WiMAX network), or any suitable combination thereof. Any one or more portions of the network 190 may communicate information via a transmission medium. As used herein, “transmission medium” refers to any intangible (e.g., transitory) medium that is capable of communicating (e.g., transmitting) instructions for execution by a machine (e.g., by one or more processors of such a machine), and includes digital or analog communication signals or other intangible media to facilitate communication of such software.
Any of the machines, databases, or devices described herein may be implemented in a general-purpose computer modified (e.g., configured or programmed) by software (e.g., one or more software modules) to be a special-purpose computer to perform one or more of the functions described herein for that machine, database, or device. For example, a computer system able to implement any one or more of the methodologies described herein is discussed below with respect to
Additionally, the social network system 210 can communicate with the member database 115, the skill reputation database 118, and the endorsement database 120 of
The member data 220 can include profile data 212, which includes information from a profile page of a member. Moreover, the member data 220 can include social graph data 214 and member activity data. As later described in
The profile data 212 can be used to determine the endorser value and the recipient value in a specific skill. For example, the endorser value of the endorser in a specific skill depends the endorser having profile data (e.g., job title, degree, industry) that is related to the specific skill. Similarly, the recipient value of the recipient in a specific skill depends on the recipient having profile data (e.g., job title, degree, industry) that is related to the specific skill. Profile data related to the specific skill includes having the specific skill listed on the profile page, a recommendation of the specific skill, a degree associated with the specific skill, a job title associated with the specific skill, and other educational and/or employment data associated with the specific skill. Additionally, the social network system 210 maintains associations among various skills, and skills associated with the specific skill may be determined to be the same or related.
For instance, with many social network systems, when a user registers to become a member, the member is prompted to provide a variety of personal and employment information that may be displayed in the member's profile page. As used herein, personal and/or employment information is referred to as profile data 212. The profile data 212 can be used to determine the endorser value and the recipient value in a specific skill. The profile data 212 that is commonly requested and displayed as part of a member's profile page includes the member's age, birthdate, gender, interests, contact information, home location (e.g., city and state), educational background (e.g., schools, majors, matriculation dates, graduation dates, etc.), employment history, office location, skills, professional organizations, and other such personal and/or employment information. In some embodiments, the profile data 212 may include the various skills that each member has indicated he or she possesses. Additionally, the profile data 212 may include skills of a member that have been endorsed by another member. Furthermore, the profile data 212 may include recommendations of a member from another member (e.g., co-worker).
With certain social network systems, such as professional social network systems, the profile data 212 can include information commonly included in a professional resume or curriculum vitae, such as information about a person's education, the company at which a person is employed, the location of the employer, an industry in which a person is employed, a job title or function, an employment history, skills possessed by a person, professional organizations of which a person is a member, and so on.
Additionally, social network systems provide their users with a mechanism for defining their relationships with other people. This digital representation of real-world relationships is frequently referred to as a social graph, which may be stored in the social graph data 214.
The social graph data 214 can be associated with an entity's presence within the social network system 210. For example, consistent with some embodiments, a social graph is implemented with a specialized graph data structure in which various entities (e.g., people, companies, schools, government institutions, non-profits, and other organizations) are represented as nodes connected by edges, where the edges have different types representing the various associations and/or relationships among the different entities. The social graph data 214 of a member can include first-degree connections, second-degree connections, and so on. In one embodiment, a first member is a first-degree connection to a second member when the first and second members are directly connected to each other in the social network system 210. Similarly, a first member is a second-degree connection to a second member when the first and second members are not connected to each other, but both are connected to a third member. As can be inferred from the foregoing, an nth-degree connection is a connection where a first node and a second node are separated by N−1 nodes.
In sonic instances, the endorser value calculator 206 can determine an endorser value for the endorser 126 using the profile data 212 and social graph data 214 of the endorser 126. For example, the endorser value calculator 206 can access the profile data 212 to obtain a number of endorsements given or received by the endorser 126, a number of skills listed on the profile page of the endorser 126, a consumer marketing segment, a seniority, or a number of years in a career. Additionally, the endorser value calculator 206 can access the social graph data 214 to determine a number of connections of the endorser 126, and a number of endorsements per connection. For example, the endorser value is determined using Equation 1.
Endorser Value
=C0(Number of Endorsements Given by Endorser)
+C1(Number of Endorsements Received)
+C2(Number of Skills)+C3(Years in Career)
+C4(Number of Connections)
+C5(Number of Endorsements Per Connection),
where C0 . . . C5 are coefficients with a range from 0 to 1. (Equation 1)
In some instances, the recipient value calculator 207 can determine a recipient value for the recipient 127 using the profile data 212 and social graph data 214 of the recipient 127. For example, the recipient value calculator 207 can access the profile data 212 to obtain a number of endorsements given or received by the recipient 127, a number of skills listed on the profile page of the recipient 127, a consumer marketing segment, a seniority, or a number of years in a career. Additionally, the recipient value calculator 207 can access the social graph data 214 to determine a number of connections. For example, the recipient value is determined using Equation 2.
Recipient Value
=C6(Number of Endorsements Given by Recipient)
+C7(Number of Endorsements Received)
+C8(Number of Skills)+C3(Years in Career)
+C9(Number of Connections),
where C6 . . . C9 are coefficients with a range from 0 to 1. (Equation 2)
In some instances, the overlap value calculator 208 can determine an overlap value between the endorser 126 and the recipient 127 using the social graph data 214 (e.g., first-degree connections) of the endorser 126 and the recipient 127. For example, the overlap value calculator 208 can access the social graph data 214 to determine a connection density between the endorser 126 and the recipient 127, as later described in
Overlap Value
=C10(Common Employer)+C11(Common Industry)
+C
12(Common Job Title)+C13(Common School)
+C14(Common Degree)+C15(Common Location),
where C10 . . . C15 are coefficients with a range from 0 to 1. (Equation 3)
The social network system 210 may provide a broad range of other applications and services that allow members the opportunity to share and receive information, often customized to the interests of the members. In some embodiments, members may be able to self-organize into groups, or interest groups, organized around subject matter or a topic of interest. In some embodiments, the social network system 210 may host various job listings providing details of job openings with various organizations.
In some instances, the member data 220 may include member activity data. The member activity data include members' interactions with the various applications, services, and content made available via the social network system 210, and a member's behavior (e.g., content viewed, links selected, etc.) may be used to determine the member's proficiency in a specific skill. For example, the endorser 126 viewing content associated with accounting may increase the endorser value for the accounting endorsement.
The reputation data 225 includes reputation scores of members in a specific skill. For example, a member can have a first reputation score for a first skill and a second reputation score for a second skill. The first reputation score and the second reputation score are examples of a reputation score 228. The reputation score 228 can be obtained from the skill reputation database 118 in
Reputation Score
=C16(Member has skill on profile)
+C17(Member has been endorsed for skill)
+C18(Member has been recommended for skill)
+C19(Member has related skill on profile),
where C16 . . . C19 are coefficients with a range from 0 to 1. (Equation 4)
The endorsement data 230 includes the various skills for which each member has been endorsed. For example, as described with respect to
Furthermore, the social network system 210 can be configured to process data offline or periodically using an offline data processor 240. In some instances, some or all of the calculations performed by the quality score calculator 204, endorser value calculator 206, recipient value calculator 207, and overlap value calculator 208 can be performed by the offline data processor 240. For example, the offline data processor 240 can include one or more large-scale processing servers, such as Apache™ Hadoop® servers that access the member data 220, reputation data 225, and endorsement data 230 periodically (e.g., on a nightly basis) in order to calculate the quality score, the endorser value, the recipient value, and the connection density.
Processing the member data 220, such as calculating the quality score for an endorsement, may be computationally intensive. Therefore, some of the calculating and selecting can be done offline, such as the calculating of one or more parameters associated with the quality score. For example, the member data 220 may be processed offline by the endorser value calculator 206 to determine the endorser value of the endorser 126. Additionally, the member data 220 may be processed offline by the recipient value calculator 207 to determine the recipient value of the recipient 127 for a specific skill. By having the one or more parameters calculated offline, less real-time processing time may be needed by the quality score calculator 204, endorser value calculator 206, recipient value calculator 207, and overlap value calculator 208 in order to calculate the quality score for each endorsement. As a result, these parameters can be inputted in the quality score calculator 204, endorser value calculator 206, recipient value calculator 207, and overlap value calculator 208 in real time in order to almost instantaneously present the validation of the endorsement on the profile page of the recipient.
As will be further described with respect to
As previously mentioned, the social network system 210 can include the member database 115 storing profile data 212 of members in the social network. Additionally, the member database 115 can include social graph data 214. The profile data 212 includes employment information (e.g., job title, industry, years of experience) of the members and educational information (e.g., degree, major, school name, graduation year) of the members. Furthermore, the member database 115 includes member data of a plurality of members in the social network, the member data including a plurality of skills associated with a member in the plurality of members
Additionally, the social network system 210 can access the skill reputation database 118 storing a plurality of reputation scores for the members. Each reputation score 228 in the plurality of reputation scores can be associated with a member having a skill. The reputation score 228 can be determined by the social network system 210 using the offline data processor 240 using the member data 220 of the member.
At operation 310, the social network system 210 can access, from the member database 115, a plurality of skills associated with a first member in the plurality of members and a plurality of skills associated with a second member in the plurality of members. The first member can be the endorser 126, and the second member can be the recipient 127 of the endorsement 125. The endorser 126 and the recipient 127 can be members of the social network system 210. The server machine 110 can access the member database 115 using the network 190.
At operation 320, the social network system 210 can access, from the skill reputation database 118, a reputation score for each skill in the plurality of skills associated with the first member and a reputation score for each skill in the plurality of skills associated with the second member. The server machine 110 can access the skill reputation database 118 using the network 190. The skill reputation database 118 stores the reputation data 225, such as a reputation score 228 of a member for a specific skill.
Equation 4 describes an algorithm for determining the reputation score 228, according to some embodiments. As previously mentioned, the reputation score 228 is an indication of the skill level associated with the member in the specific skill. A processor in the server machine 110 can calculate the reputation score 228 in real time. In some instances, part of the calculation of the reputation score 228 can be performed offline using the offline data processor 240.
In some instances, the reputation score associated with the first member having the specific skill can depend on the first member having the specific skill listed on a profile page of the first member. For example, the reputation score 228 increases when the specific skill is listed on the profile page of the first member. Moreover, the reputation score 228 associated with the first member having the specific skill can be associated with the first member having a job title that is related to the specific skill. Furthermore, the reputation score associated with the first member having the specific skill can be associated with the first member having an educational degree that is related to the specific skill.
At operation 330, the social network system 210 can select a subset of skills from the plurality of skills associated with the first member based on the reputation score for each skill in the subset of skills being above a first threshold value. In some instances, the first member (e.g., member logged into the social network system 210) can be an expert in a first skill when the reputation score for the first skill is above the first threshold value. The first skill can be part of the subset of skills selected from the plurality of skills associated with the first member. For example, by selecting a subset of skills that the first member (e.g., endorser) is proficient in or an expert in, the endorsement given by the first member can be more worthwhile. A processor in the server machine 110 can select the subset of skills from the plurality of skills.
At operation 340, the social network system 210 can determine a specific skill associated with the second member based on the reputation score of the second member for the specific skill. Additionally, the specific skill is a skill from the subset of skills selected at operation 330. For example, the specific skill can be the skill from the subset of skills selected at operation 330 that has the highest reputation score associated with the second member. Additionally, the specific skill can be determined based on the reputation score being higher than a predetermined threshold. In some instances, the specific skill can already be a featured skill on the profile page of the second member. Using a skill that has a reputation score that is higher than a predetermined threshold, the social network system 210 can select a skill that the second member is proficient in, for the endorsement suggestion. A processor in the server machine 110 can determine the specific skill associated with the second member.
At operation 350, the social network system 210 can calculate a quality score for an endorsement for the specific skill based on the profile data of the first member and the second member. For example, the quality score calculator 204 calculates a quality score 235 for an endorsement using the endorser value, the recipient value, the overlap value, or the reputation score. As described herein, the endorser value, the recipient value, the overlap value, and the reputation score can be derived from the profile data the first member and the second member.
In some instances, the quality score 235 can be calculated by adding the endorser value and the overlap value. Alternatively, the quality score 235 can be calculated by averaging the endorser value and the overlap value. Additionally, the calculated quality score 235 can be stored in the endorsement data 230 as the quality score 235 that is associated with the endorsement 125. For example, the quality score 235 can range from 0-100. A higher score can be associated with a member who is more proficient in the skill than another member having a lower score. A processor in the server machine 110 can calculate the quality score 235 in real time. In some instances, part of the calculation of the quality score 235 can be performed offline using the offline data processor 240.
For example, the quality score 235 can be calculated using Equation 5:
Quality Score
=C20(Endorser Value)+C21(Recipient Value)
+C22(Overlap Value)+C23(Reputation Value),
where C20 . . . C23 are coefficients with a range from 0 to 1. (Equation 5)
According to some embodiments, Equations 1-4 are inputs for Equation 5. Therefore, in some instances, the Quality Score can be the summation of all the variables in Equations 1-4, such as:
Quality Score=C0*Number of Endorsements Given by Endorser+ . . . +C6*Number of Endorsements Given by Endorser+C10*Common Employer+ . . . +C16*Member has Skill on Profile+ . . . +C19*Member has Related Skill on Profile
In some instances, a statistical model, such as logistic regression, can be used to determine the coefficients of Equation 5. As previously mentioned, the endorsement database 120 can store a plurality of endorsements 125 using historical data. Each endorsement 125 includes an endorser 126, a recipient 127, and a skill 128. Additionally, each endorsement (e.g., impression) is classified as high-quality endorsement when the quality score is above a predetermined. This classification can be a ‘1’ if the endorsement is high-quality or the classification can be a ‘0’ if the endorsement is not high-quality. Additionally, for each endorsement (e.g., impression) the social network system can know the variables associated with each coefficient (e.g., number of endorsements by endorser, endorsee, if the member has the skill, and so on), which are the variables on in the right side of Equation 1-4.
According to some embodiments, the probability of a high-quality endorsement for a given impression can be calculated by determining the probability that the high-quality classification is ‘1’, which can be a sigmoid function of the Quality Score as described in Equation 6 below:
Equation 6 can be further broken down to Equation 7 as described below:
In some instances, the coefficients in Equation 1-5 and 7 can be determined using a logistic regression model. For example, the logistic regression model can find the coefficients C0-C19 that maximizes the likelihood that the classification of the endorsement being a high-quality endorsement under the logistic regression model. As known in the art, there several efficient optimization algorithms for doing this task. In some other instances, the coefficients in Equation 1-5 and 7 can be determined using other models such as a linear regression model, a decision tree model, a support vector machine model, and a Naive Bayesian model, or other machine learning algorithms.
At operation 360, the user interface 202 can present, on a display of a device of the first member, an endorsement suggestion for the specific skill associated with the second member when the quality score exceeds a predetermined threshold. In some instances, the predetermined threshold (e.g., 50) can be preset by an administer of the social network system 210. Additionally, the predetermined threshold can be adjusted in direct correlation with the number of validated skills associated with a member. For example, the predetermined threshold is decreased when the profile page of the member does not have any skills having a validation. Additionally, as later described in
In some instances, the endorsement suggestion is presented on a home page of the social network system 210. For example, the social network system 210 can access the member data of the first member and a first-degree connection of the first member. Additionally, the social network system 210 can calculate an overlap value between the first member and the first-degree connection of the first member based on the accessed member data. Subsequently, the social network system 210 can select the first-degree connection as the second member based on the calculated overlap value being above a second threshold value.
In another example in which the endorsement suggestion is presented on a home page of the social network system 210, the social network system 210 can access the member data of a first-degree connection of the first member. Additionally, the social network system 210 can calculate a recipient value for the first-degree connection of the first member based on the accessed member data. Subsequently, the social network system 210 can select the first-degree connection as the second member based on the calculated overlap value being above a third threshold value.
Alternatively, the social network system 210 may receive, from the device of the first member, a request to view a profile page of the second member. Subsequently, the endorsement suggestion is presented on the profile page of the second member. The suggested endorsement can further include a common profile attribute between the first member and the second member. For example, the common profile attribute is a school that both the first member and the second member attended. In another example, the common profile attribute is a company that employed both the first member and the second member.
In some instances, the method 300 further includes the social network system 210 determining an endorser value for the first member based on the member data of the first member. Additionally, the quality score is updated based on the endorser value. For example, the social network system 210 can determine, from the member data, a number of endorsements received by the first member and a number of endorsements sent by the first member, and the endorser value is determined based on the number of endorsements received by the first member and the number of endorsements sent by the first member.
In some instances, the profile data includes a number of years of experience, and the endorser value is further based the number of years of experience of the first member.
Equation 1 describes an algorithm for determining the endorser value, according to some embodiments. The endorser value calculator 206 can access the reputation data 225 of the endorser 126 from the skill reputation database 118.
In some instances, the endorser value calculator 206 can access the reputation score 228 of the endorser 126 in the specific skill (e.g., accounting) in order to determine the endorser value. The endorser value can be directly correlated to the reputation score 228. In one example, the endorser value can be equal to the reputation score 228. For example, if the reputation score 228 of the endorser 126 in the specific skill (e.g., accounting) is a first number (e.g., 80), then the endorser value can also be the first number. In another example, the endorser value increases by a predetermined amount or ratio on a direct correlation basis with the reputation score 228.
In some instances, the endorser value calculator 206 can access profile data 212 of the endorser 216. The profile data 212 can include a number of years of experience, and the endorser value can be associated with the number of years of experience of the endorser 216. For example, the endorser value can be directly proportional to the number of years of experience. The endorser value can increase by a predetermined ratio on a direct correlation basis with the number of years of experience.
For example, the endorser value can be determined based on the number of endorsements received by the endorser, the number of endorsements given by the endorser, the number of skills listed in the profile of the endorser, a consumer marketing segment associated with the endorser, a seniority of the endorser, first-degree connections of the endorser, a number of years in the endorser's career, a number of endorsements received or given per connection, and other member data 220 of the endorser.
In some instances, the method 300 further includes the social network system 210 determining a recipient value for the second member based on the member data of the second member. The quality score can be updated based on the recipient value. For example, the social network system 210 can determine, from the member data, a number of endorsements received by the second member and a number of endorsements sent by the second member. Furthermore, the recipient value may be determined based on the number of endorsements received by the second member and the number of endorsements sent by the second member.
Equation 2 describes an algorithm for determining the recipient value, according to some embodiments. For example, the recipient value can be the number of endorsements given (i.e., the first member is the endorser) and received (i.e., the second member is the receiver). In another example, the recipient value may be only the number of endorsements received or the number of endorsements given. Subsequently, the quality score calculator 204 can update the quality score 235 based on the recipient value.
The recipient value can be determined based on the number of endorsements received by the recipient, the number of endorsements given by the recipient, the number of skills listed in the profile of the recipient, a consumer marketing segment associated with the recipient, a seniority of the recipient, first-degree connections of the recipient, a number of years in the recipient's career, and other member data 220 of the recipient.
Similarly, to the calculation of the recipient value described above, the endorser value calculator 206 can access, from the endorsement database 120, endorsements that have the first member as either the receiver or the endorser. Additionally, the endorser value calculator 206 can update the endorser value based on a number of endorsements received by the first member and a number of endorsements sent by the first member. The endorser value can be updated based on the number of endorsements given or received by the first member. For example, the endorser value may increase when the first member has received more than a predetermined number (e.g., 20) of endorsements. Subsequently, the quality score calculator 204 can update the quality score 235 based on the updated endorser value.
In another example, the endorser value calculator 206 can access, from the endorsement database 120, endorsements that have the second member as the receiver. Additionally, the endorser value calculator 206 can determine an endorsement value based on a number of endorsements received by the second member for the specific skill. The endorser value calculated can be updated based on the number of endorsements received by the second member for the specific skill. For example, the endorser value may increase when the second member has received more than a predetermined number (e.g., 5) of endorsements for a specific skill (e.g., accounting). Subsequently, the quality score calculator 204 can update the quality score 235 based on the endorsement value.
In some instances, the method 300 further includes the social network system 210 determining an overlap value for the first member and second member based on the member data of the first and second members. Additionally, the quality score is updated based on the overlap value.
The overlap value calculator 208 can determine an overlap value between the first member and the second member using the member data 220. For example, Equation 3 describes an algorithm for determining the overlap value. The member data 220 can be stored in the member database 115. The member data 220 includes profile data 212 and social graph data 214. The profile data 212 includes employment information and educational information of the endorser 1126 and the recipient 127. Additionally, the profile data 212 can include an endorsement of a member skill, a recommendation of the member, and the member's years of experience, location, job title, position in current company, projects completed with the company, current projects, published papers, patents, school, education information, portfolio, certifications, awards, and so on. The social graph data 214 includes the first-degree connections and the second-degree connections of the member. A processor in the server machine 110 can calculate the overlap value in real time. In some instances, part of the calculation of the overlap value can be performed offline using the offline data processor 240.
In some instances, the overlap value is determined using the similarity between the employment information and the educational information of the first member and that of the second member. For example, the overlap value increases when the first member and the second member studied at the same school or worked at the same company. Alternatively, the overlap value decreases when the first member and the second member studied at different schools or worked at different companies. Additionally, the overlap value can depend on similarities of other profile data 212 (e.g., location, job title, industry, certifications) of the first member and the second member.
In some instances, the method 300 further includes the social network system 210 calculating a connection density value between the first member and the second member, and updating the overlap value based on the connection density value. For example, the overlap value can be calculated using the connection density value (e.g., connection strength) between the first member and the second member. The overlap value calculator 208 calculates the connection density value between the first member and the second member, and updates the overlap value using the connection density value. For example, when the first member has n=10 first-degree connections, there are 45 (45=Σk=1n k−1=9+8+7+6+5+4+3+2+1) unique first-degree and second-degree connections. Additionally, the first member and the second member have 20 similar connections (e.g., same members who are either a first-degree or a second-degree connection of both the first member and the second member). Therefore, the connection density value is 44%. In one example, the overlap value can equal the connection density value.
In some instances, the overlap value further depends on a first geographic region associated with the first member and a second geographic region associated with the second member. For example, the overlap value increases when the first region is the same as the second region, implying that the first member and the second member live in the same region. Alternatively, the overlap value decreases when the first region is not the same as the second region.
Furthermore, the overlap value can be determined based on employment information, education information, location information, and the connection density value. The employment information includes company name, industry, job title, job function, and occupation. The education information includes school, degree, and field. The location information includes country, locale, and region.
In some instances, the specific skill is not listed on a profile page of the second member. For example, the specific skill is further determined based on a job title of the second member. In another example, the specific skill is further determined based on a degree attained by the second member.
In some instances, the specific skill is listed as a featured skill on the profile page of the second member when the quality score is above the predetermined threshold. Alternatively, the specific skill is not listed as the featured skill on the profile page of the second member when the quality score is below the predetermined threshold. Additionally, the featured skill further includes employment information (e.g., name of employer, job title) of the first member. Furthermore, the featured skill further includes educational information (e.g., degree, major, name of school) of the first member. An example of a featured skill is illustrated in
In some instances, the social network system 210 can include the endorsement database 120 storing the endorsement data 230. The endorsement data 230 includes a plurality of endorsements, with each endorsement 125 in the plurality of endorsements being associated with an endorser, a receiver, and a skill. The endorser is the member sending the endorsement associated with a specific skill, and the receiver is the member receiving the endorsement. Additionally, each endorsement 125 in the plurality of endorsements stored in the endorsement database 120 can include a classification.
The method 300 can further include the quality score calculator 204 classifying the endorsement as a high-quality endorsement when the quality score is above the predetermined threshold. Alternatively, the quality score calculator 204 can classify the endorsement as a low-quality endorsement when the quality score is below the predetermined threshold. Subsequently, the classification is presented on a profile page of the recipient by the user interface 202.
At operation 410, the social network system 210 can receive, from a user device of the second member, a request to view the profile page of the first member.
At operation 420, the social network system 210 can calculate a quality score for an endorsement for a specific skill from the plurality of skills associated with the first member using an endorser value, a recipient value, an overlap value, or a reputation score. For example, the quality score calculator 204 calculates the quality score 235 associated with the endorsement 125 based on the endorser value, the recipient value, the overlap value, and the reputation score. A processor in the server machine 110 can calculate the quality score in real time. In some instances, part of the calculation of the quality score can be performed offline using the offline data processor 240.
At operation 430, the social network system 210 can generate an endorsement suggestion for the specific skill when the quality score transgresses (e.g., exceeds) a predetermined threshold. The predetermined threshold (e.g., 80 out of 100) can be similar to the predetermined threshold at operation 360. Additionally, operation 360 in method 300 illustrates an example of generating an endorsement suggestion when the quality score transgresses a predetermined threshold.
At operation 440, the user interface 202 can present the endorsement suggestion on the profile page of the second member. Operation 360 in method 300 illustrates an example of presenting the endorsement suggestion. Additionally, as later described in
In some instances, the method 400 further includes the social network system 210 accessing a reputation score of the second member for the specific skill, and updating the quality score based on the reputation score of the second member for the specific skill.
Additionally, the quality score calculator 204 can verify an expert in a skill from a plurality of members based on the calculated quality score for an endorsement of the skill. The calculated quality score for the endorsement of the skill of the expert can be higher than a second predetermined threshold (e.g., 95), with the second predetermined threshold being higher than the predetermined threshold. The predetermined thresholds can be set by an administrator of the social network system 210 or determined dynamically based on user input and past quality scores for the endorsement of the skill.
A user interface 500 in
Additionally, the first featured skill 520 can include member data 220 (e.g., employment information, educational information, social graph data) of the endorser. For example, the first featured skill 520 includes employment information 530 of the endorsers. The employment information can include the employer name, which can be presented by validating the skill as being endorsed by coworkers of the recipient. Moreover, the first featured skill 520 includes social graph data 540 of the viewer of the profile page, such as connections of the viewer who have endorsed the member. The first featured skill 520 can also include a total number 550 of endorsements received for the skill.
In another example, the second featured skill 560 highlights leaders 570 (e.g., influencers, senior leaders, executives) who have endorsed the recipient. Furthermore, the second featured skill 560 can highlight relevant viewer information 580, such as whether the viewer has endorsed the recipient in the skill.
According to various example embodiments, one or more of the methodologies described herein facilitate an endorsement suggestion of a skill for a member using the member data 220. Additionally, using the database structure illustrated in FIG, 2, the data processing associated with the suggesting of the endorsement may be performed in real time by using the offline data processor 240 for some calculations. For example, the social network system 210 can use the offline data processor 240 in such a way as to allow efficient retrieval and processing of the information in order to present the validation in real time.
When these effects are considered in aggregate, one or more of the methodologies described herein may obviate a need for certain human efforts or resources that otherwise would be involved in calculating the quality score and validating the endorsement. Furthermore, computing resources used by one or more machines, databases, or devices (e.g., within the network environment 100) may similarly be reduced (e.g., by pre-determining the endorser value and the recipient value). Examples of such computing resources include processor cycles, network traffic, memory usage, data storage capacity, power consumption, and cooling capacity.
The validation process allows job seekers, recruiters, and market analysts to quickly find accurate information (e.g., subject matter experts) in the social network system 210. The user interface 202 provides structure to search results, which enables fast navigation and discovery.
In order for a user to have a great search experience, correctness and performance are key. Conventional approaches either sacrifice correctness or do not perform fast enough. The methodologies described herein facilitate accurate skill determination by removing false positives using a validation process using data available in the social network system 210. Additionally, by using the offline data processor 240 to perform some of the calculations when dealing with very large data sets, such as the member data 220, the results can be presented faster than they would be using current conventional approaches.
The machine 700 may include processors 710, memory/storage 730, and I/O components 750, which may be configured to communicate with each other such as via a bus 702. In an example embodiment, the processors 710 (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, a processor 712 and a processor 714 that may execute the instructions 716. The term “processor” is intended to include a multi-core processor that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions contemporaneously. Although
The memory/storage 730 may include a memory 732, such as a main memory, or other memory storage, and a storage unit 736, both accessible to the processors 710 such as via the bus 702. The storage unit 736 and memory 732 store the instructions 716 embodying any one or more of the methodologies or functions described herein. The instructions 716 may also reside, completely or partially, within the memory 732, within the storage unit 736, within at least one of the processors 710 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine 700. Accordingly, the memory 732, the storage unit 736, and the memory of the processors 710 are examples of machine-readable media. The memory/storage 730 can store the member data 220, the reputation data 225, or the endorsement data 230.
As used herein, “machine-readable medium” means a device able to store instructions and data temporarily or permanently and may include, but is not 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 instructions 716. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions (e.g., instructions 716) for execution by a machine (e.g., machine 700), such that the instructions, when executed by one or more processors of the machine 700 (e.g., processors 710), cause the machine 700 to perform any one or more of the methodologies described herein. Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” excludes signals per se.
The I/O components 750 may include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. The specific I/O components 750 that are included in a particular machine will depend on the type of machine. For example, portable machines such as mobile phones will likely include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I/O components 750 may include many other components that are not shown in
In further example embodiments, the I/O components 750 may include biometric components 756, motion components 758, environmental components 760, or position components 762, among a wide array of other components. For example, the biometric components 756 may include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram-based identification), and the like. The motion components 758 may include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components(e.g., gyroscope), and so forth. The environmental components 760 may include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors to detect concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding physical environment. The position components 762 may include location sensor components (e.g., a Global Position System (GPS) receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.
Communication may be implemented using a wide variety of technologies. The I/O components 750 may include communication components 764 operable to couple the machine 700 to a network 780 or devices 770 via a coupling 782 and a coupling 772, respectively. For example, the communication components 764 may include a network interface component or other suitable device to interface with the network 780. In further examples, the communication components 764 may 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 devices 770 may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).
Moreover, the communication components 764 may detect identifiers or include components operable to detect identifiers. For example, the communication components 764 may include Radio Frequency Identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect one-dimensional bar codes such as Universal Product Code (UPC) bar code, multi-dimensional bar codes such as Quick Response (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar code, and other optical codes), or acoustic detection components (e.g., microphones to identify tagged audio signals). In addition, a variety of information may be derived via the communication components 764, such as location via Internet Protocol (IP) geolocation, location via Wi-Fi® signal triangulation, location via detecting an NFC beacon signal that may indicate a particular location, and so forth.
In various example embodiments, one or more portions of the network 780 may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a LAN, a wireless LAN (WLAN), a WAN, a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a POTS network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. For example, the network 780 or a portion of the network 780 may include a wireless or cellular network and the coupling 782 may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or another type of cellular or wireless coupling. In this example, the coupling 782 may implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (1xRTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standard, others defined by various standard-setting organizations, other long-range protocols, or other data transfer technology.
The instructions 716 may be transmitted or received over the network 780 using a transmission medium via a network interface device (e.g., a network interface component included in the communication components 764) and utilizing any one of a number of well-known transfer protocols (e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions 716 may be transmitted or received using a transmission medium via the coupling 772 (e.g., a peer-to-peer coupling) to the devices 770. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying the instructions 716 for execution by the machine 700, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.
Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
Although an overview of the inventive subject matter has been described with reference to specific example embodiments, various modifications and changes may be made to these embodiments without departing from the broader scope of embodiments of the present disclosure. Such embodiments of the inventive subject matter may be referred to herein, individually or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single disclosure or inventive concept if more than one is, in fact, disclosed.
The embodiments illustrated herein are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed. Other embodiments may be used and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. The Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.
As used herein, the term “or” may be construed in either an inclusive or exclusive sense. Moreover, plural instances may be provided for resources, operations, or structures described herein as a single instance. Additionally, boundaries between various resources, operations, modules, engines, and data stores are somewhat arbitrary, and particular operations are illustrated in a context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within a scope of various embodiments of the present disclosure. In general, structures and functionality presented as separate resources in the example configurations may be implemented as a combined structure or resource. Similarly, structures and functionality presented as a single resource may be implemented as separate resources. These and other variations, modifications, additions, and improvements fall within a scope of embodiments of the present disclosure as represented by the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute software modules (e.g., code stored or otherwise embodied on a machine-readable medium or in a transmission medium), hardware modules, or any suitable combination thereof. A “hardware module” is a tangible (e.g., non-transitory) unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
In some embodiments, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware module may be a special-purpose processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware module may include software encompassed within a general-purpose processor or other programmable processor. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the phrase “hardware module” should be understood to encompass a tangible entity, and such a tangible entity may be physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising different hardware modules) at different times. Software (e.g., a software module) may accordingly configure one or more processors, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) between or among two or more of the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, “processor-implemented module” refers to a hardware module implemented using one or more processors.
Similarly, the methods described herein may be at least partially processor-implemented, a processor being an example of hardware. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. As used herein, “processor-implemented module” refers to a hardware module in which the hardware includes one or more processors. Moreover, the one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an application programming interface (API)).
The performance of certain operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.
Some portions of the subject matter discussed herein may be presented in terms of algorithms or symbolic representations of operations on data stored as bits or binary digital signals within a machine memory (e.g., a computer memory). Such algorithms or symbolic representations are examples of techniques used by those of ordinary skill in the data processing arts to convey the substance of their work to others skilled in the art. As used herein, an “algorithm” is a self-consistent sequence of operations or similar processing leading to a desired result. In this context, algorithms and operations involve physical manipulation of physical quantities. Typically, but not necessarily, such quantities may take the form of electrical, magnetic, or optical signals capable of being stored, accessed, transferred, combined, compared, or otherwise manipulated by a machine. It is convenient at times, principally for reasons of common usage, to refer to such signals using words such as “data,” “content,” “bits,” “values,” “elements,” “symbols,” “characters,” “terms,” “numbers,” “numerals,” or the like. These words, however, are merely convenient labels and are to be associated with appropriate physical quantities.
Unless specifically stated otherwise, discussions herein using words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or any suitable combination thereof), registers, or other machine components that receive, store, transmit, or display information. Furthermore, unless specifically stated otherwise, the terms “a” or “an” are herein used, as is common in patent documents, to include one or more than one instance. Finally, as used herein, the conjunction “or” refers to a non-exclusive “or,” unless specifically stated otherwise.
This application claims priority under 35 U.S.C. 119(e) to U.S. Provisional Patent Application Ser. No. 62/401,826, filed Sep. 29, 2016, which is incorporated herein by references in its entirety. Additionally, this application claims priority under 35 U.S.C. 119(e) to U.S. Provisional Patent Applications Ser. No. 62/402,753 and 62/402,955, filed Sep. 30, 2016, which are incorporated herein by references in their entirety.
Number | Date | Country | |
---|---|---|---|
62402753 | Sep 2016 | US | |
62402955 | Sep 2016 | US | |
62401826 | Sep 2016 | US |