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