By way of example, reference will now be made to the accompanying drawings.
The methods and systems disclosed herein are directed to establishing affinity of job listings based on jobseeker selection. Jobseeker interaction, selection and preferences can be utilized to create an affinity between job listings. Jobseeker interaction provides additional reliability to associations of job listings because jobseekers utilize human analysis and inspection before selecting job listings. In addition, jobseekers can assign a weight for one or more attributes. The weight assigned by the jobseeker represents the importance that a jobseeker gives to an attribute. For example, for a jobseeker, the location of the job may be important. Then, the weight that the jobseekers assigns to the location attribute of job listings can be a number representing great interest.
The affinity based on an attribute can be measured utilizing scores. For example, two job listings that a jobseeker has applied for, and that have a common attribute, are likely to be related and have an affinity. Thus, a similarity score for the two attributes can be established. As the two jobs listings continue to be listed by the job listing provider, and jobseekers apply for these jobs, similarity scores can continue to be calculated based on the similarity of the attributes of the jobs that jobseekers view, select, or apply for. As such, the similarity scores can continue to be recalculated based on continuous and new jobseeker interaction. Over time, the similarity scores can become increasingly accurate because of the large number of jobseekers that can contribute to defining similarity and affinity relation of these jobs.
The job listing provider 112 can include a web server 104 that transmits and receives data messages with the jobseeker computing devices 102, 114, and 116. The jobseeker computing devices 102, 114, and 116, and the web server 104 can utilize communication protocols such as HTTP. A jobseeker database 118 can store jobseeker profiles which in turn can include a record of jobs previously selected by the jobseeker. The jobseeker database 118 can also store jobseeker preferences, personal information, job application patterns, resume, etc.
The job listing provider 112 further includes job listing affinity module 108 which can reside on a standalone computer. In another embodiment, the job listing affinity module 108 resides in the server 106. The job listing affinity module 108 may include logic to determine affinity between two jobs stored at the jobs database 112. The job listing affinity module 108 is further configured with logic to access, write and read data from the jobs database 122 as well as from the jobseeker database 118. Job affinity can then be utilized by the job listing affinity module 108 to formulate job recommendations and relay job recommendations to the jobseeker. In another embodiment, a recommending module (not shown) can be utilized to formulate recommendations based on job affinity.
The job listing job listing affinity module 108 can be configured to calculate job listing affinity according to one or more algorithms. In one embodiment, affinity of two job listings selected by a jobseeker can be established by a similarity score s(Job 1, Job 2, Ai), where Ai is an attribute of Job 1 and Job 2. If the similarity score s(Job 1, Job 2, Ai) is greater than a predefined threshold, then Job 1 and Job 2 are affiliated. In one example, the threshold t can be between zero and one (e.g., 0<=t<=1). In another example, the threshold t can be a number within any other range. A total affinity score of two job listings can be calculated utilizing the similarity scores of all the attributes of Job 1 and Job 2. In one example, the total affinity TA can be defined by the following formula: TA=[s(Job 1, Job 2, A1)*w1]+[s(Job 1, Job 2, A2)*w2]+ . . . +[s(Job 1, Job 2, An)*wn], where wi corresponds to the weight that a jobseeker or system operator or administrator has established to attribute Ai. In another example, the total affinity TA can be defined by the following formula: TA=s(Job 1, Job 2, A1)+[s(Job 1, Job 2, A2)+ . . . +s(Job 1, Job 2, An).
Furthermore, a normalized total affinity can be provided according to the following formula: TAN=(TA1-2/UJob1+TA1-2/UJob2)/2, where UJob1 is the number of jobseekers interested in Job 1, and UJob2 is the number of jobseekers interested in Job 2.
In another embodiment, the affinity of two job listings that have been selected by multiple jobseekers is established by another algorithm. For example, jobseekers1 . . . jobseekersn are interested in Job 1 and Job 2. For a jobseeker, jobseekersk, a similarity score s(k, Job 1, Job 2, A1) can be calculated based on a first attribute A1. Again, if the similarity score s(k, Job 1, Job 2, A1) is greater than a predefined threshold, then Job 1 and Job 2 are affiliated. In one example, if the similarity score is greater than a threshold t, then Job 1 and Job 2 are affiliated through jobseekersk. Again, the threshold t can be established to be any number and can be within any range. For example, the threshold t can be between zero and one, e.g., 0<=t<=1. In addition, if the threshold can be for example 0.5. The threshold is can be set by a system operator or administrator, or by a user, or programmatically, or by some combination thereof.
In one embodiment, the total similarity score of Jobs 1 and Job 2 on attribute A1 for all jobseekers is the sum of s(k, Job 1k, Job 2k, A1)*wk, where wk is the weight that a jobseekerk gives to attribute A1. Thus, in one example, the following formula can be used to calculate the total similarity score TS of two job listings Job 1 and Job 2 utilizing the scores of multiple jobseekers: TS(Job 1, Job 2, A1)=[s(1, Job 11, Job 21, A1)*w1]+[s(1, Job 11, Job 21, A1)*w1]+ . . . +[s(1, Job 1n, Job 2n, An)*wn], the total number of jobseekers that selected Job 1 and Job 2.
As discussed above, the total similarity score can also be normalized. Normalized similarity can be defined as TSN=(TS1-2/UJob1+TS1-2/UJob2)/2, where UJob1 is the number of jobseekers interested in Job 1, and UJob2 is the number of jobseekers interested in Job 2.
In addition, total affinity calculation can be provided to add the similarity scores for each of the attributes. For example, :The total affinity between Jobs[i] and Jobs[j] TA=TS(Job 1, Job 2, A1)+TS(Job 1, Job 2, A2)+ . . . +TS(Job 1, Job 2, Am)
It should be understood that the job listing selection module 204 may be implemented as one or more physical devices that are coupled to the processor 206 through a communication channel. Alternatively, the job listing selection module 204 may be represented by one or more software applications (or even a combination of software and hardware, e.g., using application specific integrated circuits (ASIC)), where the software is loaded from a storage medium, (e.g., a magnetic or optical drive or diskette) and operated by the processor 206 in the memory 210 of the computing device 102. As such, the job listing selection module 204 (including associated data structures) of the present invention may be stored on a computer readable medium, e.g., RAM memory, magnetic or optical drive or diskette and the like.
The job listing selection module 204 can be utilized by a jobseeker to make job listing selections, such as applying for a job listing from an Internet website. In addition, the job listing selection module 204 can receive job listing affinity data from the server 106. The job listing selection module 204 can be configured to automatically make a selection decisions based on affinity data and recommendations received from the server 114.
The job listing selection module can be a computer application such as by way of non-limiting example an Internet browser, or any other network communication software or hardware that permits a jobseeker to interact with the server 106.
At process block 302, a first job selected by a jobseeker is identified. In one embodiment, the first job can be identified by accessing the jobseeker profile at the jobseeker database 518. The jobseeker profile can indicate all of the jobs that a jobseeker has viewed, applied for, or otherwise selected. In addition, the job attributes, can also be stored in the jobseeker profile. Alternatively, the job information can simply be a job identifier that references a job record in the job database 508. The process 300 continues to process block 304.
At process block 304, a second job selected by a jobseeker is identified. A second job that has been selected by the same jobseeker can be identified from the same jobseeker profile utilized to identify the first job. The process 300 continues to process block 306.
At process block 306, a similarity score that represents similarity between a first job attribute and a second job attribute is determined. The similarity between two attributes can be determined utilizing one or more methodologies. In one example, a first job attribute and a second job attribute can be deemed similar only if the corresponding values are identical. For example, if the attribute is Location, the Location for a first and a second job is only similar if the location for both jobs is “Chicago.” In another embodiment, the first job attribute and the second job attribute can be deemed similar if there is a match of the first job attribute and the second job attribute in a predefined relational table. In another embodiment, the first and the second attributes are similar based on heuristic models implemented by a system administrator, jobseekers, recruiters, or programmatically. For example, similarity of attributes can be established based on similarity of the text value. Two attributes values can be similar even when the attribute values are not identical. In one example, two locations can be deemed similar based on proximity. In another example, the predefined relational table can include locations that are similar even though the name of the location is not the same. Further, the table may indicate the level of similarity of the two attributes. For example, a location of San Francisco and a location of Berkley can have a higher similarity location score than a location of San Francisco in comparison with San Jose.
Alternatively, the level of selection can be utilized to determine a similarity score. For example, if the jobseeker viewed the first job and the second job, a low similarity score is assumed for both jobs. If the jobseeker applied for both jobs, however, a higher similarity score for the two jobs can be assumed. In addition, the similarity score can then be utilized in the aggregate with other similarity scores of other jobseekers. Thus, if a high number of jobseekers applied for the same two jobs, there is a greater probability that the two jobs are closely related, which can be reflected in the sum of similarity scores. The process 300 continues to process block 308.
At process block 308, the first job and the second job are established to share affinity if the first job attribute and the second job attribute were determined to be similar. A threshold of similarity can be established. In another embodiment, the threshold of similarity can be predefined by a jobseeker. For example, one jobseeker can establish a high threshold of similarity if the jobseeker only wants to view recommended jobs that have very close affinity to those job listings that the jobseeker has previously viewed or selected. Likewise, another jobseeker can establish a low threshold of similarity if the jobseeker wants to view recommended jobs that are loosely related to those job listings that the jobseeker has previously viewed or selected. In yet another embodiment, the threshold of similarity can be predefined according to the attributes being compared. Thus, in one example, the threshold of similarity can be established to be low for location, but high for the job title. This configuration can be useful for a jobseeker who is willing to relocate but has a high interest in finding a job listing with a specific job title.
The first job 402 and the second job 404 may include a location attribute 410 which can be utilized as the basis for comparison. If the location attribute value 406 and the location attribute value 408 are deemed similar, then the first job 402 and the second job 404 can be deemed to have an affinity relation. For example, if by virtue of being in the same metropolitan area, location attribute value 406, San Francisco, is deemed similar to the location attribute value 408, Berkley, then the first job 402 and the second job 404 can be affiliated.
A similarity score between attribute value 406 and attribute value 408 can be determined depending on one or more factors. In one example, the similarity score can be a number between zero and one. In another example, the similarity score can be a number between one and one hundred. In another example, the similarity score can be any number. Moreover, a threshold of similarity can be established to determine when two jobs are related. For example, if the similarity score is greater than a predetermined threshold of similarity then first job 402 and second job 404 can be deemed affiliated.
Job location similarity can be defined in different ways. In one embodiment, a metro area code can be utilized to calculate location similarity such that if two jobs are located in the same metro area, the similarity score between the two jobs can be a high number. For example, the similarity score can be 1 in a scale from 0 to 1. If the two jobs are not in the same metro area, the similarity score can be low, such as 0 in a scale from 0 to 1.
In another embodiment, the location similarity can be calculated utilizing geo-codes. For example, using known algorithms and geoposition data of each of the two jobs locations, the distance between a first job location and a second job location can be determined. In one example, the location similarity score of two jobs can be calculated according to the formula s=1−min((Distance/Base Distance), 1), where the Distance is the distance between the first job location and the second job location. The Base Distance can be calculated according to the formula b=25+(0.6−Location Weight)*30, where the Location Weight is the weight a jobseeker assigned for a location attribute.
In yet another embodiment, the location similarity can be determined by executing a lookup operation of a relational table that includes location pairs corresponding to locations that are affiliated. The table can be built according to a uniformly applied formula used for all jobseekers and job listings. In another example, the table can be customized by a jobseeker.
Job title similarity can also be defined in multiple ways. In one embodiment, the job listing provider can utilize a list of standard job titles. When a new job listing is posted, the best fitting standard job title is applied to the new job listing. For example, new jobs with titles of “Programmer,” “Software Developer,” and “Computer Programming” may all be standardized to a title such as “Computer Programmer.” The set of standard job titles allows easily comparing two job titles and determining an accurate similarity score. As an example, in one embodiment, if two jobs match to the same standard job title, the similarity score can be 1 in a scale from 0 to 1. If the two job titles do not match, the similarity score assigned can be 0 in a scale from 0 to 1.
Thus, in order to standardize job titles, various methodologies can be utilized. In one example, standard titles are sorted by length or word count in ascending order. Each job title is matched to the standard titles in the sorted list such that the most descriptive (e.g., largest words count) standard job title is utilized.
Industry similarity can also be defined according to various methodologies. In one embodiment, a list of standard industries can be generated and utilize to assign the correct standard industry for new job listings. In another embodiment, a direct comparison of job industries between a first job and a second job can be conducted. If the industries match, then the similarity score can be 1 in a scale from 0 to 1. If the two job industries do not match, the industry similarity score assigned can be 0 in a scale from 0 to 1. In yet another embodiment, a similarity table with industry listings can be utilized such that similarity scores are predefined for pairs of job industries.
In another example, a job industry of IT and a job industry of Software can be established to have a similarity score of 0.5. In yet another example, a job industry of Internet and a job industry of Software can be established to have a similarity score of 0.5.
In one embodiment, the industry similarity score can be calculated by comparing a first job industry and a second job industry. If the industries match, then the industry similarity can be 1 in a scale from 0 to 1. If the industries do not match, a search can be performed in the similarity table 500 to look for the pair of industries and determine the similarity score. If the industry pair is not in the similarity table 500, then the similarity score is zero.
In another embodiment, the industry similarity score can be calculated by comparing a first job industry and a second job industry. If the industry pair is in the similarity table 500 then the industry similarity score between the first job and the second job is the similarity score corresponding to the industry pair in the similarity table 500.
Furthermore, the industry similarity score 606 can be calculated based on a predefined similarity score. In one example, the industry similarity table 500 can be utilized to derive the industry similarity score 606. Thus the industry similarity score 606 can be 0.2 since the industry of the first job 402 is IT, and the industry of the second job 404 is Software.
In addition, a total affinity score can be calculated based on the attributes similarity score. Thus, total affinity score 608 can be calculated by adding the title similarity score 602, the location similarity score 604, and the industry similarity score 606. In one example, the total affinity score 608 is 1.2 since the title similarity score 602 is zero, the location similarity score 604 is 1, and the industry similarity score 606 is 0.2.
The weight table 700 illustrates the importance that each jobseeker gives to jobs attributes. In one embodiment, the total sum of the weights established by a jobseeker is one. Thus, a first jobseeker may assign 0.2 to the title weight 702, 0.4 to the location weight 704, and the 0.3 to the industry weight.
In one embodiment, the weights for each jobseeker are stored in the jobseeker database 118. The jobseeker database 118 contains jobseeker profiles that can include the jobseeker weight preferences.
At process block 1004, each job pair is compared. In one embodiment, only one attribute is utilized to determine the total similarity score. For example, if the job pair corresponds to two job listings having three attributes, Location, Title, and Industry, only the Location attribute can be utilized for the comparison. As discussed above, the similarity scores can further be adjusted to include the attribute weight. In another embodiment, all attributes are utilized for comparison in order to determine the total similarity score. The process 1000 continues to process block 1006.
At process block 1006, the total similarity score for each pair of jobs is determined. Once the similarity score for one or more attributes of a pair of jobs is determined, the total similarity score is calculated based on the attribute similarity scores. In one example, the total similarity score for a job pair is the sum of all attribute similarity scores. In another example, the total similarity score for a job pair is the product of all attribute similarity scores. In yet example, the total similarity score for a job pair is the sum of weighted attribute similarity scores. The process 1000 continues to process block 1008.
At process block 1008, once the total similarity score has been calculated for each pair of jobs, the similarity score is assigned to the pair of jobs and stored in a data repository. For example, the newly calculated scores can be stored the jobs database 122.
In one example, a first jobseeker applies for a plurality of jobs 1102, a second jobseeker applies for a plurality of jobs 1104, and a third jobseeker applies for a plurality of jobs 1106. In another example, a first jobseeker submits his resume for a plurality of jobs 1102, a second jobseeker his resume for a plurality of jobs 1104, and a third jobseeker his resume for a plurality of jobs 1106.
In one embodiment, the affinity score of a given job pair can be a sum of total weighted similarity scores for the job pair. Therefore, in one example, a job pair 1302 corresponding to pair (Job 1, Job 2), can have value that is the sum of the total similarity scores of all jobseekers who have applied to Job 1 and Job 2. By way of example, the job pairs 1202 and 1208 are job pairs (Job 1, Job 2) for which a total similarity score has been calculated. Job pair 1202 corresponds to a first jobseeker, and job pair 1208 corresponds to a second jobseeker. Thus, job pair affinity score 1302 can have a value that is the sum of values of the total similarity score of job pairs 1202 and 1208. The job pair affinity score represents the affinity between Job 1 and Job 2 according to all jobseekers that have applied to both jobs.
In another example, job pair affinity score 1304 includes the total similarity score of job pair 1204 corresponding to a first jobseeker. Because no other jobseekers have applied to both jobs, Job 1 and Job 3. The only pair having a total weighted similarity score is job pair 1204. The weighted similarity score of job pair 1204 is used as the affinity score for job pair 1304. If another jobseeker applies or selects Job 1 and Job 3, a new pair with a total similarity score can be introduced, and the job pair affinity score 1304 can then be recalculated.
In another example, a job pair affinity score 1306 corresponding to pair (Job 2, Job 3) can have a value that is the sum of the total similarity scores of all jobseekers who have applied to both Job 1 and Job 3. By way of example, the job pairs 1206 and 1210 are job pairs (Job 2, Job 3) for which a total weighted similarity score has been calculated. Job pair 1206 corresponds to the first jobseeker, and job pair 1210 corresponds to the third jobseeker. Thus, job pair affinity score 1306 can have a value that is the sum of values of the total weighted similarity score of job pairs 1206 and 1210. As such, the job pair affinity score 1306 represents the affinity between Job 2 and Job 3 in accordance with the similarity scores provided by the jobseekers that have applied to both jobs.
In yet another example, job pair affinity score 1308 and job pair affinity score 1310 include the total similarity score of job pairs 1212 and 1214 respectively.
Only the third jobseeker has selected both jobs Job 2 and Job 4. Therefore, the total weighted similarity score of job pair 1212 can be used as the value for job pair 1308. Likewise, because the third jobseeker has selected both jobs Job 3 and Job 4, job pair 1214 can be used as the value for job pair affinity score 1310.
In another embodiment, the total score can be averaged. For example, job pair affinity score 1302 can have a value that is the average of the values of the total weighted similarity score of job pairs 1202 and 1208. Other methodologies can also be utilized to calculate the affinity score based on the total similarity scores of each pair of each jobseeker. Thus, normalization, ceiling, floor, mean, and other operations of the total similarity scores can be performed in order to obtain an affinity score.
While the apparatus and method have been described in terms of what are presently considered the most practical and preferred embodiments, it is to be understood that the disclosure need not be limited to the disclosed embodiments. It is intended to cover various modifications and similar arrangements included within the spirit and scope of the claims, the scope of which should be accorded the broadest interpretation so as to encompass all such modifications and similar structures. In addition, attributes utilized in some examples, the number of jobseekers or jobseekers, and other particular details are disclosed for discussion and exemplary purposes only. The present disclosure includes any and all embodiments of the following claims.