A machine-learning project that automates resume screening: it cleans raw resume text, converts it to TF-IDF features, and classifies each resume into one of 25 job categories β turning hours of manual sorting into seconds.
- Load
resume_dataset.csv(resume text + job category). - Explore the data β category counts, a count-plot, and a category-distribution pie chart.
- Clean each resume with a regex function (
cleanResume) that strips URLs, mentions, hashtags,RT/cc, punctuation, and non-ASCII characters. - Analyze text with NLTK β stop-word removal,
word_tokenize, aFreqDistof the 50 most common words, and a word cloud. - Encode the
Categorytarget withLabelEncoder. - Vectorize the cleaned text with TF-IDF (
TfidfVectorizer,sublinear_tf=True, English stop-words,max_features=1500). - Split 80/20 (
random_state=0) and train aOneVsRestClassifier(KNeighborsClassifier()). - Evaluate with accuracy scores and a classification report.
| Metric | Score |
|---|---|
| Training accuracy | 0.84 |
| Test accuracy | 0.82 |
Evaluated with scikit-learn's classification_report (precision / recall / F1 per category).
Python Β· scikit-learn (TfidfVectorizer, OneVsRestClassifier, KNeighborsClassifier, LabelEncoder, train_test_split) Β· NLTK Β· wordcloud Β· pandas Β· NumPy Β· matplotlib Β· seaborn Β· re (regex) Β· Jupyter Notebook
Resume-Screening/
βββ Resume_Screening.ipynb # Full NLP + classification notebook
βββ resume_dataset.csv # Resumes labelled by job category (25 classes)
βββ requirements.txt
βββ SETUP_GUIDE.md
βββ setup.bat / setup.sh # Environment setup scripts
βββ settings.json
pip install -r requirements.txt
jupyter notebook Resume_Screening.ipynbFirst run downloads the required NLTK corpora:
import nltk
nltk.download('stopwords')
nltk.download('punkt')Dependencies:
numpy,pandas,matplotlib,seaborn,scipy,scikit-learn,nltk,wordcloud,jupyter,ipykernel.
MIT