ner_classifier_v2
This model is a fine-tuned version of 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
# 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
- Preparing the model
#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"])
- Example for making predictions
#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
- Downloads last month
- 36
Model tree for DeepNeural/ner_classifier_v2
Base model
google-bert/bert-base-uncased