Data normalisation and recommendation based on skillset Given the job title return the skillset required for the job 
If a user is lacking some skills required for the job, we have to suggest the courses the user has to take to bridge the gap.


Problem with 1) is:

1) The provider is returning the skillset only if the keyword(tile of the job) is exact. For instance: For "Accountant" it gives the skillset whereas for "Accounting" it didn't give any result. One another example is: It gives result for "Developer" not for "Software Engineer" or "Software Developer"

Does NLP or machine learning solves this issue? If yes, can you give some recommendation on how this problem could be approached.

For 2): What is the way to handle recommendations?
Root words

The problem here is that language has many different ways of distorting words to give slightly more information without changing the root of the word. Your database which contains the needed courses for a specific profession should ideally be tokenized into a numerical value. Or if that is not possible you can get the stem of a word as follows

from nltk.stem.snowball import SnowballStemmer
stemmer = SnowballStemmer("english")
print(stemmer.stem("Accountant"))
print(stemmer.stem("Accounting"))



  account account


Recommendations

There's a lot of resources on how to do this, especially using deep learning in recen tyears. You can look at some of the publications from Netflix, Amazon, SoundCloud. All these groups have very powerful recommendation systems. In essence what you want to do is determine some user metrics such as click through sequence, search history. Then build a database with these features and a target such as the next item that is played. From this you can train your model to predict a set of items the user is likely to click on next given his feature set.