Description
Pretrained named entity recognition deep learning model for clinical terms in Italian. The SparkNLP deep learning model (MedicalNerModel) is inspired by a former state-of-the-art model for NER: Chiu & Nicols, Named Entity Recognition with Bidirectional LSTM-CNN.
Predicted Entities
PROBLEM
, TEST
, TREATMENT
Live Demo Open in Colab Copy S3 URI
How to use
document_assembler = DocumentAssembler()\
.setInputCol("text")\
.setOutputCol("document")
sentence_detector = SentenceDetectorDLModel.pretrained("sentence_detector_dl", "xx")\
.setInputCols(["document"])\
.setOutputCol("sentence")
tokenizer = Tokenizer()\
.setInputCols(["sentence"])\
.setOutputCol("token")
embeddings = WordEmbeddingsModel.pretrained("w2v_cc_300d","it") \
.setInputCols(["sentence", "token"]) \
.setOutputCol("embeddings")
ner_model = MedicalNerModel.pretrained("ner_clinical", "it", "clinical/models")\
.setInputCols(["sentence", "token", "embeddings"])\
.setOutputCol("ner")
ner_converter = NerConverterInternal()\
.setInputCols(['sentence', 'token', 'ner'])\
.setOutputCol('ner_chunk')
pipeline = Pipeline(stages=[
document_assembler,
sentence_detector,
tokenizer,
embeddings,
ner_model,
ner_converter
])
sample_text = """Il KCNJ9 umano (Kir 3.3, GIRK3) è un membro della famiglia dei canali di potassio rettificanti internamente attivati da proteine G (GIRK). Qui descriviamo l'organizzazione genomica del locus KCNJ9 sul cromosoma 1q21-23 come gene candidato per il diabete mellito di tipo II nella popolazione indiana Pima. Il gene si estende per circa 7,6 kb e contiene un esone non codificante e due esoni codificanti separati rispettivamente da introni di circa 2,2 e circa 2,6 kb. Abbiamo identificato 14 polimorfismi a singolo nucleotide (SNP), tra cui uno che prevede una sostituzione Val366Ala, e un'insertione/delezione di 8 paia di basi (bp). I nostri studi sull'espressione hanno rivelato la presenza del trascritto in vari tessuti umani, tra cui il pancreas e due importanti tessuti insulinoresponsivi: il grasso e il muscolo scheletrico. La caratterizzazione del gene KCNJ9 dovrebbe agevolare ulteriori studi sulla funzione della proteina KCNJ9 e consentire di valutare il potenziale ruolo del locus nel diabete di tipo II. CONTESTO: Attualmente, uno degli aspetti più importanti per il trattamento del cancro al seno è lo sviluppo della terapia standard per i pazienti precedentemente trattati con antracicline e taxani."""
data = spark.createDataFrame([[sample_text]]).toDF("text")
result = pipeline.fit(data).transform(data)
val document_assembler = new DocumentAssembler()
.setInputCol("text")
.setOutputCol("document")
val sentence_detector = SentenceDetectorDLModel.pretrained("sentence_detector_dl", "xx")
.setInputCols("document")
.setOutputCol("sentence")
val tokenizer = new Tokenizer()
.setInputCols("sentence")
.setOutputCol("token")
val embeddings = WordEmbeddingsModel.pretrained("w2v_cc_300d","it")
.setInputCols(Array("sentence", "token"))
.setOutputCol("embeddings")
val ner_model = MedicalNerModel.pretrained("ner_clinical", "it", "clinical/models")
.setInputCols(Array("sentence", "token", "embeddings"))
.setOutputCol("ner")
val ner_converter = new NerConverterInternal()
.setInputCols(Array("sentence", "token", "ner"))
.setOutputCol("ner_chunk")
val pipeline = new Pipeline().setStages(Array(
document_assembler,
sentence_detector,
tokenizer,
embeddings,
ner_model,
ner_converter
))
sample_data = Seq("""Il KCNJ9 umano (Kir 3.3, GIRK3) è un membro della famiglia dei canali di potassio rettificanti internamente attivati da proteine G (GIRK). Qui descriviamo l'organizzazione genomica del locus KCNJ9 sul cromosoma 1q21-23 come gene candidato per il diabete mellito di tipo II nella popolazione indiana Pima. Il gene si estende per circa 7,6 kb e contiene un esone non codificante e due esoni codificanti separati rispettivamente da introni di circa 2,2 e circa 2,6 kb. Abbiamo identificato 14 polimorfismi a singolo nucleotide (SNP), tra cui uno che prevede una sostituzione Val366Ala, e un'insertione/delezione di 8 paia di basi (bp). I nostri studi sull'espressione hanno rivelato la presenza del trascritto in vari tessuti umani, tra cui il pancreas e due importanti tessuti insulinoresponsivi: il grasso e il muscolo scheletrico. La caratterizzazione del gene KCNJ9 dovrebbe agevolare ulteriori studi sulla funzione della proteina KCNJ9 e consentire di valutare il potenziale ruolo del locus nel diabete di tipo II. CONTESTO: Attualmente, uno degli aspetti più importanti per il trattamento del cancro al seno è lo sviluppo della terapia standard per i pazienti precedentemente trattati con antracicline e taxani.""").toDS.toDF("text")
val result = pipeline.fit(sample_data).transform(sample_data)
Results
+----------------------------------------------------+-----+----+---------+
|chunk |begin|end |ner_label|
+----------------------------------------------------+-----+----+---------+
|potassio rettificanti |73 |93 |TREATMENT|
|proteine G |120 |129 |TREATMENT|
|l'organizzazione genomica del locus KCNJ9 |155 |195 |TEST |
|diabete mellito di tipo II nella popolazione indiana|246 |297 |PROBLEM |
|kb |338 |339 |PROBLEM |
|un esone non codificante |352 |375 |PROBLEM |
|introni |429 |435 |TEST |
|kb |462 |463 |PROBLEM |
|polimorfismi |490 |501 |TEST |
|SNP |525 |527 |PROBLEM |
|sostituzione Val366Ala |559 |580 |TREATMENT|
|un'insertione/delezione di |585 |610 |TREATMENT|
|I nostri studi |633 |646 |TEST |
|tessuti umani |715 |727 |PROBLEM |
|il pancreas |738 |748 |PROBLEM |
|due importanti tessuti insulinoresponsivi |752 |792 |PROBLEM |
|il grasso |795 |803 |PROBLEM |
|il muscolo scheletrico |807 |828 |PROBLEM |
|La caratterizzazione del gene |831 |859 |PROBLEM |
|ulteriori studi sulla funzione della proteina |886 |930 |TEST |
|diabete di tipo II |997 |1014|PROBLEM |
|uno degli aspetti più importanti |1040 |1071|PROBLEM |
|trattamento del cancro al seno |1080 |1109|PROBLEM |
|terapia standard |1131 |1146|TREATMENT|
|antracicline |1192 |1203|TREATMENT|
|taxani |1207 |1212|TREATMENT|
+----------------------------------------------------+-----+----+---------+
Model Information
Model Name: | ner_clinical |
Compatibility: | Healthcare NLP 5.0.1+ |
License: | Licensed |
Edition: | Official |
Input Labels: | [sentence, token, embeddings] |
Output Labels: | [ner] |
Language: | it |
Size: | 2.9 MB |
Benchmarking
label precision recall f1-score support
TREATMENT 0.69 0.78 0.73 296
PROBLEM 0.87 0.70 0.78 698
TEST 0.90 0.81 0.85 401
micro-avg 0.83 0.75 0.79 1395
macro-avg 0.82 0.76 0.79 1395
weighted-avg 0.84 0.75 0.79 1395