Giter VIP home page Giter VIP logo

naive-resume-matching's Introduction

Naive-Resume-Matcher


v2.0 coming soon Work in Progress


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 :-

  1. TF-IDF of resumes is done to improve the sentence similarities. As it helps reduce the redundant terms and brings out the important ones.
  2. id2word, and doc2word algorithms are used on the Documents (from Gensim Library).
  3. LDA (Latent Dirichlet Allocation) is done to extract the Topics from the Document set.(In this case Resumes)
  4. Additional Plots are done to gain more insights about the document.

Images

  1. List of Job Descriptions to Choose from. List of Job Descriptions to choose from

  2. Preview of your Chosen Job Description The Job Description

  3. Your Resumes are ranked now! Check the top Ones!! Ranked Resumes as per Job Description

  4. Score distribution of different candidates incase you want to check some more. Score distribution of different candidates

  5. Topic Disctribution of Various Resumes Topic Disctribution of Various Resumes

  6. Topic Distribution Sunburst Chart Topic Distribution Sunburst Chart

  7. Word Cloud of your resume for a quick glance! Word Cloud of your resume for a quick glance!

Preview

Working Video

Progress Flow

  1. Input is Resumes and Job Description, the current code is capable to compare resumes to multiple job descriptions.
  2. 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.csvandJob_Data.csv.
  3. 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.)
  4. For any further comparisons the prepared CSV files are used.
  5. app.py containg the code for running the streamlit server and allowing to perform tasks. Use streamlit run app.py to execute the script.

File Structure

Data > Resumes and > JobDescription

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.

Installation Instructions

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:-

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

Execution Instructions

Please check the How To file for execution instructions.

naive-resume-matching's People

Contributors

dependabot[bot] avatar srbhr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.