ontoportal-lirmm / ncbo_cron

Jobs that run on a regular basis in the NCBO infrastructure
Other
0 stars 6 forks source link

Complete the current annotator dictionary creation workflow to add a new normalized dictionnary #1

Closed jonquet closed 7 years ago

jonquet commented 7 years ago

This is a sub task of https://github.com/sifrproject/ncbo_annotator/issues/4

This consist of modifying the process to generate the mgrep dictionary file in order to generate another file that would be normalized using TreeTager.

Assign to @vemonet and @amineabdaoui

amineabdaoui commented 7 years ago

The attached zip file contains a jar that allows to generate a new lemmatized dictionary. It replaces each concept by a its lemmatized form and keeps the same key. "-3404364283777539712 MELANOMES" -> "-3404364283777539712 MELANOME"

The jar takes two parameters: the first is the original dictionary file path and the second is the lemmatized dictionnary path. java -jar LemmatizerDic.jar dictionary.txt dictionary-lem.txt

The jar calls TreeTagger which must be present on the same folder.

We should call this jar every time the original dictionary is changed.

@vemonet, i think we should call it inside the file "ncbo_ontology_annotate_generate_dictionary" ? LemmatizerDic.zip

vemonet commented 7 years ago

C'est à ce niveau que les concepts d'une submission sont ajoutés à l'Annotator : https://github.com/sifrproject/ncbo_cron/blob/master/lib/ncbo_cron/ontology_submission_parser.rb#L224

Donc je pense que le mieux c'est de le faire dans cette fonction : https://github.com/sifrproject/ncbo_annotator/blob/master/lib/ncbo_annotator.rb#L109

jonquet commented 7 years ago

@vemonet Pourrez tu nous indiquer aussi ou se trouve les elements pour demarrer le serveur MGREP aussi ? (car il va falloir qu'on genere un 2 eme dico et qu'on demarre un 2eme MGREP avec ce dicco.

amineabdaoui commented 7 years ago

J'ai modifié la fonction generate_dictionary_file pour générer un deuxième dictionnaire lemmatisé. J'ai crée une branche dans le projet ncbo_annotator que j'appelle developAmine car je n'ai pas encore tout testé.

Je donne en PJ pour exemple une partie du dictionnaire original et le dictionnaire lemmatisé résultant.

dictionary-lem.txt dictionary.txt

Il faut mentionner que TreeTagger élimine les chiffres et quelque caractères spéciaux.

amineabdaoui commented 7 years ago

I tested the lemmatized dictionary generation on my local bioportal installation and it worked correctly. For that, I used the script "ncbo_ontology_annotate_generate_dictionary" in the ncbo_cron/bin folder. I created a branch in the ncbo_annotator project called "developAmine", and a second one in the ncbo_cron project with the same name.

jonquet commented 7 years ago

Merci des exemples. COEUR-POUMONS et transformé en CŒUR POUMON, j'en déduis que le Œ n'est pas un caractère spécial pour Treetager.

Pour les CUI qui disparaissent du dico, ok. C'est pas grave. De toute façon a terme on est censé ne plus en avoir si les ontologies sont propres... cf entre autre https://github.com/sifrproject/sifr_project_java_ontology_processing/issues/3 A y etre, on pourrait carrément enlever les lignes du dico e.g. 5594337818904035973 C

Pour une ligne comme celle-la: 5083756382759859076 ÉVéNEMENTS EMBOLIQUES ET THROMBOTIQUES (SMQ) L'idéal, pour vraiment augmenter le recall de l'Annotator serait d'avoir comme résultats: 5083756382759859076 ÉVÉNEMENT EMBOLIQUE ET THROMBOTIQUE SMQ 5083756382759859076 ÉVÉNEMENT EMBOLIQUE 5083756382759859076 ÉVÉNEMENT THROMBOTIQUE 5083756382759859076 SMQ Qu'en pensez vous ? (j'ai oublié si MGREP accepte plusieurs entrée avec le même termid d'ailleurs ?)

INCISION ET DRAINAGE D'HéMATOME DU BASSIN => INCISION ET DRAINAGE D HÉMATOME DU BASSIN INCISION D HÉMATOME DU BASSIN DRAINAGE D HÉMATOME DU BASSIN

Je sais que cela va plus loin que la lemmatisation la, mais est ce que a envoyer ca a un outil comme TreeTager, on pourrait pas essayer de faire ca aussi.

amineabdaoui commented 7 years ago

Je suis d'accord pour les lignes contenant seulement "C", je vais les enlever.

Pour les entrées multiples avec le meme termid, Mgrep semble les gérer sans problèmes. J'ai rajouté manuellement plusieurs lignes avec le meme termid, il arrive toujours à retrouver le meme concept avec les différentes variantes.

Par contre, je pense que pour les gérer on devra utiliser des heuristiques (par exemple: après un ET, considérer une suite de caractères avec au moins trois consonnes comme une abréviation...)

amineabdaoui commented 7 years ago

Le dictionnaire lemmatisé ne contient plus de lignes avec un concept qui a un seul caractère (le cas des CUI). Avec Andon, on a pu démarrer un deuxième Mgrep avec le dictionnaire lemmatisé sur le port 55556.

jonquet commented 7 years ago

Well, on dirait que cette première étape est terminée alors ;) Bravo. Je propose de garder la discussions sur les heuristiques pour ajouter des termes pour un autre moment. J'ai fait un autre issue pour ca: https://github.com/sifrproject/ncbo_annotator/issues/9