A simple resume and job description parser used for extracting information from resumes and job descriptions.
It also allows you to compare a set of resumes with a job description.
Built with ❤️ by Justice Arthur and inspired by Omkar Pathak
- Extract name from resumes
- Extract email from resumes
- Extract mobile numbers from resumes
- Extract skills from resumes
- Extract total experience from resumes
- Extract college name from resumes
- Extract degree from resumes
- Extract designation from resumes
- Extract company names from resumes
- Extract skills from job descriptions
- Extract experience level from job descriptions
- Match resumes with job descriptions and see ranking for scores
- You can install this package using
pip install pydparser
- For NLP operations we use spacy and nltk. Install them using below commands:
# spaCy
python -m spacy download en_core_web_sm
# nltk
python -m nltk.downloader words
python -m nltk.downloader stopwords
- PDF and DOCx files are supported on all Operating Systems
- If you want to extract DOC files you can install textract for your OS (Linux, MacOS)
- Note: You just have to install textract (and nothing else) and doc files will get parsed easily
- Import it in your Python project
from pydparser import ResumeParser
data = ResumeParser('/path/to/resume/file').get_extracted_data()
from pydparser import JdParser
data = JdParser('/path/to/jd/file').get_extracted_data()
from pydparser import MatchingEngine
matcher = MatchingEngine(
'/path/to/jd/file',
[
'/path/to/resume1/file',
'/path/to/resume2/file',
'/path/to/resume3/file',
]
)
# simple matcher
res = matcher.simple_intersection_score()
# similarity score with tfidf vectorizer
res = matcher.cosine_similarity_with_tfidf()
# similarity score with jaccard similarity
res = matcher.jaccard_similarity_score()
For running the resume extractor you can also use the cli
provided
usage: pydparser [-h] [-f FILE] [-d DIRECTORY] [-r REMOTEFILE]
[-re CUSTOM_REGEX] [-sf SKILLSFILE] [-e EXPORT_FORMAT]
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE resume file to be extracted
-d DIRECTORY, --directory DIRECTORY
directory containing all the resumes to be extracted
-r REMOTEFILE, --remotefile REMOTEFILE
remote path for resume file to be extracted
-re CUSTOM_REGEX, --custom-regex CUSTOM_REGEX
custom regex for parsing mobile numbers
-sf SKILLSFILE, --skillsfile SKILLSFILE
custom skills CSV file against which skills are
searched for
-e EXPORT_FORMAT, --export-format EXPORT_FORMAT
the information export format (json)
- If you are running the app on windows, then you can only extract .docs and .pdf files
The module would return a list of dictionary objects with result as follows:
[
{
'college_name': ['Marathwada Mitra Mandal’s College of Engineering'],
'company_names': None,
'degree': ['B.E. IN COMPUTER ENGINEERING'],
'designation': ['Manager',
'TECHNICAL CONTENT WRITER',
'DATA ENGINEER'],
'email': '[email protected]',
'mobile_number': '8087996634',
'name': 'Omkar Pathak',
'no_of_pages': 3,
'skills': ['Operating systems',
'Linux',
'Github',
'Testing',
'Content',
'Automation',
'Python',
'Css',
'Website',
'Django',
'Opencv',
'Programming',
'C',
...],
'total_experience': 1.83
}
]
[{'all_skills': [
'building a connected and superior experience for patients',
'PHP',
'Laravel',
'Object - Oriented Programming',
'to mentor and coach',
'contributing to the implementation of',
'mobile experience',
'healthcare platform',
'features',
'contribute to architectural decisions',
'on product excellence',
'building robust',
'PHP',
'Laravel',
'humility',
'celebrating bold thinking',
'HSA',
],
'domain': ['health', 'Public Sector', 'health service', 'mental health'],
'experience': '5 years',
'occupation': 'Senior Software Engineer',
'skills': ['Mobile',
'Budget',
'Technical',
'Distribution',
'Expenses',
'Automation',
'Api',
'Design',
'Health',
'Architectures',
'System',
'Access',
'Communication',
'Programming',
'Php',
'Healthcare',
'Testing',
'Ansible',
'Phpunit']}]
-
Some of the core concepts behind the algorithm have been taken from https://github.com/divapriya/Language_Processing which has been summed up in this blog https://medium.com/@divalicious.priya/information-extraction-from-cv-acec216c3f48. Thanks to Priya for sharing this concept
-
https://www.kaggle.com/nirant/hitchhiker-s-guide-to-nlp-in-spacy
-
Special thanks to dataturks for their annotated dataset
-
Special thanks to jjzha for their tagged dataset which was a research by
@inproceedings{green-etal-2022-development,
title = "Development of a Benchmark Corpus to Support Entity Recognition in Job Descriptions",
author = "Green, Thomas and
Maynard, Diana and
Lin, Chenghua",
booktitle = "Proceedings of the Thirteenth Language Resources and Evaluation Conference",
month = jun,
year = "2022",
address = "Marseille, France",
publisher = "European Language Resources Association",
url = "https://aclanthology.org/2022.lrec-1.128",
pages = "1201--1208",
}
If you find this useful you don't hesitate to leave a start a something small. This encourage us to spend the Christmas creating this 😄.
PayPal |
---|