File size: 3,369 Bytes
1f9bb30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ca5e38e
 
1f9bb30
 
 
ca5e38e
 
1f9bb30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ca5e38e
ba2dbf6
f9a8536
 
 
5603d79
f9a8536
 
 
 
5603d79
 
ca5e38e
 
1ffe5c7
ca5e38e
1ffe5c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f9bb30
1ffe5c7
 
 
 
 
 
1f9bb30
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
---
library_name: transformers
license: apache-2.0
base_model: bert-base-uncased
tags:
- generated_from_trainer
metrics:
- f1
model-index:
- name: ner_classifier_v2
  results: []
---

<!-- This model card has been generated automatically according to the information the Trainer had access to. You
should probably proofread and complete it, then remove this comment. -->

# ner_classifier_v2

This model is a fine-tuned version of [bert-base-uncased](https://huggingface.co/bert-base-uncased) on an unknown dataset.
It achieves the following results on the evaluation set:
- Loss: 0.3338
- F1: 0.8406

## Model description

The DeepNeural NER-II model is designed to identify multiple enitities e.g. people, objects, organization etc. in textual medical documents. 
This clinical support model is one of many to be released, and is a crucial aspect of clinical support systems.

## Intended uses & limitations

The model is meant to be used for research and development purposes by Data Scientists, ML & Software Engineers for the development of 
NER applications capable of identifying enitities in medical EHR systems to augment patient health processing.

### Training hyperparameters

The following hyperparameters were used during training:
- learning_rate: 5e-05
- train_batch_size: 24
- eval_batch_size: 24
- seed: 42
- optimizer: Use OptimizerNames.ADAMW_TORCH_FUSED with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
- lr_scheduler_type: linear
- num_epochs: 3

### Training results

| Training Loss | Epoch | Step | Validation Loss | F1     |
|:-------------:|:-----:|:----:|:---------------:|:------:|
| 0.1708        | 1.0   | 834  | 0.2817          | 0.8212 |
| 0.1305        | 2.0   | 1668 | 0.2822          | 0.8354 |
| 0.07          | 3.0   | 2502 | 0.3338          | 0.8406 |

### Loading the model
```python
# Use a pipeline as a high-level helper
from transformers import pipeline

pipe = pipeline('token-classification', model="DeepNeural/ner_classifier_v2")

# Load model directly
from transformers import AutoTokenizer, AutoModelForTokenClassification

tokenizer = AutoTokenizer.from_pretrained('DeepNeural/ner_classifier_v2')
model = AutoModelForTokenClassification.from_pretrained('DeepNeural/ner_classifier_v2')

```
### Making predictions

1. Preparing the model 
```python
#Creating an easy tags function
#Custom configured model needs improvement, let's train it
def tag_text(text, tags, model, tokenizer) -> pd.DataFrame:
    #Get tokens with special characters
    tokens = tokenizer(text).tokens()
    #Encode the sequence into IDs
    input_ids = tokenizer(text, return_tensors="pt").input_ids.to(device)
    #Get predictions as a distribution over 7 classes
    outputs = model(input_ids)[0]
    #Take argmax to get most likely class per token
    predictions = torch.argmax(outputs, dim=2)
    #Convert to DataFrame
    preds = [ner_tags.names[p] for p in predictions[0].cpu().numpy()]
    return pd.DataFrame([tokens, preds], index=["Tokens", "Tags"])

```

2. Example for making predictions
   ```python
     #Testing the model
      dummy_text = "DeepNeural is an organization seeking to revolutionize healthcare"
      tag_text(dummy_text, ner_tags, trainer.model, tokenizer)
   ```
### Framework versions

- Transformers 4.56.2
- Pytorch 2.8.0+cu126
- Datasets 4.0.0
- Tokenizers 0.22.1