DOING @ DEFT : utilisation de lexiques pour une classification efficace de cas cliniques (In this paper, we present our participation to the DEFT 2021 task 1) (2021)

Abstract: Nous présentons dans cet article notre participation à la tâche 1 de la campagne d’évaluation francophone DEFT 2021, sur l’identification du profil clinique du patient. Nous proposons une méthode évolutive et efficace en temps et en ressources pour la classification de documents médicaux pouvant être facilement adaptée à d’autres domaines de recherche. Notre système a obtenu les meilleures performances sur cette tâche avec une F-mesure de 0,814.

## introduction nous présentons dans cet article le système que nous avons développé pour l'identification du profil clinique du patient, et qui nous a permis de participer à la tâche 1 de deft 2021 1 @xcite . la tâche consistait à identifier les types de maladies d'un patient décrit dans un cas clinique et correspondant aux entrées génériques du chapitre c du mesh 2 , un thésaurus bilingue anglais-français du domaine médical. chaque document décrivant le cas clinique d'un patient, l'extraction des classes du mesh peut être vue comme un problème de classification (pour chaque classe du mesh on cherche à savoir si la classe est représentée dans le cas ou non). l'idée était de concevoir un système capable de répondre au problème efficacement en temps et en ressources. nous avons mis au point une méthode symbolique, basée sur des transducteurs finis et des lexiques. le système développé peut être utilisé en temps réel, mis à jour facilement et à un coût environnemental faible. en effet, aucun apprentissage n'est effectué et les pré-traitements consistent uniquement à tokeniser le texte et à raciniser les mots. nous avons également fait le choix de ne pas utiliser les annotations manuelles disponibles dans le corpus de test pour pouvoir utiliser notre système sur n'importe quel texte brut. nous avons uniquement utilisé les annotations manuelles en genre pour les cas pour lesquels notre méthode n'était pas en mesure de détecter le genre (2 sur 57). nous montrons dans la section 3.4 que nous aurions pu nous en passer sans que les performances de notre système ne soient impactées. notre système a obtenu les meilleurs résultats de la campagne deft 2021 pour la tâche 1. les organisateurs de deft nous ont fourni un corpus d'entraînement composé de 167 cas cliniques rédigés en français, pour un total de 69 256 mots. les cas cliniques sont anonymes et couvrent différentes spécialités médicales (cardiologie, urologie, oncologie, obstétrique, pulmonaire, gastoentérologie, etc.). le corpus a été annoté manuellement sous brat en pathologies, signes ou symptômes, parties anatomiques, examen, substances, traitement, dose, mode, moment, fréquence, durée, valeur, etc. (e.g. « échographie» de type «examen»). un enrichissement est effectué sur l'absence ou la présence de certains concepts, un changement, un état, une prise, etc. (e.g. « diminution» de type «changement» et « possible» de type « assertion») ces cas sont des descriptions de situations cliniques rares utilisées à des fins pédagogiques, scientifiques ou thérapeutiques. les classer automatiquement permettrait entre autres d'indexer les cas automatiquement et pourrait aider à l'identification de pathologies. ce travail a été réalisé dans le cadre du groupe de travail régional doing foot_0 , qui s'intéresse à la transformation des données en information, puis en connaissance, en favorisant la collaboration de chercheurs en tal, en bases de données et en ia. après avoir fait un rapide état de l'art du domaine (section 2), nous présentons notre système en section 3, puis les résultats obtenus en section 4. nous terminerons avec une partie discussion autour des choix d'implémentation du système et une analyse des erreurs (section 5). ## état de l'art la tâche d'identification de types de maladie s'assimile à une tâche de classification de documents, mais repose en partie sur l'extraction d'information dans le texte, plus particulièrement sur la reconnaissance d'entités. cette dernière est une tâche très importante en tal pour le domaine médical, elle est souvent associée à une tâche de linkage d'entités ou normalisation d'entités. pour l'anglais nous pouvons par exemple citer les travaux sur la détection des maladies et des troubles et leur normalisation via les cui (concept unique identifier) de l'umls (the unified medical language system) dans le cadre de différentes campagnes d'évaluation : share/clef ehealth 2013 evaluation lab task 1 @xcite , semeval 2015 tâche 4 @xcite , etc. le système qui a obtenu les meilleures performances à semeval 2015 tâche 4 @xcite utilise une approche supervisée basée sur des crf (conditional random fields) et des svm (support vector machine) pour l'identification des entités. pour la normalisation des entités, ils recherchent d'abord l'entité identifiée dans l'umls, puis ils construisent automatiquement des variantes de ces entités et les recherchent, et enfin s'ils n'ont toujours pas trouvé le cui ils calculent la similarité entre des chaînes proches dans l'umls. en français l'annotation d'entités dans des cas cliniques a fait l'objet de la tâche 3 de l'édition @xcite qui portait sur l'extraction des examens, des traitements, des signes ou symptômes, etc. @xcite ont proposé une méthode basée sur une cascade de crf pour identifier ces informations. malgré des performances dans l'ensemble plutôt bonnes, le système ne détecte correctement que la moitié des entités de type signe ou symptôme et pathologie (meilleure f-mesure respectivement de 0,55 et 0,44). afin d'identifier les types de maladie, nous aurions pu nous baser sur ces deux types d'information, mais les performances ne semblent pas assez bonnes pour y arriver. nous avons donc décidé de considérer la tâche comme une tâche de classification basée sur un lexique. dans la littérature, la classification de documents est souvent traitée comme un problème de classification traditionnelle. étant donné des individus (documents) représentés sous forme vectorielle, l'objectif est de prédire la classe (un label) de chaque individu à partir d'un modèle qui a été entraîné sur un corpus d'exemples. lorsque l'on traite des documents textuels, la représentation vectorielle ne parait pas évidente. la méthode souvent retenue est celle du sac de mots, l'idée est de sélectionner un ensemble de mots de taille n qui représenteront les dimensions de notre espace vectoriel. ainsi, chaque document est représenté par un vecteur de booléen (représentant l'apparition du mot ou non dans le texte) ou un vecteur d'entier représentant le nombre d'occurrences des termes dans le texte. afin de travailler sur un espace à dimensions réduites, une sélection des mots les plus révélateurs de chaque classe est nécessaire. l'idée est de trier chaque terme selon un certain critère et de sélectionner les m éléments ayant le score le plus élevé. une mesure simple est le tf-idf (pour term frequencyinverse document frequency) @xcite . intuitivement, cette mesure est un ratio entre la fréquence d'apparition du terme dans une classe donnée et sa fréquence dans l'ensemble du corpus qui repose sur la loi de zipf (un terme a plus de chance d'être révélateur d'une classe s'il y est souvent présent ; au contraire, si un terme est trop fréquent dans le corpus, il n'est pas assez discriminant). dans @xcite , les auteurs cherchent à extraire le domaine médical auquel appartiennent un ensemble de documents. ils comparent une approche utilisant des réseaux de neurones et une approche utilisant des sacs de mots pondérés par tf-idf avec un classifieur svm. ils montrent des résultats similaires pour les deux approches avec un gain en explicabilité pour l'approche sac de mots. d'autres mesures de pondération existent comme l'index de jaccard. @xcite proposent une autre méthode de pondération des termes basée sur l'algorithme de pagerank @xcite dans un graphe représentant les interactions entre les mots. nous avons fait le choix d'utiliser un transducteur fini et un lexique de "mots clés" plutôt que les méthodes décrites précédemment pour avoir une méthode utilisable « en temps réel » et utilisant peu de ressources. défini dans la section 3.2, les transducteurs finis sont une forme d'automate fini qui reconnaissent un langage mais qui sont aussi capables de produire une sortie. ils sont formellement définis comme des machines de turing à deux rubans. a notre connaissance, @xcite est le premier à introduire l'utilisation des transducteurs finis dans le traitement automatique de la langue naturelle. les transducteurs finis peuvent être utilisés pour de l'analyse syntaxique @xcite mais aussi pour l'extraction d'entités @xcite . @xcite ont introduit un algorithme permettant de construire un transducteur minimal à partir d'une liste triée de mots reconnus par le langage avec leur sortie. cet algorithme est celui implémenté dans pour la construction des fst dans apache lucene, un moteur d'indexation de texte notamment utilisé par apache solr. ## système le système utilisé, présenté dans la figure 1, utilise un lexique permettant l'extraction des termes révélateurs de chaque classe (section 3.1). l'extraction est réalisée par un transducteur fini dont le principe général et la construction sont définis dans la section 3.2. une phase de pré-traitement du texte est nécessaire avant l'extraction des termes. elle permet de supprimer les mots vides et de normaliser les mots en récupérant leur racine. un pré-traitement visant à transformer les mots en n-grammes a aussi été envisagé, mais a été jugé trop coûteux en ressources pour un gain de qualité trop faible. nous avons également mis en place une phase de post-traitement des annotations retournées par le transducteur afin de nettoyer les résultats obtenus. elle se charge de gérer les négations (section 3.3) et de traiter l'ambiguïté engendrée par certains termes sur le genre (section 3.4). texte mots vides racine fst négation genre classes mesh lexique pré-traitement post-traitement figure 1 -schéma du système d'identification du profil clinique du patient 3.1 lexique définition dans cet article nous définissons un lexique comme une collection de valeurs correspondant aux entrées du lexique pour lesquelles sont associées un ensemble de lexèmes la représentant. dans notre cas les entrées du lexique sont les types de maladie représentés par 23 classes du chapitre c du mesh (voir section 3.1.1). les lexiques sont construits à partir de thésaurus, de terminologies ou de bases de connaissances qui représentent des ressources riches qui s'enrichissent avec le temps (souvent semi-automatiquement à partir de corpus annotés) et qui sont très souvent surveillées par une autorité qui vérifie les informations et se charge du nettoyage des entrées. le domaine médical ne fait pas exception et fait peut-être partie des plus représentés, notamment avec des institutions comme la nlm (u.s. national library of medicine) qui a regroupé, dans le méta-thésaurus umls, un grand nombre de ressources 4 pouvant être très utiles pour le traitement du langage naturel. parmi les ressources de l'umls on peut notamment citer mesh, meddra©, snomed et rxnorm. notre méthode s'appuie sur les deux premiers décrits dans la suite de la section. 3.1.1 mesh le mesh (medical subject headings) est un thésaurus du domaine biomédical, à l'origine en anglais, qui est géré par la nlm. il permet entre autres d'indexer et d'interroger des bases de données comme 4. https://www.nlm.nih.gov/research/umls/sourcereleasedocs/index.html medline/pubmed. une traduction du mesh en français a été faite par l'inserm, elle est mise à jour chaque année. la version bilingue anglais-français peut être interrogée depuis une interface en ligne ( http://mesh.inserm.fr/frenchmesh/ ), et il est également possible de télécharger le thésaurus au format xml. le mesh est organisé en 16 catégories thématiques, mais seule la catégorie c, maladie, a été utilisée pour cette tâche. elle contient 26 classes, qui correspondent aux types de maladie à identifier dans les cas cliniques. dans la nous avons utilisé les termes de 13 classes de meddra©, par exemple affections congénitales, familiales et génétiques, affections gastro-intestinales, affections de la peau et du tissu sous-cutané. nous avons relié ces classes aux classes du mesh, dans les exemples précédents respectivement congenitales (c16), digestif (c06), peau (c17). le lexique contient ainsi 58 071 termes en plus. ## résultats dans cette section nous présentons les résultats officiels obtenus à deft ainsi que les résultats d'expérimentations supplémentaires sur le corpus de test permettant de mettre en évidence l'apport de chaque post-traitement et l'impact des modifications sur le lexique. le corpus de test se compose de 108 cas cliniques rédigés en français, représenté par 41 478 mots. le corpus comporte des annotations manuelles plus conséquentes que le corpus d'entraînement : genre, âge, poids, taille, température etc. nous avons soumis trois runs à deft, qui différent selon les ressources utilisées. les classes pour lesquelles nous avons obtenues les moins bons résultats sont la classe blessures (f-mesure entre 0.49 et 0.55), chimiques (f-mesure entre 0.36 et 0.54) et virales (1 classe sur 4 a été identifiée dans le corpus de test). nous observons que le post-traitement lié à l'identification du genre du patient permet une amélioration importante des performances (+ 0,036 pour la f-mesure). un gain important est également observé avec l'utilisation des annotations du train pour nettoyer et augmenter le lexique. ## conclusion dans cet article nous avons proposé une méthode rapide, simple, et efficace pour la classification de documents médicaux. notre approche montre que les lexiques constituent une ressource riche pour cette tâche, facilement mise à jour, et permettent d'obtenir une bonne qualité de classification. une analyse d'erreur rapide nous a permis de mettre en évidence que la plupart des erreurs étaient dues à l'absence de certains termes dans le lexique (e.g. kystes biliaires hépatiques), ou au fait que certains termes présents ne sont pas reliés à la classe identifiée manuellement (e.g. fistule et fistule cutanée sont contenus dans la classe etatsosy et peau pour le deuxième, mais pas dans la classe tumeur, contrairement à ce qui a été annoté manuellement). nous observons aussi quelques cas qui nécessitent un raisonnement, par exemple violente chute qui induit des blessures. comme discuté dans les parties précédentes, certaines améliorations du système peuvent être envisagées. notamment pour le traitement de la négation, où il est envisageable de mettre en place une méthode sémantique cherchant à mieux identifier la porté des marqueurs de négation. il peut être aussi intéressant de tenter de détecter des négations plus complexes comme dans la phrase « elle n'a présenté des nausées que durant la nuit et aucun vomissement ». pour le traitement du genre, il n'est pas nécessaire d'utiliser les annotations manuelles, si nous avons trop de non détection nous pouvons envisager une augmentation du lexique avec des listes de prénoms ou des participes passés (« s'est présenté »). la suppression de certains lexèmes dans le lexique basée sur leur fréquence dans le corpus wikipedia fr 2008 est réalisée en post-traitement. nous pensons qu'il serait préférable de se servir de ces fréquences pour nettoyer le lexique en amont. l'avantage est d'avoir un lexique plus petit et de ne pas chercher des variants inutilement. nous avons testé cette nouvelle configuration et nous obtenons pour le run 1 une f-mesure de 0,788 (au lieu de 0,785). a l'heure des réseaux de neurones énergivores, coûteux en maintenance et en entraînement, notre méthode s'inscrit dans une démarche éco-responsable. selon (strubell et al., 2019), entraîner un modèle de réseaux de neurones profond « à l'état de l'art » pour faire de la traduction correspondrait à l'impact de la durée de vie de 5 voitures. les durées d'entraînement pour ces modèles peuvent aussi aller de quelques jours à plusieurs semaines. les résultats obtenus montrent que les approches symboliques restent efficaces pour ce genre de tâche. l'utilisation de structures de données adaptées permet de minimiser les ressources nécessaires, ce qui diminue le coût mais aussi le temps d'exécution. avec notre approche, nous avons pu atteindre un temps ≈ 1min pour la classification de 108 documents. ce système peut aussi être facilement déployé sur des systèmes embarqués. références brin s. & page l. (1998). the anatomy of a large-scale hypertextual web search engine. computer networks and isdn systems, 30(1-7), 107-117. briscoe t. & carroll j. a. (2002). robust accurate statistical annotation of general text. in proceedings of the third international conference on language resources and evaluation, lrec 2002, may 29-31, 2002, las palmas, canary islands, spain : european language resources association.