Installation & Dokumentation:
Cross-linguale Kandidatensuche für die Normalisierung biomedizinischer Konzepte
Diese Dokumentation basiert auf der folgenden Publikation:
Cross-lingual Candidate Search for Biomedical Concept Normalization. Roland Roller, Madeleine Kittner, Dirk Weissenborn, Ulf Leser, In Proceedings of MultilingualBIO, Miyazaki, Japan, 2018Der Artikel beschreibt ein biomedizinisches Übersetzungsmodell auf Zeichenebene, welches die Kandidatensuche für die Normalisierung von Konzepten verbessert. Wir trainierten ein Modell mit den mehrsprachigen (parallelen) UMLS-Daten sowie dem Internetlexikon FreeDict. Weitere Informationen finden Sie in unserer Publikation.
Hinweis: Grundlagenwissen von Solr und Tensorflow ist für die Nutzung unseren Modelle notwendig.
Installation des Neuralen Übersetzungsmodels:
Für die Installation werden python3, CONDA/Miniconda und pip benötigt. Die Installation wurde unter Ubuntu getestet.
Zuerst laden Sie bitte unsere Quellen herunter und entpacken diese. Um die nötigen Bibliotheken zu installieren, geben Sie bitte die folgenden Kommandos im Ordner /CharTranslator/env/conda/ oder in /Char-Translator/env/pip3/ ein:
Der folgende Code muss ausgeführt werden, indem die neue Umgebung aktiviert wird:
Die vortrainierten Übersetzungsmodelle verwenden:
Das CharTranslator-Paket enthält vortrainierte Modelle (CharTranslator/models/), die in Roller et al. (2018) beschrieben sind und sofort verwendet werden können. Für unseren Artikel trainierten wir die folgenden biomedizinischen Übersetzungsmodelle:
- Niederländisch ==> Englisch [du_en]
- Französisch ==> Englisch [fr_en]
- Deutsch ==> Englisch [de_en]
- Spanisch ==> Englisch [es_en]
Das folgende Beispiel zeigt, wie das Modell verwendet wird:
# Loading the Model from model import * import pickle sess = tf.InteractiveSession() with open("PATH TO THE MODEL SETTING FILE config.pickle", "rb") as f: conf = pickle.load(f) model = CharEncoderDecoder.from_config(conf, 124, "/cpu:0") sess.run(tf.global_variables_initializer()) saver = tf.train.Saver(model.train_variables) saver.restore(sess, "PATH TO THE MODEL") model.decode(sess, "STRING TO TRANSLATE", max_length=20)
Mit folgendem Skript können die Modelle auch direkt getest werden:
#example for French python test_translator.py --str "rein" --lang "fr" # output are five possible translations which might vary: # ['kidney', 'kidney', 'kidney', 'kidney', 'kidney'] #example for German python test_translator.py --str "kopfschmerzen" --lang "de" # output: ['headache', 'headache', 'headaing', 'headaing', 'headache']
Neue Modelle trainieren:
Falls Sie möchten, können Sie Ihr eigenes Modell trainieren. In unserer Publikation benutzten wir UMLS und Freedict für das Training. Sie können jedoch beliebige parallele Daten verwenden. Die Eingangsdaten müssen wie folgt aufgebaut sein:
Allgemeines Format:Als Erstes werden die Quell- und die Zielsprache ausgewählt:
[Wort der Quellsprache] \t
[Tupel von Wörtern in der Zielsprache mit äquivalenter Bedeutung, durch Tabs getrennt]
Falls Sie einen ähnlichen Ansatz, wie in unserem Artikel beschrieben, verfolgen, müssen Sie die Quellen von FreeDict herunterladen. Außerdem müssen Sie die Daten von MRCONSO herunterladen und konvertieren.
Kandidatensuche & Normalisierung:
Im Backend unserer Kandidatensuche verwenden wir Solr 6.5. Eine gute Konfiguration von Solr und dessen richtige Verwendung beeinflusst die Resultate maßgeblich. Unter den bereitgestellten Daten finden Sie das Schema, welches wir für unsere Experimente verwendet haben. Um das Solr-System zu konfigurieren, müssen folgende Schritte ausgeführt werden:Starten Sie Solr:
Erstellen Sie einen neuen Kern:
Beenden Sie Solr.
Ersetzen Sie unser Schema (CharTranslator/solr/schema) mit dem des neuen Kerns in solr-6.5/server/solr/UMLSMultiLing/conf/
Starten Sie Solr neu.Nun müssen Sie die Daten in Ihren Kern überführen. Falls Sie eine lokale UMLS-Installation haben, können Sie direkt folgendes Python-Script anwenden, um UMLS-Daten von Ihrer Zielsprache nach Solr zu kopieren. Für unsere Experimente benutzten wir die Kommandos für ENG, SPA, FRE, GER und DUT. Vor allem für Englisch wird dies einige Zeit benötigen.
Das gleiche Script kann benutzt werden, um die Quaero-Trainingsdaten in Solr einzufügen (falls Sie unsere Experimente nachstellen möchten).
Nun starten Sie Solr neu.
Mit den folgenden Kommandos haben Sie Zugriff auf die Daten:
from function_set import * SOLR_CORE="UMLSMultiLing" target_lang="GER" mention="Krebs" resultN_TL, resultSolr_TL = fuzzySearchSolr(mention, SOLR_CORE, target_lang, 10) print (">", resultN_TL, resultSolr_TL)