Joshuant commited on
Commit
4a4ba56
·
verified ·
1 Parent(s): 3809b3b

Upload Resume NER model

Browse files
README.md ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ datasets:
3
+ - dataturks/resume-entities-for-ner
4
+ language:
5
+ - en
6
+ license: apache-2.0
7
+ metrics:
8
+ - f1
9
+ - precision
10
+ - recall
11
+ model-index:
12
+ - name: resume-ner-distilbert
13
+ results:
14
+ - dataset:
15
+ name: Resume NER
16
+ type: dataturks/resume-entities-for-ner
17
+ metrics:
18
+ - name: F1
19
+ type: f1
20
+ value: 0.211
21
+ - name: Precision
22
+ type: precision
23
+ value: 0.2189
24
+ - name: Recall
25
+ type: recall
26
+ value: 0.2037
27
+ task:
28
+ name: Named Entity Recognition
29
+ type: token-classification
30
+ pipeline_tag: token-classification
31
+ tags:
32
+ - ner
33
+ - token-classification
34
+ - resume
35
+ - nlp
36
+ - transformers
37
+ - lora
38
+ ---
39
+
40
+ # Resume Ner Distilbert
41
+
42
+ ## Model Description
43
+
44
+ This is a fine-tuned Named Entity Recognition (NER) model for extracting structured information from resumes.
45
+ The model is trained using **Fine-tuning with LoRA** on a distilbert-base-uncased backbone.
46
+
47
+ ### Supported Entity Types
48
+
49
+ | Entity Type | Description | Example |
50
+ |-------------|-------------|---------|
51
+ | NAME | Person's name | "John Doe" |
52
+ | EMAIL | Email address | "john@example.com" |
53
+ | PHONE | Phone number | "+1 555-123-4567" |
54
+ | LOCATION | Geographic location | "San Francisco, CA" |
55
+ | ORG | Organization/Company | "Google Inc." |
56
+ | TITLE | Job title | "Senior Software Engineer" |
57
+ | DEGREE | Academic degree | "Bachelor of Science in Computer Science" |
58
+ | SKILL | Technical or soft skill | "Python", "Machine Learning" |
59
+ | CERT | Certification | "AWS Solutions Architect" |
60
+ | DATE | Date or time period | "2020-2023", "January 2022" |
61
+
62
+ ## Training Details
63
+
64
+ ### Training Data
65
+ - **Dataset**: Dataturks Resume Entities for NER
66
+ - **Source**: [Kaggle](https://www.kaggle.com/datasets/dataturks/resume-entities-for-ner)
67
+ - **Training Examples**: N/A
68
+ - **Validation Examples**: N/A
69
+
70
+ ### Training Configuration
71
+ - **Base Model**: distilbert-base-uncased
72
+ - **Training Method**: Fine-tuning with LoRA
73
+ - **Epochs**: 10
74
+ - **Learning Rate**: 3e-05
75
+ - **Batch Size**: 8
76
+ - **Max Sequence Length**: 512
77
+ - **Random Seed**: 42
78
+
79
+ ### Performance Metrics
80
+
81
+ | Metric | Validation Set |
82
+ |--------|----------------|
83
+ | Precision | 0.2189 |
84
+ | Recall | 0.2037 |
85
+ | F1-Score | 0.2110 |
86
+
87
+ ## Usage
88
+
89
+ ### Using Transformers Pipeline
90
+
91
+ ```python
92
+ from transformers import pipeline
93
+
94
+ # Load the model
95
+ ner = pipeline("ner", model="Joshuant/resume-ner-distilbert", aggregation_strategy="simple")
96
+
97
+ # Extract entities from resume text
98
+ text = """
99
+ John Doe
100
+ Email: john.doe@email.com
101
+ Phone: +1 555-123-4567
102
+
103
+ EDUCATION
104
+ Bachelor of Science in Computer Science, MIT, 2020
105
+
106
+ EXPERIENCE
107
+ Senior Software Engineer at Google, 2020-2023
108
+ - Developed ML pipelines using Python and TensorFlow
109
+ """
110
+
111
+ entities = ner(text)
112
+ for entity in entities:
113
+ print(f"{entity['entity_group']}: {entity['word']} (score: {entity['score']:.3f})")
114
+ ```
115
+
116
+ ### Using AutoModel
117
+
118
+ ```python
119
+ from transformers import AutoTokenizer, AutoModelForTokenClassification
120
+ import torch
121
+
122
+ # Load model and tokenizer
123
+ tokenizer = AutoTokenizer.from_pretrained("Joshuant/resume-ner-distilbert")
124
+ model = AutoModelForTokenClassification.from_pretrained("Joshuant/resume-ner-distilbert")
125
+
126
+ # Tokenize input
127
+ text = "John Doe, Senior Software Engineer at Google"
128
+ inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512)
129
+
130
+ # Run inference
131
+ with torch.no_grad():
132
+ outputs = model(**inputs)
133
+ predictions = torch.argmax(outputs.logits, dim=-1)
134
+
135
+ # Decode predictions
136
+ tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
137
+ labels = [model.config.id2label[p.item()] for p in predictions[0]]
138
+
139
+ for token, label in zip(tokens, labels):
140
+ if label != "O":
141
+ print(f"{token}: {label}")
142
+ ```
143
+
144
+ ## Limitations
145
+
146
+ - The model is primarily trained on English resumes and may not perform well on other languages
147
+ - Performance may vary based on resume formatting and structure
148
+ - The model may struggle with unusual entity formats or domain-specific terminology
149
+
150
+ ## Citation
151
+
152
+ If you use this model in your research, please cite:
153
+
154
+ ```bibtex
155
+ @misc{resume_ner_slm_2026,
156
+ title={Context-Aware Resume NER with Small Language Models},
157
+ author={Research Team},
158
+ year={2026},
159
+ howpublished={\url{https://huggingface.co/Joshuant/resume-ner-distilbert}}
160
+ }
161
+ ```
162
+
163
+ ## License
164
+
165
+ This model is released under the apache-2.0 license.
166
+
167
+ ## Acknowledgments
168
+
169
+ - Dataturks for the original Resume NER dataset
170
+ - Hugging Face for the transformers library and model hosting
171
+ - The open-source NLP community
172
+
173
+ ---
174
+
175
+ *Model trained on 2026-01-08*
adapter_config.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alora_invocation_tokens": null,
3
+ "alpha_pattern": {},
4
+ "arrow_config": null,
5
+ "auto_mapping": null,
6
+ "base_model_name_or_path": "distilbert-base-uncased",
7
+ "bias": "none",
8
+ "corda_config": null,
9
+ "ensure_weight_tying": false,
10
+ "eva_config": null,
11
+ "exclude_modules": null,
12
+ "fan_in_fan_out": false,
13
+ "inference_mode": true,
14
+ "init_lora_weights": true,
15
+ "layer_replication": null,
16
+ "layers_pattern": null,
17
+ "layers_to_transform": null,
18
+ "loftq_config": {},
19
+ "lora_alpha": 16,
20
+ "lora_bias": false,
21
+ "lora_dropout": 0.1,
22
+ "megatron_config": null,
23
+ "megatron_core": "megatron.core",
24
+ "modules_to_save": [
25
+ "classifier",
26
+ "score"
27
+ ],
28
+ "peft_type": "LORA",
29
+ "peft_version": "0.18.0",
30
+ "qalora_group_size": 16,
31
+ "r": 8,
32
+ "rank_pattern": {},
33
+ "revision": null,
34
+ "target_modules": [
35
+ "q_lin",
36
+ "v_lin"
37
+ ],
38
+ "target_parameters": null,
39
+ "task_type": "TOKEN_CLS",
40
+ "trainable_token_indices": null,
41
+ "use_dora": false,
42
+ "use_qalora": false,
43
+ "use_rslora": false
44
+ }
adapter_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7a35dce7963415c693a4f9be32a5687834eef4d3c90c3ac013a77d8c7012c525
3
+ size 664228
config.json ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "activation": "gelu",
3
+ "architectures": [
4
+ "DistilBertForTokenClassification"
5
+ ],
6
+ "attention_dropout": 0.1,
7
+ "dim": 768,
8
+ "dropout": 0.1,
9
+ "dtype": "float32",
10
+ "hidden_dim": 3072,
11
+ "id2label": {
12
+ "0": "O",
13
+ "1": "B-Name",
14
+ "2": "I-Name",
15
+ "3": "B-Email Address",
16
+ "4": "I-Email Address",
17
+ "5": "B-Location",
18
+ "6": "I-Location",
19
+ "7": "B-Designation",
20
+ "8": "I-Designation",
21
+ "9": "B-Companies worked at",
22
+ "10": "I-Companies worked at",
23
+ "11": "B-College Name",
24
+ "12": "I-College Name",
25
+ "13": "B-Degree",
26
+ "14": "I-Degree",
27
+ "15": "B-Graduation Year",
28
+ "16": "I-Graduation Year",
29
+ "17": "B-Skills",
30
+ "18": "I-Skills",
31
+ "19": "B-Years of Experience",
32
+ "20": "I-Years of Experience",
33
+ "21": "B-UNKNOWN",
34
+ "22": "I-UNKNOWN"
35
+ },
36
+ "initializer_range": 0.02,
37
+ "label2id": {
38
+ "B-College Name": 11,
39
+ "B-Companies worked at": 9,
40
+ "B-Degree": 13,
41
+ "B-Designation": 7,
42
+ "B-Email Address": 3,
43
+ "B-Graduation Year": 15,
44
+ "B-Location": 5,
45
+ "B-Name": 1,
46
+ "B-Skills": 17,
47
+ "B-UNKNOWN": 21,
48
+ "B-Years of Experience": 19,
49
+ "I-College Name": 12,
50
+ "I-Companies worked at": 10,
51
+ "I-Degree": 14,
52
+ "I-Designation": 8,
53
+ "I-Email Address": 4,
54
+ "I-Graduation Year": 16,
55
+ "I-Location": 6,
56
+ "I-Name": 2,
57
+ "I-Skills": 18,
58
+ "I-UNKNOWN": 22,
59
+ "I-Years of Experience": 20,
60
+ "O": 0
61
+ },
62
+ "max_position_embeddings": 512,
63
+ "model_type": "distilbert",
64
+ "n_heads": 12,
65
+ "n_layers": 6,
66
+ "pad_token_id": 0,
67
+ "qa_dropout": 0.1,
68
+ "seq_classif_dropout": 0.2,
69
+ "sinusoidal_pos_embds": false,
70
+ "tie_weights_": true,
71
+ "transformers_version": "4.56.1",
72
+ "vocab_size": 30522
73
+ }
eval_results.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "eval_loss": 0.4952681064605713,
3
+ "eval_precision": 0.21890547263681592,
4
+ "eval_recall": 0.2037037037037037,
5
+ "eval_f1": 0.21103117505995203,
6
+ "eval_runtime": 2.187,
7
+ "eval_samples_per_second": 7.316,
8
+ "eval_steps_per_second": 0.915,
9
+ "epoch": 10.0
10
+ }
label_config.json ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "label2id": {
3
+ "O": 0,
4
+ "B-Name": 1,
5
+ "I-Name": 2,
6
+ "B-Email Address": 3,
7
+ "I-Email Address": 4,
8
+ "B-Location": 5,
9
+ "I-Location": 6,
10
+ "B-Designation": 7,
11
+ "I-Designation": 8,
12
+ "B-Companies worked at": 9,
13
+ "I-Companies worked at": 10,
14
+ "B-College Name": 11,
15
+ "I-College Name": 12,
16
+ "B-Degree": 13,
17
+ "I-Degree": 14,
18
+ "B-Graduation Year": 15,
19
+ "I-Graduation Year": 16,
20
+ "B-Skills": 17,
21
+ "I-Skills": 18,
22
+ "B-Years of Experience": 19,
23
+ "I-Years of Experience": 20,
24
+ "B-UNKNOWN": 21,
25
+ "I-UNKNOWN": 22
26
+ },
27
+ "id2label": {
28
+ "0": "O",
29
+ "1": "B-Name",
30
+ "2": "I-Name",
31
+ "3": "B-Email Address",
32
+ "4": "I-Email Address",
33
+ "5": "B-Location",
34
+ "6": "I-Location",
35
+ "7": "B-Designation",
36
+ "8": "I-Designation",
37
+ "9": "B-Companies worked at",
38
+ "10": "I-Companies worked at",
39
+ "11": "B-College Name",
40
+ "12": "I-College Name",
41
+ "13": "B-Degree",
42
+ "14": "I-Degree",
43
+ "15": "B-Graduation Year",
44
+ "16": "I-Graduation Year",
45
+ "17": "B-Skills",
46
+ "18": "I-Skills",
47
+ "19": "B-Years of Experience",
48
+ "20": "I-Years of Experience",
49
+ "21": "B-UNKNOWN",
50
+ "22": "I-UNKNOWN"
51
+ },
52
+ "label_list": [
53
+ "Name",
54
+ "Email Address",
55
+ "Location",
56
+ "Designation",
57
+ "Companies worked at",
58
+ "College Name",
59
+ "Degree",
60
+ "Graduation Year",
61
+ "Skills",
62
+ "Years of Experience",
63
+ "UNKNOWN"
64
+ ]
65
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1d92e4503993ab3a990aa2884d60223003f74d1ee2c4079883836e1dc6dbc954
3
+ size 265534612
special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "mask_token": "[MASK]",
4
+ "pad_token": "[PAD]",
5
+ "sep_token": "[SEP]",
6
+ "unk_token": "[UNK]"
7
+ }
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "[PAD]",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "100": {
12
+ "content": "[UNK]",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false,
17
+ "special": true
18
+ },
19
+ "101": {
20
+ "content": "[CLS]",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false,
25
+ "special": true
26
+ },
27
+ "102": {
28
+ "content": "[SEP]",
29
+ "lstrip": false,
30
+ "normalized": false,
31
+ "rstrip": false,
32
+ "single_word": false,
33
+ "special": true
34
+ },
35
+ "103": {
36
+ "content": "[MASK]",
37
+ "lstrip": false,
38
+ "normalized": false,
39
+ "rstrip": false,
40
+ "single_word": false,
41
+ "special": true
42
+ }
43
+ },
44
+ "clean_up_tokenization_spaces": false,
45
+ "cls_token": "[CLS]",
46
+ "do_lower_case": true,
47
+ "extra_special_tokens": {},
48
+ "mask_token": "[MASK]",
49
+ "model_max_length": 512,
50
+ "pad_token": "[PAD]",
51
+ "sep_token": "[SEP]",
52
+ "strip_accents": null,
53
+ "tokenize_chinese_chars": true,
54
+ "tokenizer_class": "DistilBertTokenizer",
55
+ "unk_token": "[UNK]"
56
+ }
training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:802547bfa77871f608619326ae1119181b27b35ef1d47676aeca086f6b0b8dfa
3
+ size 5777
training_config.yaml ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data:
2
+ label_list:
3
+ - Name
4
+ - Email Address
5
+ - Location
6
+ - Designation
7
+ - Companies worked at
8
+ - College Name
9
+ - Degree
10
+ - Graduation Year
11
+ - Skills
12
+ - Years of Experience
13
+ - UNKNOWN
14
+ max_length: 512
15
+ stride: 96
16
+ train_jsonl: data/processed/train.jsonl
17
+ use_context_tokens: false
18
+ valid_jsonl: data/processed/valid.jsonl
19
+ model:
20
+ base_model: distilbert-base-uncased
21
+ load_in_4bit: false
22
+ lora:
23
+ alpha: 16
24
+ dropout: 0.1
25
+ enabled: false
26
+ r: 8
27
+ target_modules:
28
+ - q_lin
29
+ - v_lin
30
+ task: token_classification
31
+ torch_dtype: float32
32
+ run_name: distilbert_resume_ner
33
+ seed: 42
34
+ tracking:
35
+ mlflow_experiment: resume_ner
36
+ use_mlflow: false
37
+ train:
38
+ batch_size: 8
39
+ bf16: false
40
+ early_stopping_patience: 5
41
+ epochs: 10
42
+ eval_steps: 20
43
+ fp16: false
44
+ grad_accum: 1
45
+ logging_steps: 10
46
+ lr: 3.0e-05
47
+ metric_for_best_model: eval_f1
48
+ output_dir: outputs/${run_name}
49
+ save_steps: 20
50
+ warmup_ratio: 0.1
51
+ weight_decay: 0.01
vocab.txt ADDED
The diff for this file is too large to render. See raw diff