Update README.md
Browse files
README.md
CHANGED
|
@@ -5,17 +5,23 @@ colorFrom: green
|
|
| 5 |
colorTo: red
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
# Job Description Skill Classifier [JobSelect v0.
|
| 11 |
|
| 12 |
[](https://www.python.org/)
|
| 13 |
[](https://pytorch.org/)
|
| 14 |
[](https://scikit-learn.org/)
|
| 15 |
[](https://numpy.org/)
|
| 16 |
[](https://pandas.pydata.org/)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
-
This project builds
|
| 19 |
|
| 20 |

|
| 21 |
|
|
@@ -76,6 +82,64 @@ It uses:
|
|
| 76 |
|
| 77 |
---
|
| 78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
## Requirements
|
| 80 |
|
| 81 |
See `requirements.txt` for the exact dependencies.
|
|
@@ -216,7 +280,20 @@ Run `api/JobAnalyze_API.py`. Requests must include:
|
|
| 216 |
|
| 217 |
---
|
| 218 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 219 |
## References / Inspiration
|
| 220 |
|
| 221 |
This repository follows a common pattern for multi-label NLP baselines:
|
| 222 |
-
TF-IDF features + a simple neural network + sigmoid-based multi-label outputs.
|
|
|
|
| 5 |
colorTo: red
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
license: mit
|
| 9 |
+
short_description: JobSelect CLI and JobAnalyze 6k model
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# Job Description Skill Classifier [JobSelect v0.12.0 & JobAnalyze 6k v1.0] (Multi-Label)
|
| 13 |
|
| 14 |
[](https://www.python.org/)
|
| 15 |
[](https://pytorch.org/)
|
| 16 |
[](https://scikit-learn.org/)
|
| 17 |
[](https://numpy.org/)
|
| 18 |
[](https://pandas.pydata.org/)
|
| 19 |
+
[](https://jobselect.vercel.app/)
|
| 20 |
+
[](https://huggingface.co/JobSelect/JobAnalyze_6k)
|
| 21 |
+
[](https://pypi.org/project/JobSelect/)
|
| 22 |
+
[](https://www.linkedin.com/in/akshay-babu-827b85370/)
|
| 23 |
|
| 24 |
+
This project builds
|
| 25 |
|
| 26 |

|
| 27 |
|
|
|
|
| 82 |
|
| 83 |
---
|
| 84 |
|
| 85 |
+
## Project structure
|
| 86 |
+
|
| 87 |
+
```text
|
| 88 |
+
.
|
| 89 |
+
ββ data/
|
| 90 |
+
β ββ raw/
|
| 91 |
+
β β ββ Job_descriptions.csv # Raw input dataset
|
| 92 |
+
β ββ sample_data/
|
| 93 |
+
β β ββ test.txt # Example JD, Role and Type for testing
|
| 94 |
+
β ββ clean/
|
| 95 |
+
β ββ cleaned_job_descriptions.csv # Cleaned master CSV
|
| 96 |
+
β ββ cleaned_job_descriptions_internships.csv
|
| 97 |
+
β ββ cleaned_job_descriptions_junior.csv
|
| 98 |
+
β ββ cleaned_job_descriptions_senior.csv
|
| 99 |
+
β
|
| 100 |
+
ββ model/
|
| 101 |
+
β ββ prep/
|
| 102 |
+
β β ββ data_prep.py # TF-IDF + multi-hot label creation + train/test split
|
| 103 |
+
β β ββ sym_map.py # Synonym/phrase normalization map used during prep
|
| 104 |
+
β β ββ vectorizer.pkl # Saved TF-IDF vectorizer (generated by data_prep)
|
| 105 |
+
β β ββ prepared_data.npz # Saved arrays (generated by data_prep)
|
| 106 |
+
β β ββ label_vocab.json # Skill label vocabulary (generated by data_prep)
|
| 107 |
+
β β
|
| 108 |
+
β ββ model.py # PyTorch multi-label classifier training
|
| 109 |
+
β ββ eval.py # Thresholded evaluation + F1 metrics + baseline comparison
|
| 110 |
+
β ββ pred.py # Predict top-k skills for new text
|
| 111 |
+
β
|
| 112 |
+
ββ model_out/
|
| 113 |
+
β ββ skill_classifier.pt # Trained model weights (generated by model.py)
|
| 114 |
+
β ββ training_history.json # Training loss history (generated by model.py)
|
| 115 |
+
β
|
| 116 |
+
ββ cli/
|
| 117 |
+
β ββ jobselect.py # Rich terminal CLI (prompts + prints top skills)
|
| 118 |
+
β ββ model_select.py # Inference routing: API-first, LOCAL fallback (key resolved lazily)
|
| 119 |
+
β ββ api_val.py # API key prompt / mode selection for CLI
|
| 120 |
+
|
| 121 |
+
β
|
| 122 |
+
ββ test/
|
| 123 |
+
β ββ test_model.py # Pytest checks expected artifacts exist in model_out/ and model/prep/
|
| 124 |
+
β
|
| 125 |
+
ββ notebooks/
|
| 126 |
+
β ββ 01_EDA.ipynb # Exploratory Data Analysis
|
| 127 |
+
β ββ 02_Data_Engineering.ipynb # Data engineering / cleaning notes
|
| 128 |
+
β
|
| 129 |
+
ββ api/
|
| 130 |
+
β ββ JobAnalyze_API.py # FastAPI service + Pydantic validation + API-key verification
|
| 131 |
+
β ββ pred.py # API/server-side prediction wrapper (imports model.pred)
|
| 132 |
+
β ββ supabase_client.py # Optional API key persistence (Supabase)
|
| 133 |
+
β
|
| 134 |
+
ββ pipeline.py # Executes notebooks + training/eval steps in order
|
| 135 |
+
ββ pyproject.toml # Installs as a cli tool (jobselect)
|
| 136 |
+
ββ requirements.txt
|
| 137 |
+
ββ README.md
|
| 138 |
+
|
| 139 |
+
```
|
| 140 |
+
|
| 141 |
+
---
|
| 142 |
+
|
| 143 |
## Requirements
|
| 144 |
|
| 145 |
See `requirements.txt` for the exact dependencies.
|
|
|
|
| 280 |
|
| 281 |
---
|
| 282 |
|
| 283 |
+
---
|
| 284 |
+
|
| 285 |
+
## Author
|
| 286 |
+
|
| 287 |
+
Developed with β€οΈ by **Akshay Babu**
|
| 288 |
+
|
| 289 |
+
[](https://www.linkedin.com/in/akshay-babu-827b85370/)
|
| 290 |
+
[](https://github.com/Ak47xdd)
|
| 291 |
+
|
| 292 |
+
For questions, feedback, or collaboration opportunities, feel free to reach out!
|
| 293 |
+
|
| 294 |
+
---
|
| 295 |
+
|
| 296 |
## References / Inspiration
|
| 297 |
|
| 298 |
This repository follows a common pattern for multi-label NLP baselines:
|
| 299 |
+
TF-IDF features + a simple neural network + sigmoid-based multi-label outputs.
|