MediFlow / README.md
eperezs's picture
Update README.md
8878172 verified
---
library_name: transformers
tags:
- medical
license: cc-by-nc-nd-4.0
language:
- en
- es
metrics:
- accuracy
- f1
- precision
base_model:
- xlnet/xlnet-large-cased
---
# **MediFlow**
MediFlow se trata de un modelo inicializado con [xlnet-large-cased](https://huggingface.co/xlnet/xlnet-large-cased) y adaptado con preguntas y especialidades
para poder realizar Derivaciones Automatizadas en Servicios Hospitalarios. El dataset se puede encontrar de manera pública y se trata de [MedDialog EN](https://arxiv.org/abs/2004.03329).
Este modelo toma como input una descripción, en inglés, proveída por el paciente y devuelve las siguientes especialidades (`model.config.label2id`): Cardiology, Traumatology, Mental Health y Pneumology.
Se puede encontrar más información del modelo [aquí](https://huggingface.co/digitalhealth-healthyliving/MediFlow/resolve/main/MediFlow%20Adaptaci%C3%B3n%20de%20un%20Modelo%20de%20Lenguaje%20para%20Triaje%20Automatizado%20a%20diferentes%20especialidades.pdf).
Para el entrenamiento de este modelo hemos seguidos los estándares de la librería [transformers](https://github.com/huggingface/transformers) y se ha utilizado una
NVIDIA P100. Además, ha sido entrenado con un batch-size de 4, un learning rate de 2e-5, X epochs y un weigth decay de 0.015, loggeando los resultados cada 100 iteraciones.
## **Utilización**
Mediante el `pipeline` de Hugging Face:
```python
from transformers import pipeline
model_id = "digitalhealth-healthyliving/MediFlow"
pipe = pipeline("text-classification", model_id)
text = "I have pain in the back"
result = pipe(text)
print(result)
```
Mediante `AutoModelForSequenceClassification` y `AutoTokenizer`:
```python
from transformers import AutoModelForSequenceClassification, AutoTokenizer
model_id = "digitalhealth-healthyliving/MediFlow"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
text = "I have pain in the back"
inputs = tokenizer(text, return_tensors = "pt")
logits = model(**inputs)
print(f"The predicted class is {model.id2label[logits.argmax()]}")
print(result)
```
## **Evaluación**
- **Accuracy** : 89,3%
- **F1**: 89,4%
- **Precision**: 90%
#### Training Hyperparameters
- **learning_rate**: 2e-5
- **batch_size**: 4
- **num_train_epochs**: 3
- **weight_decay**: 0.015
- **optimizer**: AdamW
- **test_size**: 0.2
- **logging_steps**: 100