A Machine Learning Based Resume Matcher, to compare Resumes with Job Descriptions. Create a score based on how good/similar a resume is to the particular Job Description.\n Documents are sorted based on Their TF-IDF Scores (Term Frequency-Inverse Document Frequency)
Check the live version here. The instance might sleep if not used in a long time, so in such cases drop me a mail or fork this repo and launch your own instance at Streamlit's Cloud Instance
Matching Algorihms used are :-
-
String Matching
- Monge Elkan
-
Token Based
- Jaccard
- Cosine
- Sorensen-Dice
- Overlap Coefficient
Topic Modelling of Resumes is done to provide additional information about the resumes and what clusters/topics, the belong to. For this :-
- TF-IDF of resumes is done to improve the sentence similarities. As it helps reduce the redundant terms and brings out the important ones.
- id2word, and doc2word algorithms are used on the Documents (from Gensim Library).
- LDA (Latent Dirichlet Allocation) is done to extract the Topics from the Document set.(In this case Resumes)
- Additional Plots are done to gain more insights about the document.
- Input is Resumes and Job Description, the current code is capable to compare resumes to multiple job descriptions.
- Job Description and Resumes are parsed with the help of Tesseract Library in python, and then is converted into two CSV files.Namely
Resume_Data.csv
andJob_Data.csv
. - While doing the reading, the python script named fileReader.py reads, and cleans the code and does the TF-IDF based filtering as well. (This might take sometime to process, so please be patient while executing the script.)
- For any further comparisons the prepared CSV files are used.
- app.py containg the code for running the streamlit server and allowing to perform tasks. Use
streamlit run app.py
to execute the script.
The Data folder contains two folders that are used to read and provide data from.
Incase of allowing the option to upload documents, Data\Resumes
and Data\JobDesc
should be the target for Resumes and Job Description respectively.
Due the flexibility of Textract we need not to provide the type of document it needs to scan, it does so automatically.
But for the Job Description it needs to be in Docx format, it can be changed as well.
A python virtual environment is required for this. Please read this page for more information.
A pip requirements.txt file is provided. It is advised to install the packages listed below, manually by doing pip install <package_name>
.
As the requirements.txt file may have some unecessary additional dependencies.
Popular Packages used are:-
- Spacy
- Plotly
- Streamlit
- Gensim
- Scikit Learn
- Pandas
- Wordcloud
- Matplotlib
- Numpy
- Scipy
- NLTK
- Textract
- Textdistance
Furthermore the packages like NLTK and Spacy requires additional data to be downloaded. After installing them please perform:-
## For Spacy's English Package
python -m spacy download en_core_web_sm
## For NLTK Data
import nltk
nltk.download('popular') # this downloads the popular packages from NLTK_DATA
Please check the How To file for execution instructions.