How to build a model which will result in better recommendation of resumes based on the job description given?

I am familiar with bow or tfidf (n-grams) approach and then take a cosine similarity but I'm looking for a deep learning approach. I don't have any labelled data to evaluate.

Anything suggestions will be really appreciated.


If you want a DL approach, I recommend substituting the tf-idf by some kind of word embeddings.

For instance, you can take a pre-trained word embedding model, like glove, and average its outputs both in resume and job description, and then compute cosine similarity. However, I recommend to use a contextual word embedding (BERT-like), as the terms in resumes might be very dependent on the context.

The following article also introduces sentence-bert, which I think is very suited for your problem.

| improve this answer | |
  • $\begingroup$ Thank you for answering. So I've tried the DL approach .. first I've parsed the entire text from resume and concatenated it into a large string. The problem here is that it contains almost 2000-3000 words (i.., remove stopwords, punctuations, used verbs and noun words etc.,,) for some long resumes and If we take let's a 300 dim vector to represent the entire sequence it's not giving good sentence vector because it's too many words and if we consider averaging it out we are loosing a lot of information. That's why I'm stuck. Any suggestions for this problem? $\endgroup$ – user_12 Jun 29 at 9:21
  • $\begingroup$ Maybe you can split it into individual sentences, transform the sentences into a vector, and compute the embedding for each sentence. Then compute cosine similarity from each sentence to the job description and average cosine similarities of each sentence. Maybe you can also try considering unique words to reduce the number of words. $\endgroup$ – David Masip Jun 29 at 9:27
  • $\begingroup$ Ok. So splitting it into individual sentences required us to choose a hyperparameter here right? like let's say 200 words or so in each sentence? I haven't considered the option to choose unique words (but if I do this won't I lose information about the context here when I use context based models like bert)? $\endgroup$ – user_12 Jun 29 at 9:31
  • 1
    $\begingroup$ well you can do it like 200 words or you can split every time you encounter a special character like ., : or \n. You're right, the unique words doesn't work with contextual embeddings $\endgroup$ – David Masip Jun 29 at 9:40
  • $\begingroup$ Thank you for helping out. $\endgroup$ – user_12 Jun 29 at 10:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.