开发者

Resumee matching algorithm

I am building a job site -- yes, there isn't enough开发者_运维技巧 of those yet. One of the problems I came across in my research is how to match the relevant resumes to the interested recruiters. The most boring solution I thought of is to use textual analysis to parse the resumes for tags recruiters specify -- which has a drawback: the resume might be packed with hidden keywords or buzzwords. Then it's interesting to figure out how to get around that. What would be a more interesting way of solving this problem? (Maybe some kind of machine learning algorithm? Then you have to train this beast, too.)

So I don't know how I'll do it yet. I'd welcome any suggestions you could offer.


Don't allow the candidates to write plain resume. Instead, create a form with various fields (degrees obtained (which institutions?), expected salary, experience/skill level in specific technology, job type (contractual, permanent), distance of job from specific address etc.). Similarly, create form with various relevant fields for employers. Create these forms in such a way that matching of one form against another is possible. Leave as many fields as possible non-mandatory. Then employ an algorithm that is most relevant to match these forms. There should be two such algorithms: one with which candidate can search job, with another employers can search candidates.


Parse the free-text résumé into words. Remove stopwords (and, or but, the, etc). Store the remaining words in a database with the résumé.

You need, initially, a subject matter expert who will rate CVs against recruiters' requests. The expert will give a score, say 0-100 on how well each CV matches a given request. Once this process is boot-strapped, you can use one of the classic matching algorithms to select CVs which seem close to those that were well-rated by the experts.

Probably start with the simple N nearest Neighbours and move on to fancier ones like Principal Component Analysis or Singular Value Decomposition later on.

You can find extensive discussions and code to implement these algorithms on the Netflix Prize Forum


The key is to not worry about matching and instead perfect sorting. That was the key to google -- anyone could find 1,000,000 hits -- they figured out the top one.

Frankly, if I type Java, I really expect (want) the resume to have Java in it -- how do you find me the best candidate though?


The candidate can be asked to enter the data in fields, but the problem is he might use similars word to the word of interest that might be missed like for HTML, he might enter HyperTextMarkupLanguage. So the system must be such that it learns from unidentifiable jargons, this can be accomplished by using a synonym of words to words of interest. Like say I wanna get a candidate who knows scripting language instead of searching 'scripting language' I can get the synonyms like perl,python,ruby for it and use it to compare fields.But this requires you entering data in each time a new scripting language comes up.

If you hate entering data into system, you can query the Web say Wikipedia to find what kinda language 'Perl' is and parse it.This makes system adaptable even to new technologies, as we all know technology keeps evolving so this can be useful.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜