akshaybabu06 commited on
Commit
03a9f3d
Β·
verified Β·
1 Parent(s): 7aeed88

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +80 -3
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.6 & JobAnalyze 6k v1.0] (Multi-Label)
11
 
12
  [![Python](https://img.shields.io/badge/Python-3.8+-3776AB?style=flat&logo=python)](https://www.python.org/)
13
  [![PyTorch](https://img.shields.io/badge/PyTorch-2.12.1-%23EE4C2C?style=flat&logo=pytorch)](https://pytorch.org/)
14
  [![scikit-learn](https://img.shields.io/badge/scikit--learn-1.9.0-F7931E?style=flat&logo=scikit-learn)](https://scikit-learn.org/)
15
  [![NumPy](https://img.shields.io/badge/NumPy-2.4.6-013243?style=flat&logo=numpy)](https://numpy.org/)
16
  [![Pandas](https://img.shields.io/badge/Pandas-3.0.3-150458?style=flat&logo=pandas)](https://pandas.pydata.org/)
 
 
 
 
17
 
18
- This project builds a lightweight text classification pipeline that predicts **multiple technical skills** from a job posting. Given a job description (optionally augmented with role and job type), the model outputs a ranked list of likely skills.
19
 
20
  ![JobSelect CLI](./frontend/repo/title_page_jobselect.png)
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
  [![Python](https://img.shields.io/badge/Python-3.8+-3776AB?style=flat&logo=python)](https://www.python.org/)
15
  [![PyTorch](https://img.shields.io/badge/PyTorch-2.12.1-%23EE4C2C?style=flat&logo=pytorch)](https://pytorch.org/)
16
  [![scikit-learn](https://img.shields.io/badge/scikit--learn-1.9.0-F7931E?style=flat&logo=scikit-learn)](https://scikit-learn.org/)
17
  [![NumPy](https://img.shields.io/badge/NumPy-2.4.6-013243?style=flat&logo=numpy)](https://numpy.org/)
18
  [![Pandas](https://img.shields.io/badge/Pandas-3.0.3-150458?style=flat&logo=pandas)](https://pandas.pydata.org/)
19
+ [![Website](https://img.shields.io/badge/jobselect-website-8A2BE2?style=flat&logo=globe)](https://jobselect.vercel.app/)
20
+ [![Hugging Face](https://img.shields.io/badge/%F0%9F%A4%97-Hugging%20Face%20Model-FFD21E?style=flat)](https://huggingface.co/JobSelect/JobAnalyze_6k)
21
+ [![PyPI](https://img.shields.io/badge/PyPI-JobSelect-006DAD?style=flat&logo=pypi)](https://pypi.org/project/JobSelect/)
22
+ [![LinkedIn](https://img.shields.io/badge/LinkedIn-Akshay%20Babu-0A66C2?style=flat&logo=linkedin)](https://www.linkedin.com/in/akshay-babu-827b85370/)
23
 
24
+ This project builds
25
 
26
  ![JobSelect CLI](./frontend/repo/title_page_jobselect.png)
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
+ [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-0A66C2?style=flat&logo=linkedin)](https://www.linkedin.com/in/akshay-babu-827b85370/)
290
+ [![GitHub](https://img.shields.io/badge/GitHub-Follow-181717?style=flat&logo=github)](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.