icf-levels-enr / README.md
CLTL's picture
Create README.md
790b6fc
metadata
language: nl
license: mit
pipeline_tag: text-classification
inference: false

Regression Model for Energy Levels (ICF b1300)

Description

A fine-tuned regression model that assigns a functioning level to Dutch sentences describing energy level. The model is based on a pre-trained Dutch medical language model (link to be added): a RoBERTa model, trained from scratch on clinical notes of the Amsterdam UMC. To detect sentences about energy level in clinical text in Dutch, use the icf-domains classification model.

Functioning levels

Level Meaning
4 No problem with the energy level.
3 Slight fatigue that causes mild limitations.
2 Moderate fatigue; the patient gets easily tired from light activities or needs a long time to recover after an activity.
1 Severe fatigue; the patient is capable of very little.
0 Very severe fatigue; unable to do anything and mostly lays in bed.

The predictions generated by the model might sometimes be outside of the scale (e.g. 4.2); this is normal in a regression model.

Intended uses and limitations

  • The model was fine-tuned (trained, validated and tested) on medical records from the Amsterdam UMC (the two academic medical centers of Amsterdam). It might perform differently on text from a different hospital or text from non-hospital sources (e.g. GP records).
  • The model was fine-tuned with the Simple Transformers library. This library is based on Transformers but the model cannot be used directly with Transformers pipeline and classes; doing so would generate incorrect outputs. For this reason, the API on this page is disabled.

How to use

To generate predictions with the model, use the Simple Transformers library:

from simpletransformers.classification import ClassificationModel

model = ClassificationModel(
    'roberta',
    'CLTL/icf-levels-enr',
    use_cuda=False,
)

example = 'Al jaren extreme vermoeidheid overdag, valt overdag in slaap tijdens school- en werkactiviteiten en soms zelfs tijdens een gesprek.'
_, raw_outputs = model.predict([example])
predictions = np.squeeze(raw_outputs)

The prediction on the example is:

1.98

The raw outputs look like this:

[[1.97520316]]

Training data

  • The training data consists of clinical notes from medical records (in Dutch) of the Amsterdam UMC. Due to privacy constraints, the data cannot be released.
  • The annotation guidelines used for the project can be found here.

Training procedure

The default training parameters of Simple Transformers were used, including:

  • Optimizer: AdamW
  • Learning rate: 4e-5
  • Num train epochs: 1
  • Train batch size: 8

Evaluation results

The evaluation is done on a sentence-level (the classification unit) and on a note-level (the aggregated unit which is meaningful for the healthcare professionals).

Sentence-level Note-level
mean absolute error 0.48 0.43
mean squared error 0.49 0.42
root mean squared error 0.70 0.65

Authors and references

Authors

Jenia Kim, Piek Vossen

References

TBD