File size: 2,419 Bytes
709f17f
 
8878172
 
 
 
 
 
 
 
 
 
 
 
709f17f
 
f73559c
6859227
8878172
6859227
 
24e7448
5be7faf
fc6dfa4
6859227
a495d26
6859227
 
 
e45b5c2
6859227
 
8ca0e9f
ae88bf6
6859227
 
 
 
 
 
 
 
e45b5c2
6859227
 
8ca0e9f
6859227
 
 
 
 
 
 
 
 
 
 
 
 
061d0d7
 
 
e439d19
709f17f
 
 
e35cb83
 
c6c3c5c
e35cb83
 
 
 
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
---
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