-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Normalize the annotator input and dictionnary with TreeTager #4
Comments
Note for later: |
Lemmatization resolves this kind of problems. To resolve the above mentioned problem in its two ways (and more), we should lemmatize the queried text and use a lemmatized dictionary. |
The three steps mentioned here have been implemented. Therefore, I added a fourth step which converts the indexes of the lemmatized text to indexes of the original one. I am using the same jar to lemmatize both the dictionary and the input text (an option allows to make the difference between these two modes). The mapping key encodes the indexes of all the words in the lemmatized text and in the original one as the following: fromLem1-fromWor1:toLem1-toWor1_fromLem2-fromWor2:toLem2-toWor2_ ... For example: I am using this key to convert the lemmatized indexes into original ones. The changes are stored in branch "developAmine". |
Great!, one more thing to push on staging server for us all to test. |
Super. Faudra garder un oeuil la dessus. Mais bien evidement, la lemmatisation du texte a un coup. |
Sur l'exemple suivant: Mais du coup, sur le même appel avec lemmatize=true on a 2 annotations une avec le pref label et l'autre avec le synonyme (et le même offset). Comment éviter cela ? Est-ce que dans "mélanome choroïdien" on aurait une chance de matcher: "choroïde" dans MESH avec la lemmatisation ? FYI: avec "n'est jamais bénin" on voit se pointer le prochain problème de désambiguïsation ;). |
Effectivement la lémmatisation ralenti l'appel. Je pense que TreeTagger est légèrement plus rapide que la solution actuelle. Si on veut éviter d'avoir le meme concept annoté deux fois avec les memes offsets, je propose de rajouter une fonction qui filtre les annotations dans ncbo_annotator/ncbo_annotator.rb La lemmatisation ne permet pas d'extraire le nom (choroïde) à partir de l'adjectif (choroïdien). Par contre, la stemmatisation permet d'extraire la racine des mots (choroid). |
D'ou vient la double annotation ? Est ce que cela ne vient pas tout simplement de doublon dans le dictionnaire lemmatizé ? Ok pour la stemmatisation, on garde cela pour plus tard alors ;) |
La double annotation vient précisément de cela. Il n'est pas forcément désirable de n'en garder qu'un dans le sens où souvent le concept au pluriel n'est pas vraiment le même concept au pluriel, mais un autre concept plus général dans la hiérarchie je pense. C'est le cas de cancers/cancer dans MEDLINEFRE. Donc dans un cas comme ça l'annotation au pluriel pourrait être pertinente non? |
C'est effectivement un cas qui peu se produire. Mais je ne trouve pas cela très logique comme formalisation. La relation is-a n'est pas censé capturer la différence entre les pluriels et singulier. D'ailleurs, la version d'origine de MEDLINEPLUS n'a pas cette situation: Pour diminuer le nombre d'annotation, je recommande quand même qu'on se sépare des doublons dans le dictionnaire lemmatisé. Historiquement les pluriels sont nécessaire si on a pas de NLP pour les traiter, mais si on ajoute le NLP pour les traiter, alors on est redondant en les gardant dans le dico. Je ne pense pas que ce soit très fréquent. Mais on peut faire un double check dans le dictionnaire. |
Je m'en occupe, je vais modifier le jar qui génère le dico lemmatisé pour qu'il ne met pas la meme entrée deux fois (meme termId et meme concept lemmatisé). |
J'ai recrée le jar mais je viens de me rendre compte que le termID n'est pas le meme pour le prefLab et les synonymes du meme concept (du coup pas de doublons dans le dictionnaire lemmatisé car chacun a son termID). On peut pas non plus supprimé les concepts qui se répètent car on risque de tomber sur des concepts venant d'autres ontologies. Pour éviter d'avoir les synonymes et les preflab dans la meme annotation avec les memes offset, je pense qu'on doit juste les filtrer au moment de l'annotation. |
En effet je n'avais pas pensé a cela. Les termID différents c'est normal, mais oui on pourrait écraser/enlever des termes d'autres ontologies. C'est bête c'est l'endroit ou cela aurait été le plus efficace. Impossible de faire ca dans le cache ? au moment de la résolution des termID en URI ? Sinon, oui, il faut filtrer. |
Résolu dans 331df4f J'ai modifié la fonction add_annotation de annotation.rb. |
J'assigne a @vemonet pour qu'on ajoute ce paramètre aussi dans l'UI sur stageportal. Pour pouvoir tester de plus près . |
@jonquet Je l'ai fait et c'est disponible dans l'interface stage. Pour le moment j'ai fait sur la base de la branche lirmm, je suis en train de merger avec SIFR. C'est pour ça que tu verras le style d'interface générique de la branche lirmm. Après le merge ça revendra à l'interface sifr |
Fait. Passer en prod fin mars. |
This task consists in using TreeTager to normalize the text being sent to the Annotator and therefore also use it to normalize the content of the dictionary.
This task is divided into 3 specific issues:
This is followed by @amineabdaoui
The text was updated successfully, but these errors were encountered: