U.S. patent application number 14/274387 was filed with the patent office on 2015-10-29 for job recommendation engine using a browsing history.
This patent application is currently assigned to LinkedIn Corporation. The applicant listed for this patent is LinkedIn Corporation. Invention is credited to Sean Seol Woong Choi, Vaibhav Goel, Samir M. Shah, Lili Wu.
Application Number | 20150310392 14/274387 |
Document ID | / |
Family ID | 54333198 |
Filed Date | 2015-10-29 |
United States Patent
Application |
20150310392 |
Kind Code |
A1 |
Wu; Lili ; et al. |
October 29, 2015 |
JOB RECOMMENDATION ENGINE USING A BROWSING HISTORY
Abstract
A system receives and stores in a database identifications and
attributes of jobs viewed by a user in a job posting service, and
creates a job browsing history profile for the user using the
identifications and attributes. The system compares the job
browsing history profile to jobs in the job posting service,
generates a listing of jobs based on the comparison, and displays
the listing of jobs to the user.
Inventors: |
Wu; Lili; (PaloAlto, CA)
; Shah; Samir M.; (San Francisco, CA) ; Choi; Sean
Seol Woong; (Los Angeles, CA) ; Goel; Vaibhav;
(Mountain View, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
LinkedIn Corporation |
Mountain View |
CA |
US |
|
|
Assignee: |
LinkedIn Corporation
Mountain View
CA
|
Family ID: |
54333198 |
Appl. No.: |
14/274387 |
Filed: |
May 9, 2014 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61983585 |
Apr 24, 2014 |
|
|
|
Current U.S.
Class: |
705/321 |
Current CPC
Class: |
Y10T 428/14 20150115;
G06Q 10/1053 20130101; C08J 5/18 20130101 |
International
Class: |
G06Q 10/10 20060101
G06Q010/10 |
Claims
1. A memory device, the memory device communicatively coupled to a
processor and comprising instructions which, when performed on the
processor, cause the processor to: receive and store in a database
identifications and attributes of job postings viewed by a user in
a job posting service; create a job browsing history profile for
the user using the identifications and attributes; compare the job
browsing history profile to job postings in the job posting
service; generate a listing of job postings based on the
comparison; and display the listing of job postings to the
user.
2. The memory device of claim 1, comprising instructions to cause
the processor to generate the listing of job postings when the
attributes of the job postings in the job browsing history profile
are similar to attributes of the job postings that have not been
viewed by the user.
3. The memory device of claim 1, wherein the job postings that have
not been viewed by the user are newly listed job postings in the
job posting service.
4. The memory device of claim 1, comprising instructions to cause
the processor to: receive from the user a selection of a first job
posting from the listing of job postings; and display a second
listing of job postings to the user, the second listing of job
postings comprising job postings viewed by other users who have
also viewed the first job posting.
5. The memory device of claim 4, wherein the second listing of job
postings is created using instructions that cause the processor to:
receive and store in the database data relating to the other users
viewing job postings in the job posting service; and create a
plurality of data pairs comprising a first element including the
first job posting and a second element including a second job
posting.
6. The memory device of claim 5, wherein both the first job posting
and the second job posting have been viewed by at least one other
user.
7. The memory device of claim 5, wherein the display of the second
listing of job postings to the user is based on data pairs that
have as the first element the first job posting selected by the
user.
8. The memory device of claim 4, wherein the user and the other
users are members of a social networking service or business
networking service.
9. The memory device of claim 4, comprising instructions to cause
the processor to record a date when job postings have been viewed
by the other users; and to display to the user jobs in the second
listing of job postings that have been viewed by the other users
after a threshold date.
10. The memory device of claim 4, comprising instructions to cause
the processor to add a new job posting to the second listing of job
postings based on a comparison of attributes of the new job posting
to attributes of the job postings in the second listing of job
postings.
11. The memory device of claim 10, comprising instructions to
generate a data pair comprising the first job posting and the new
job when the attributes of the new job posting are similar to
attributes of the first job posting.
12. The memory device of claim 1, comprising instructions to cause
the processor to aggregate a plurality of job postings from a
business organization into a single listing among the second
listing of job postings displayed to the user.
13. The memory device of claim 1, comprising instructions to cause
the processor to permit the user to modify the job browsing history
profile; and to use the modified job browsing history profile in
connection with displaying to the user the listing of job
postings.
14. The memory device of claim 4, comprising instructions to cause
the processor to implement a term frequency-inverse document
frequency (tf-idf) protocol such that a frequently viewed job
posting by the other users does not appear in the second listing of
job postings displayed to the user.
15. The memory device of claim 4, wherein the second listing of job
postings is regenerated on a periodic basis.
16. The memory device of claim 4, comprising instructions to cause
the processor to consider one or more of a click through rate or a
view rate when determining the job postings to include in the
second listing of job postings.
17. The memory device of claim 1, comprising instructions to cause
the processor to generate a preference value for the user for one
or more job postings in the second listing of job postings.
18. The memory device of claim 1, comprising instructions that
cause the processor to create the job browsing history profile
after a number of job postings viewed by the user exceeds a
threshold.
19. A process comprising: receiving and storing in a database
identifications and attributes of job postings viewed by a user in
a job posting service; creating a job browsing history profile for
the user using the identifications and attributes; comparing the
job browsing history profile to job postings in the job posting
service; generating a listing of job postings based on the
comparison; and displaying the listing of job postings to the
user.
20. A system comprising: a computer processor configured for:
receiving and storing in a database identifications and attributes
of job postings viewed by a user in a job posting service; creating
a job browsing history profile for the user using the
identifications and attributes; comparing the job browsing history
profile to job postings in the job posting service; generating a
listing of job postings based on the comparison; and displaying the
listing of job postings to the user.
21. The system of claim 20, wherein the job postings in the job
posting service have not been viewed by the user.
Description
PRIORITY
[0001] This patent application claims the benefit of priority to
U.S. Provisional Patent Application Ser. No. 61/986,585, filed on
Apr. 30, 2014, which is incorporated herein by reference in its
entirety.
TECHNICAL FIELD
[0002] The subject matter disclosed herein generally relates to a
system and method for recommending jobs to a user of a job posting
service, a social networking service, and/or business networking
service, based on a browsing history of the user.
BACKGROUND
[0003] Job postings to advertise an available job and solicit
applications for the job are well known. Job postings have been
incorporated into newspapers, periodicals, and the like for many
years. More recently, search engines and websites related to
facilitating job searching have presented available jobs
electronically. In such circumstances, entities advertising jobs
conventionally pay a fee to the owner of the platform on which the
advertisement is to be displayed. As a result, advertisements may
be displayed generally to most if not all of the users who access
the platform.
BRIEF DESCRIPTION OF THE DRAWINGS
[0004] Some embodiments are illustrated by way of example and not
limitation in the figures of the accompanying drawings.
[0005] FIG. 1 is a block diagram of a system including user devices
and a social network server.
[0006] FIG. 2 is a block diagram illustrating various components of
a social networking server.
[0007] FIG. 3 is a block diagram showing some of the functional
components or modules that comprise a recommendation engine.
[0008] FIGS. 4A, 4B, and 4C are example user interfaces that can be
displayed by the social network on the user device.
[0009] FIGS. 5A, 5B, and 5C are a block diagram illustrating
features and operations of a process and system for recommending
job postings to a user.
[0010] FIG. 6 is a block diagram illustrating components of a
machine able to read instructions from a machine-readable
medium.
DETAILED DESCRIPTION
[0011] Example methods and systems are directed to recommending
jobs to a user based on a browsing history of the user. Examples
merely typify 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.
[0012] While broad dissemination of a job posting may be desirable
in certain circumstances, it may be inefficient for a job-posting
entity to display jobs to users who have no interest in a
particular job. This lack of interest could be because the posted
job is not within the user's current area of expertise and
experience, or because the job is not within the area that the user
is hoping to move into. Consequently, a system has been developed
that displays job postings to users and/or members of a social or
business network based on a browsing history (of posted jobs) of
the user, and in an embodiment, on jobs viewed by one or more other
users who have also viewed a job that was viewed by the user. In
this way, a user or member may receive additional pertinent job
postings based on the user's job browsing history. Relatedly, job
posting entities may sponsor job postings on a social or business
network or on a platform with access to the user's browsing history
with the increased expectation that the expense of sponsoring a job
posting may be relatively more likely to result in the job posting
being presented to a user who has an interest in the job
posting.
[0013] FIG. 1 is a block diagram of a system 100 including user
devices 102 and a social network and/or business network server
104. User devices 102 can be a personal computer, netbook,
electronic notebook, smartphone, or any electronic device known in
the art that is configured to display web pages. The user devices
102 can include a network interface 106 that is communicatively
coupled to a network 108, such as the Internet.
[0014] The social network server 104 can be communicatively coupled
to the network 108. The server 104 can be an individual server or a
cluster of servers, and can be configured to perform activities
related to serving the social network, such as storing social
network information, processing social network information
according to scripts and software applications, transmitting
information to present social network information to users of the
social network, and receive information from users of the social
network. The server 104 can include one or more electronic data
storage devices 110, such as a hard drive, and can include a
processor 112.
[0015] The social network server 104 can store information in the
electronic data storage device 110 related to users and/or members
of the social network, such as in the form of user characteristics
corresponding to individual users of the social network. For
instance, for an individual user, the user's characteristics can
include one or more profile data points, including, for instance,
name, age, gender, profession, prior work history or experience,
educational achievement, location, citizenship status, leisure
activities, likes and dislikes, and so forth. The user's
characteristics can further include behavior or activities within
and without the social network, as well as the user's social graph.
For an organization, such as a company, the information can include
name, offered products for sale, available job postings,
organizational interests, forthcoming activities, and the like. For
a particular available job posting, the job posting can include a
job profile that includes one or more job characteristics, such as,
for instance, area of expertise, prior experience, pay grade,
residency or immigration status, and the like.
[0016] The ability to accurately identify in real-time or
essentially real-time a set of job postings in which the user may
be interested based on the user's browsing history can be achieved
with a general recommendation engine. Accordingly, at least in some
examples, the recommendation engine provides a recommendation
service that can be customized for use with multiple applications
or services. A recommendation entity can be a collection of
information organized around a particular concept that is supported
by the system 100 in general, such as the user browsing history,
and the recommendation engine in particular.
[0017] The general recommendation engine may execute in real-time
or as a background operation, such as offline or as part of a batch
process. In some examples that incorporate relatively large amounts
of data to be processed, the general recommendation engine may
execute via a parallel or distributed computing platform.
[0018] FIG. 2 is a block diagram illustrating various components of
a social networking server 104 with a recommendation engine 200 for
identifying similarities between different recommendation entity
types, such as job postings previously viewed by a user (as
represented by a job browsing history), job postings not yet viewed
by the user, and job postings viewed by one or more other users who
have also viewed the job postings viewed by the user. In an
example, the social networking server 104 is based on a
three-tiered architecture, consisting of a front-end layer,
application logic layer, and data layer. As is understood by
skilled artisans in the relevant computer and Internet-related
arts, each module or engine shown in FIG. 2 can represent a set of
executable software instructions and the corresponding hardware
(e.g., memory and processor) for executing the instructions. To
avoid obscuring the subject matter with unnecessary detail, various
functional modules and engines that are not germane to conveying an
understanding of the inventive subject matter have been omitted
from FIG. 2. However, a skilled artisan will readily recognize that
various additional functional modules and engines may be used with
a social networking server 104 such as that illustrated in FIG. 2,
to facilitate additional functionality that is not specifically
described herein. Furthermore, the various functional modules and
engines depicted in FIG. 2 may reside on a single server computer,
or may be distributed across several server computers in various
arrangements.
[0019] The front end of the social network server 104 consists of a
user interface module (e.g., a web server) 202, which receives
requests from various client computing devices, and communicates
appropriate responses to the requesting client devices. For
example, the user interface module(s) 202 may receive requests in
the form of Hypertext Transport Protocol (HTTP) requests, or other
web-based, application programming interface (API) requests. The
application logic layer includes various application server modules
204, which, in conjunction with the user interface module(s) 200,
generates various user interfaces (e.g., web pages) with data
retrieved from various data sources in the data layer. With some
embodiments, individual application server modules 204 are used to
implement the functionality associated with various services and
features of the system 100. For instance, the ability to identify a
particular job posting by a user may be a service implemented in an
independent application server module 204. Similarly, other
applications or services that utilize the recommendation engine 200
may be embodied in their own application server modules 204.
[0020] The data layer can include several databases, such as a
database 208 for storing recommendation data 210, such as the
browsing history of users, data pairs of jobs viewed by users, user
characteristics (and/or user preferences), and job profiles, and
can further include additional social network information, such as
interest groups, companies, advertisements, events, news,
discussions, tweets, questions and answers, and so forth. In some
examples, the recommendation entity data is processed in the
background (e.g., offline) to generate pre-processed entity data
that can be used by the recommendation engine, in real-time, and to
make recommendations generally. In an example, the recommendation
engine 200 may retrieve a job browsing history profile of a user,
compare a job in a user's job browsing history profile to an
element in a job data pair, and recommend the other job posting
represented by the other element in the job data pair (which
represents another job posting viewed by one or more other users
who also have viewed the job represented by the first element in
the job data pair).
[0021] In various examples, when a person initially registers to
become a user (and/or member) of the system 100, the person can be
prompted to provide some personal information, such as his or her
name, age (such as by birth date), gender, interests, contact
information, home town, address, the names of the user's spouse
and/or family users, educational background (such as schools,
majors, etc.), employment history, skills, professional
organizations, and so on. This information can be stored, for
example, in the database 208.
[0022] The server 104 can include a job poster interface 205, such
as with a user interface coupled to the server 104 or via the
network interface 106. The user interface can include a
conventional keyboard and display configuration well known in the
art. The job poster interface 205 provides an interface for the
posting of jobs, including a corresponding job profile, on the
social network.
[0023] The job poster interface 205 is coupled to a data management
system 206. The data management system 206 can incorporate data
management technologies well known in the art or can incorporate
proprietary data management structures. In an example, the data
management system 206 incorporates SAS, or Statistical Analysis
System data management systems, to promote business analysis,
statistical analysis, data storage and recovery, and the like for
job information. The data management system 206 can include the
capacity for social network administrators to utilize the data
generated by the data management system 206, such as by inputting
tasks into the data management system 206.
[0024] The job poster interface 205 and the data management system
206 can both be coupled to the database 208. The job poster
interface 205 can transmit job data, such as job profiles, to the
database 208 for storage without respect to data management
activities. The data management system 206 can store job data in
the database 208 upon the job data having been acted upon for data
management analysis.
[0025] The network interface 106 can provide the input of user
data, such as user browsing data or user characteristics, into the
social network. The user data can be stored in the database 208 or
can be directly transmitted to the recommendation engine 200 for
cross reference against the job data pairs stored in the database
208. Jobs identified by the recommendation engine 200 can be
transmitted via the network interface 106 to the user device 102
for presentation to the user.
[0026] A job analytics system 207 can track the occurrence of jobs
that have been presented to or selected by a user. The job
analytics system 207 can track how many times a job has been
presented, how many times a job has been selected or "clicked" on
by a user, bill a job presenting entity accordingly, and adjust the
remaining number of times the job has left to be presented or
selected accordingly.
[0027] The job analytics system 207 can further monitor which jobs
are posted to users to seek to prevent job postings from being
duplicated to a single user, as well as record analytical
information related to the number of times, for instance, that a
presented job has been clicked on by a user and the user
characteristics of users who have clicked on job presentations. In
various embodiments, the job analytics system 207 can present the
same job to the same user a predetermined number of times or until
the user clicks on the job to learn more. The job analytics system
207 can further terminate job bids that, for instance, meet a
termination date or are being presented to users unsatisfactorily
frequently or unsuccessfully. Additionally, the job analytics
system 207 may be utilized to renew or extend job bids, such as at
the direction of the job presenting entity or the social network
administrator.
[0028] In various examples, when a user accesses the social
network, the recommendation engine 200 cross references the user's
job browsing history profile against some or all of the job data
pairs in the database 208. The recommendation engine 200 can
generate a relevance factor for each of the cross referenced job
postings. The recommendation engine 200 can utilize the processor
112 and can manipulate the relevance for the job postings and/or
recommendations.
[0029] In various examples, the relevance of a job recommendation
to a user may factor in previous success that the job posting has
had with other users. If a large percentage of users who are
presented with a job posting based on the job profile select the
job posting for more information, then the job posting may be
deemed more relevant. A so-called "click-through rate" that exceeds
a threshold may result in the relevance of the job posting being
increased, while a click-through rate less than a threshold may
result in the relevance of the job posting being reduced.
[0030] Relatedly, the characteristics of other users of the social
network who do select a job posting for more information can also
be incorporated into determining the relevance for another
particular user. Characteristics of users who have selected a
particular job posting in the past can be compared against user
characteristics (and/or user preferences) of a prospective user. To
the extent that user characteristics of a prospective user are or
are not related to the user characteristics of users who have
selected a job posting in the past, the relevance of the job
posting may similarly be increased or decreased for a prospective
user. As such, the server 104 may store characteristics of users
who have selected the job posting in the past and may develop
composite user characteristics. The degree to which the
characteristics of a prospective user match the composite
characteristics may weigh the results of the recommendation engine
more heavily for a given prospective user.
[0031] FIG. 3 is a block diagram showing some of the functional
components or modules that comprise a recommendation engine 200, in
some examples, and illustrates the flow of data that occurs when
performing various operations of a method for identifying and
presenting job postings based on a user's job browsing history
profile (and commonly viewed job postings by other users). As
illustrated, the recommendation engine 200 can be coupled to an
external data source 310, and can consist of two primary functional
modules--an extraction engine 300 and a matching engine 302. The
extraction engine 300 can extract job data pairs having a
particular element (that represents a particular job posting), and
then the matching engine 302 can perform a particular type of
matching operation, under the direction of a particular
configuration file 304, that is specific to the requesting
application (such as finding other data pairs that include the
particular element). Accordingly, depending upon the particular
inputs to the recommendation engine 200 and the desired outputs,
different configuration files 304 may be used to compare different
characteristics of different recommendation entities.
[0032] FIG. 4A is a depiction of a user interface screen 400 that
can be displayed by the social network, business network, or job
posting service on the user device 102 corresponding to a user.
FIG. 4C is a depiction of the user interface screen on a mobile
device. The user interface screen 400 can occupy the entire screen
of the user device 102. In another example embodiment, the user
interface screen 400 can be a sub-portion of a larger user
interface screen displaying additional information related to the
social and/or business network. Upon the recommendation engine 200
having identified jobs to present to a user based on the user's job
browsing history profile, the social network server 104 can
transmit the jobs to the user device 102, such as along with other
social network information that is displayed on a user interface,
such as a display screen, of the user device 102.
[0033] In the illustrated example, the user interface screen 400
includes a list 405 of jobs. In various examples, the list 405 is
an ordered list based on various criteria.
[0034] In an example, jobs 410, 415 are displayed at the top of the
list, i.e., most prominently on the list 405. In the illustrated
example, the jobs 410, 415 include a company name 411, a job title
412, and a job location 413.
[0035] In the illustrated example, jobs 420, 425 are displayed less
prominently than the jobs 410, 415. The jobs 420, 425 also include
a company name 411, a job title 412, and a job location 413.
[0036] When a user clicks on a job posting displayed on the user
interface 400 such as job posting 415, user interface 400B is
displayed on the screen of the user device 102. The user interface
400B displays the company name 411, the job title 412, and the job
location 413. The user interface further displays a detailed job
description 430, job duties 435, and job qualifications 440. If the
user would like to apply for this job 412 after reviewing the job
description 430, job duties 435, and job qualifications 440, the
user can click on an Apply Now button 450 which will initiate a job
application process for the user.
[0037] In sub-display 460, the system displays on the user
interface other jobs that the user may be interested in. As noted
throughout this disclosure, these other jobs are jobs that have
been viewed by one or more other users who have also viewed the job
412 that the user has clicked on and for which the details are
being displayed to the user as a job description 430, job duties
435, and job qualifications 440. These other jobs are identified by
a company name 462 and a job title 464. The user can click on one
of these other jobs, and details of the other job will be displayed
to the user such as the job description 430, job duties 435, and
job qualifications 440. In an embodiment, when the user clicks on
one of these other jobs and the one of these other jobs are
displayed to the user, an additional list of others jobs 460 can be
displayed to the user (based on the other job selected by the
user).
[0038] FIGS. 5A, 5B, and 5C are a block diagram illustrating
features of a process and system to create a job browsing history
profile for a user and to use that job browsing history profile in
connection with recommending job postings to the user. FIGS. 5A,
5B, and 5C include a number of process blocks 505-580. Though
arranged serially in the example of FIGS. 5A, SB, and SC, other
examples may reorder the blocks, omit one or more blocks, and/or
execute two or more blocks in parallel using multiple processors or
a single processor organized as two or more virtual machines or
sub-processors. Moreover, still other examples can implement the
blocks as one or more specific interconnected hardware or
integrated circuit modules with related control and data signals
communicated between and through the modules. Thus, any process
flow is applicable to software, firmware, hardware, and hybrid
implementations.
[0039] Referring to FIG. 5, at 505, identifications and attributes
of job postings that have been viewed by a user in a job posting
service are stored in a database. Job postings are listings of job
positions that an employer is looking to fill. These postings are
normally posted in an online or web-based environment. The
identifications and attributes of the job postings can relate to,
for example, the company offering the job, a job title, education
required for the job, work experience required for the job, skills
required for the job, and salary information. As indicated at 506,
the user can be a user or member of a social networking service
and/or a business networking service. Additionally, the job posting
service can be an independent web-based job posting service, or the
job posting service can be affiliated with the social networking
service or the business networking service.
[0040] At 510, a job browsing history profile is created for the
user using the identifications and attributes of the posted jobs
that the user has viewed. The job browsing history profile provides
an overview of the types of jobs and the specific jobs that a user
has viewed. The job browsing history profile is created without
regard to any personal profile of the user. At 515, the job
browsing history profile is compared to job postings in the job
posting service. In an embodiment, these job postings in the job
posting service have not been viewed by the user. After this
comparison, at 520, a listing of job postings based on the
comparison is generated. As noted at 521, the listing of job
postings is generated when the attributes of the job postings in
the user's job browsing history profile are similar to attributes
of the job postings in the job posting service. As indicated at
522, the job postings that have not been viewed by the user could
be newly listed job postings in the job posting service.
Alternatively, the job postings that have not been viewed by the
user could be job postings that the user's searches have not yet
located, or job postings that the user has located but has not yet
viewed or clicked on. At 525, the listing of job postings is
displayed to the user. Consequently, as a result of the execution
of operations 510, 515, 520, and 525, ifa user's personal profile
indicates that the user has been a software developer for the
previous ten years, but the user's job browsing history profile
indicates that the user is viewing job postings that relate to
marketing positions, the comparison between the job browsing
history profile and the job postings will detect this interest in a
job type not reflective of the user's personal profile, and
marketing type job positions will be recommended to the user at the
current time and/or in the future.
[0041] At 530, the user selects a first job posting from the
listing of job postings, and at 531, a second listing of job
postings is displayed to the user. The second listing of job
postings includes job postings viewed by one or more other users
who have also viewed the first job posting. For example, if the
user views Job A in the job posting service, one or more other
users who have view Job A also have viewed Jobs B, C, and D in the
job posting service, and in an embodiment the user has not viewed
Jobs B. C, and D, then Jobs B, C, and D can be recommended to the
user. In an embodiment, other factors can be considered before Jobs
B, C, and D are recommended to the user, such as when the other
users viewed Jobs B. C, and D and how many other users have viewed
Jobs B, C, and D.
[0042] In an embodiment, the second listing of job postings is
created as follows. At 540, data relating to the one or more other
users' viewing of job postings in the job posting service are
stored in a database, and at 541, a plurality of data pairs is
created. The data pairs consist of a first element including the
first job posting and a second element including a second job
posting. At 542, the display of the second listing of job postings
to the user is based on data pairs that have as the first element
the first job posting selected by the user, and another job that
has not been viewed by the user (but which has been viewed by other
users who also viewed the first job posting). For example, if
another user views Jobs A, B, and C, the following job pairs will
be created--(A, B), (A, C), (B, A), (B, C), (C, A), and (C, B). In
an embodiment, "duplicate" pairs are removed, such as (B, A) in
light of (A, B). If the user views Job B, then the system checks
both the first and second elements of the set of data pairs, so
that the pair (A,B) will indicate that Job A should also be
recommended to the user (if the user has not already viewed Job A).
As noted, and as indicated at 543, both the first job posting and
the second job posting have been viewed by at least one other
user.
[0043] At 544, a date is recorded when job postings have been
viewed by one or more other users. At 545, jobs in the second
listing of job postings that have been viewed by the one or more
other users after a threshold date are displayed to the user. This
feature assures that only job postings that have recently been
viewed by others are displayed to the user, thereby imparting an
indication of a "fresh" interest in the job postings that are
displayed to the user.
[0044] At 546, a new job posting is added to the second listing of
job postings based on a comparison of attributes of a new job
posting to attributes of the job postings in the second listing of
job postings. This feature permits a new job posting to be
recommended to the user immediately upon its addition by the job
posting service. Similarly, and as indicated at 547, a data pair
including the first job posting and the new job posting is
generated when the attributes of the new job posting are similar to
attributes of the first job posting. For example, if a new job C is
added by the job posting service, and the new job C is similar to a
current job posting B, then if job posting B is recommended to the
user, then job posting C may be recommended to the user also. In an
embodiment, if there is a job pair (A, B), then a new job pair (A,
C) would be formed based on the similarities of job postings B and
C.
[0045] At 550, a plurality of job postings from a business
organization are aggregated into a single listing among the second
listing of job postings displayed to the user. This feature reduces
screen clutter and/or permits the display of job listings from more
business organizations. This feature can be particularly useful
when the job listings from the business organization are of the
same or similar job title or job function. A user can click on this
aggregated listing to view the job postings within the listing. In
another embodiment, the aggregation of the job listings for a
business organization are aggregated or categorized into different
titles, functions, sub-titles, and sub-functions. For example, the
job posting for a business organization may be aggregated into
marketing, finance, human resource, and software development
categories, and the software development category can further be
divided into communications, web development, and mobile areas.
[0046] At 555, a user can modify the job browsing history profile,
and at 556, the modified job browsing history profile is used in
connection with displaying to the user the second or recommended
listing of job postings. This feature permits a user to actively
affect the job postings that are recommended to the user. For
example, if the user has been searching for a particular type of
job over several weeks, and has not found anything to his or her
liking, then the user can decide that a different type of job
should be considered. The attributes of that different type of job
can be input into the job browsing history profile, and in a very
short time, job postings relating to that different type of job
will be recommended to the user based on the modified job browsing
profile history. Additionally, a user can delete his or her
browsing history or a portion of the browsing history. For example,
if a user was browsing job profiles just out of curiosity and not
in relation to a serious job search, the user can remove these
browsed jobs from the browsing history.
[0047] At 560, the system implements a term frequency-inverse
document frequency (tf-idf) protocol. This causes the system to
operate in a manner such that a frequently viewed job posting by
other users does not appear in the second listing of job postings
displayed to the user. One reason for implementing this feature may
be that the competition for a highly-viewed job posting may be
intense, and other less sought after jobs may be more attainable by
the user. In an embodiment, the user is permitted to turn this
feature on and off.
[0048] At 565, the second listing of job postings is regenerated on
a periodic basis. For example, a daily process may be executed in
the system that determines additional jobs that have been viewed by
one or more other users who have also viewed the job posting viewed
by the user. These additional job postings can then be recommended
to the user. Each of the new job postings would be included in a
new data pair with the other element of the data pair being the job
posting viewed by the user.
[0049] At 570, the system uses a click through rate or a view rate
when determining the job postings to include in the second listing
of job postings. For example, only job postings that one or more
other users have actually clicked on to examine in more detail may
be recommended to the user (as compared to job postings that have
only been presented to and viewed by the other users and not
clicked on). In another embodiment, both viewed and clicked on jobs
can be recommended to the user, but the clicked on job postings can
be ranked or weighted in a different fashion than job postings that
have just been viewed. Similarly, as indicated at 575, the system
can generate a preference value for the user for one or more job
postings in the second listing of job postings. This feature
permits a user to identify particular preferences for the jobs
recommended to him or her, such as a geographical preference. At
580, the system creates the job browsing history profile after a
number of job postings viewed by the user exceeds a threshold. This
feature prevents the system from generating a job browsing history
profile when there is too little data to generate a reliable
profile. For example, a user may initially view job postings
related to a particular type of job, but that may have been out of
a passing interest rather than a true desire to find a particular
type of job. In an embodiment, the system may be configured not to
create a job browsing history profile based on a passing
interest.
[0050] FIG. 6 is a block diagram illustrating components of a
machine 600, according to some example examples, able to read
instructions from a machine-readable medium (e.g., a
machine-readable storage medium) and perform any one or more of the
methodologies discussed herein. Specifically, FIG. 6 shows a
diagrammatic representation of the machine 600 in the example form
of a computer system and within which instructions 624 (e.g.,
software) for causing the machine 600 to perform any one or more of
the methodologies discussed herein may be executed. In alternative
examples, the machine 600 operates as a standalone device or may be
connected (e.g., networked) to other machines. In a networked
deployment, the machine 600 may operate in the capacity of a server
machine or a client machine in a server-client network environment,
or as a peer machine in a peer-to-peer (or distributed) network
environment. The machine 600 may be a server computer, a client
computer, a personal computer (PC), a tablet computer, a laptop
computer, a netbook, a set-top box (STB), a personal digital
assistant (PDA), a cellular telephone, a smartphone, a web
appliance, a network router, a network switch, a network bridge, or
any machine capable of executing the instructions 624, sequentially
or otherwise, that specify actions to be taken by that machine.
Further, while only a single machine is illustrated, the term
"machine" shall also be taken to include a collection of machines
that individually or jointly execute the instructions 624 to
perform any one or more of the methodologies discussed herein.
[0051] The machine 600 includes a processor 602 (e.g., a central
processing unit (CPU), a graphics processing unit (GPU), a digital
signal processor (DSP), an application specific integrated circuit
(ASIC), a radio-frequency integrated circuit (RFIC), or any
suitable combination thereof), a main memory 604, and a static
memory 606, which are configured to communicate with each other via
a bus 608. The machine 600 may further include a graphics display
610 (e.g., a plasma display panel (PDP), a light emitting diode
(LED) display, a liquid crystal display (LCD), a projector, or a
cathode ray tube (CRT)). The machine 600 may also include an
alphanumeric input device 612 (e.g., a keyboard), a cursor control
device 614 (e.g., a mouse, a touchpad, a trackball, a joystick, a
motion sensor, or other pointing instrument), a storage unit 616, a
signal generation device 618 (e.g., a speaker), and a network
interface device 620.
[0052] The storage unit 616 includes a machine-readable medium 622
on which is stored the instructions 624 (e.g., software) embodying
any one or more of the methodologies or functions described herein.
The instructions 624 may also reside, completely or at least
partially, within the main memory 604, within the processor 602
(e.g., within the processor's cache memory), or both, during
execution thereof by the machine 600. Accordingly, the main memory
604 and the processor 602 may be considered as machine-readable
media. The instructions 624 may be transmitted or received over a
network 626 via the network interface device 620.
[0053] As used herein, the term "memory" refers to a
machine-readable medium able to store data temporarily or
permanently and may be taken to include, but not be limited to,
random-access memory (RAM), read-only memory (ROM), buffer memory,
flash memory, and cache memory. While the machine-readable medium
622 is shown in an example to be a single medium, 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
instructions. 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., software) for execution
by a machine (e.g., machine 600), such that the instructions, when
executed by one or more processors of the machine (e.g., processor
602), cause the machine 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" shall accordingly be taken to include, but not be limited
to, one or more data repositories in the form of a solid-state
memory, an optical medium, a magnetic medium, or any suitable
combination thereof.
[0054] 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.
[0055] Certain embodiments are described herein as including logic
or a number of components, modules, or mechanisms. Modules may
constitute either software modules (e.g., code embodied on a
machine-readable medium or in a transmission signal) or hardware
modules. A "hardware module" is a tangible 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.
[0056] 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.
[0057] Accordingly, the phrase "hardware module" should be
understood to encompass a tangible entity, be that an entity that
is 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 may accordingly configure a processor, 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.
[0058] 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).
[0059] 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.
[0060] 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. 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 program interface (API)).
[0061] The performance of certain of the 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.
[0062] Some portions of this specification are 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). These 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.
[0063] 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.
* * * * *