Resume NER (DistilBERT, distilled)
The small version of biswas2200/resume-ner-bert-careeros: a
6-layer DistilBERT token classifier (66M parameters, 250 MB) that finds the
fields of a resume. It is about 40 % smaller than the BERT model and scores
3 points lower on DataTurks, and the same on unseen resumes.
It was distilled onto
distilbert/distilbert-base-cased
(commit 6ea8117) from a fine-tuned BERT teacher: the same recipe as
biswas2200/resume-ner-bert-careeros, after one label-quality round (dev F1 78.6 %). It shares the
teacher's cased vocabulary, so their tokenisation is identical.
Usage
from transformers import pipeline
ner = pipeline("token-classification", model="biswas2200/resume-ner-distilbert-careeros", aggregation_strategy="simple")
ner("Priya Sharma. Software Engineer at Tata Consultancy Services, Pune. Skills: Java, Spring Boot, Docker.")
Split long resumes into chunks under 512 tokens and run each chunk.
Labels
25 BIO labels over 12 entity types: Name, Email Address, Phone,
Location, Skills, Designation, Companies worked at, Degree,
College Name, Graduation Year, Years of Experience and UNKNOWN.
Results
Field macro F1, each cell F1 (precision / recall), on the same splits as
the teacher and the original yashpwr/resume-ner-bert.
| Field | yashpwr/resume-ner-bert |
Teacher | This model |
|---|---|---|---|
| Name | 97 % (99 / 94) | 97 % (99 / 94) | 97 % (99 / 95) |
| Degree | 69 % (78 / 62) | 81 % (81 / 81) | 79 % (86 / 73) |
| Institution | 73 % (92 / 61) | 77 % (85 / 71) | 70 % (84 / 61) |
| Graduation year | 73 % (87 / 64) | 87 % (91 / 84) | 83 % (92 / 76) |
| Job title | 79 % (81 / 76) | 86 % (95 / 80) | 86 % (92 / 80) |
| Company | 66 % (92 / 51) | 76 % (86 / 68) | 72 % (88 / 61) |
| Macro F1, DataTurks test (110 resumes) | 76 % | 84 % | 81 % |
| Macro F1, unseen LiveCareer (20 resumes) | 64 % | 90 % | 90 % |
Best entity F1 on the 5 % dev split: 77.8 % (train_summary.json, per
entity in dev_scores.json).
Training
- Data: 2,310 resumes: the teacher's 2,431 minus 121 (5 %) that a
label-quality classifier flagged as likely mislabelled.
- LiveCareer resumes (Kaggle
snehaanbhawal/resume-dataset, declared CC0) labelled withgemini-3.5-flash-lite. - 100 DataTurks resumes (Kaggle
dataturks/resume-entities-for-ner) with their human labels, skills re-labelled with Gemini.
- LiveCareer resumes (Kaggle
- Procedure: 5 epochs of distillation from the teacher's soft labels plus the gold labels, plain PyTorch, one L4 GPU (about 8 minutes).
- No resume text is published with the model.
Limitations
- Companies, locations and names are weaker than in the teacher; in a spot check it cut "Tata Motors" to "Motors". Use the teacher when accuracy matters more than size.
- Phone numbers are not learnt well; find them with a rule.
- The test sets are not pristine: the DataTurks key was corrected after seeing model outputs, and both sets have scored three rounds of experiments. Treat the numbers as indicative.
- English resumes only.
Intended use and licence
Research and non-commercial use: resume feedback for students and job-seekers, not automated hiring decisions.
The weights are released under Apache-2.0, like DistilBERT. Use stays non-commercial because the DataTurks dataset has no stated licence, the LiveCareer resumes were collected from livecareer.com, and the labels come from Gemini, whose terms (§17) restrict using its output to replace a Google model.
Attribution
Distilled onto distilbert/distilbert-base-cased
(Apache-2.0) from a fine-tune of
yashpwr/resume-ner-bert
(Apache-2.0). Trained by Amitosh Biswas for Smart Resume Analyzer.