I am trying to extract a skill set of an employee from his/her resume. I have resumes stored as plain text in Database. I do not have predefined skills in this case. How should I approach this problem?

I can think of two ways:

  1. Using unsupervised approach as I do not have predefined skillset with me. I will extract the skills from the resume using topic modelling but if I'm not wrong Topic Modelling uses BOW approach which may not be useful in this case as those skills will appear hardly one or two times. (I would appreciate if you enlighten me more about topic modelling).

  2. Another approach is manually labeling the skills for resume and making it supervised learning problem. But I have around 500 resumes, manual labeling will be very tedious and very time consuming.

Any suggestions are welcome.


  • $\begingroup$ I have been working on the same from past a month. I have a predefined sheet of skills and using a search base to extract that particular skill if its present in the resume. I dont know if this solution is right, but I started of with it. Can we collaborate and take this forward ? $\endgroup$
    – pylearner
    Commented Sep 25, 2018 at 14:03
  • $\begingroup$ We can share our view and opinions. I am almost done with my project but I see there are lots of area when I can improve and will glad to help you if you stuck at anywhere. Let's not spam a comment section and talk into chat room. $\endgroup$
    – Sociopath
    Commented Sep 26, 2018 at 4:59
  • $\begingroup$ Hey I just dropped you a message in the room $\endgroup$
    – pylearner
    Commented Oct 5, 2018 at 6:08

1 Answer 1


I'm not sure Topic Modelling will help you here, as it tries to extract abstract topics from text. I'm afraid resumes might be too 'dry' for it to work nicely.

Here are a few sources I found that might be helpful:

  • A resume parser
  • The reply to this post, that gives you some text mining basics (how to deal with text data, what operations to perform on it, etc, as you said you had no prior experience with that)
  • This paper on skills extraction, I haven't read it, but it could give you some ideas

For some personal suggestions :

I'm going to make the assumption you don't want to label those resumes by hand, and will try to explain how I would proceed first. It might not be the best solution, as there's a lot of heuristics in it, but it's a beginning that's mostly aimed at studying your data and gain some insight on it.

  • You could see if the structure of the document helps: the skills you're looking for might often be appearing in a section with a specific title.

  • You could also work with gazeteers, which are lists of key words of interest, and combine these with colloquations (groups of words frequently appearing together). If, for example, you have a keyword appearing in your gazeteer, you could use ngrams to see what words appear around it the most, and turn your single word match into a multiple word skill (e.g : machine learning (2grams), natural language processing (3grams), etc)

  • Once you have an interesting list of keywords, you could move to ML and try word vectors, maybe use word2vec, and build vectors around your word of interests. If new skills come in, their vectors might be similar to the ones you have defined (sorry for being a bit unclear here, I only have a vague knowledge of how word2vecs work).

This is no silver bullet solution, but this should get you started.

Good luck !

  • 1
    $\begingroup$ You are right!!! After digging into deep I realize topic modelling is not suitable for this. I will looking into some external links provided by you. Thanks for your suggestions :-) $\endgroup$
    – Sociopath
    Commented Aug 4, 2018 at 10:22

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