Introduction

Les descriptions des approches d’extraction d’informations semblent souvent classer les exigences dans l’une des deux situations suivantes :

  1. soit des entités d’un vocabulaire existant doivent être extraites,
  2. soit des entités qui ne sont pas associées à un vocabulaire existant doivent être traitées, auquel cas un nouveau modèle doit être créé à partir de zéro.

Mais parfois, la situation est un mélange des deux : Il existe un vocabulaire existant, mais il est clair qu’il n’est pas complet : on peut alors supposer que des entités supplémentaires ou nouvelles du même type sont pertinentes et doivent être traitées correctement.

Exemple n°1 : extraction de noms de personne

Pensons à un scénario classique d’extraction d’information, l’extraction de noms de personnes : lorsque, par exemple, dans le cadre d’une entreprise, les noms des employés doivent être annotés, on peut supposer que la première des deux options ci-dessus s’applique : L’entreprise disposera très probablement à tout moment d’une liste du personnel et toute nouvelle embauche apparaîtra sur cette liste dans les jours qui suivent.

Cependant, la reconnaissance des noms de personnes en général est clairement du second type : Il n’existe pas de liste complète de toutes les personnes dans le monde, sans parler des variantes de noms ou des personnes fictives et autres.

Dans ce cas, les systèmes sont généralement construits en :

  • entrainant un modèle sur des corpus annotés de noms des personnes, en espérant que le système puisse ensuite généraliser sur des noms de personne encore inconnus,
  • construisant un pipeline d’annotation combinant le modèle ci-dessus avec un référentiel métier pour détecter automatiquement, dans un nouveau texte, les noms des personnes connues du référentiel et des noms inconnues.

Comment procéder pour trouver automatiquement de nouveaux noms de personne ?

En utilisant l’extraction d’entités basée sur Wikidata (qui comprend un grand nombre de noms de personnes), nous pouvons rapidement mettre en place un modèle dédié pour l’extraction de noms de personnes :

Nous commençons par étiqueter un corpus d’entraînement avec les noms de personnes connues de Wikidata, comme indiqué ci-dessous :

Ensuite, nous pouvons tester différents algorithmes et sélectionner celui qui est le plus précis. Dans l’exemple ci-dessous, nous sélectionnons le modèle FLAIR.

Nous construisons finalement un pipeline d’annotation combinant le modèle FLAIR avec un annotateur de base de connaissances (Wikidata dans notre exemple ci-dessous) pour détecter automatiquement, dans un nouveau texte, les noms de personnes connues (en rouge) du référentiel métier ainsi que les noms de personnes inconnues (en jaune).

Les noms de personnes inconnues extraits sont directement des candidats pour enrichir le vocabulaire métier.

Exemple n°2 : extraction de lignées cellulaires

Dans les sciences de la vie, les lignées cellulaires sont des populations de cellules aux propriétés particulières qui ont une importance clé dans de nombreuses expériences. Les lignées cellulaires sont répertoriées dans des catalogues ou thésaurus et de nombreuses publications scientifiques font référence en détail à celles-çi.

Extrait d’un exemple pris dans un article scientifique :

Cytotoxicity of recombinant Cec-B (rCec-B) was reported on normal human lung cell line (WI-38), and hepatocellular carcinoma cell line (HepG2)

Les référentiels métiers de lignées cellulaires sont disponibles comme le cellosaurus qui répertorie près de 100 000 lignées cellulaires humaines et plusieurs milliers d’autres provenant d’espèces de laboratoire comme les souris et les rats. Pourtant, même avec une ressource aussi vaste, la tâche d’identifier toutes les lignées cellulaires mentionnées dans des documents se résume à plus qu’une simple consultation de tableaux, car de nouvelles entités peuvent avoir été créées depuis la dernière mise à jour du référentiel métier ou des variantes d’entités connues peuvent avoir été utilisées dans des publications.

Comment procéder pour trouver automatiquement des nouvelles lignées cellulaires ?

Grâce à l’extraction d’entités basée sur Wikidata (qui comprend le thésaurus cellosaurus…), nous pouvons rapidement mettre en place un modèle dédié à la reconnaissance des lignées cellulaires : Nous commençons par étiqueter un corpus d’entraînement avec tous les concepts connus dans le cellosaurus ainsi que leurs liens respectifs dans le vocabulaire de Wikidata, dans la mesure où ils existent.


La configuration qui en résulte permet d’extraire les lignées cellulaires du contenu des documents bruts avec une grande précision. Celles qui se trouvent correspondre à une entrée dans Wikidata seront accompagnées d’un lien vers leur identifiant. De plus, les résultats sont désambiguïsés et classés par ordre de pertinence : Dans le cas où le nom d’une lignée cellulaire est ambigu avec un nom ayant une autre signification, le système ne renvoie la correspondance sous forme de lignée cellulaire que si le contexte le permet. La reconnaissance des entités est plus qu’une simple identification de chaîne de caractères !

Nous obtenons donc instantanément un corpus d’entrainement annoté avec les lignées cellulaires annotées et pouvons procéder à l’entrainement d’un modèle d’apprentissage.

Nous avons accès à un ensemble d’algorithmes d’apprentissage automatique par simple clic. Dans l’exemple ci-dessous, un entrainement utilisant la bibliothèque FLAIR à base de réseaux de neurones a été utilisée, en faisant appel à des intégrations basées sur des « Transformers » et à des modèles de langages pré-entrainés sur de la littérature biomédicale (« BioBERT« ). Aussi sophistiquée que soit cette configuration, elle nous est disponible sous la forme d’une simple option proposée lors de la définition d’un entrainement. Une simple expérience avec seulement 428 entités sur 157 documents nous donne déjà un modèle avec un f-score de 92,2%.

Nous construisons finalement un pipeline d’annotation permettant de :

  • appliquer à la fois le modèle par apprentissage et l’annotateur basé sur le cellosaurus,
  • réconcilier les différentes sorties (supprimer les doublons, sélectionner la correspondance la plus longue…),
  • relier chaque entité au thésaurus lorsqu’il y a équivalence.

Grâce à ce pipeline, nous sommes à présent en mesure d’extraire automatiquement à partir d’un document des lignées cellulaires connues du référentiel métier (en vert) et inconnues (en orange) qui serviront donc de candidats potentiels pour enrichir le thésaurus.

Conclusion

Les types d’entités « noms de personnes » ou « lignées cellulaires » ne sont qu’un des innombrables exemples d’entité nommées.

Nous avons donc décrit dans cet article comment combiner référentiel métier et modèle par apprentissage pour extraire efficacement, à partir de document, de nouveaux candidats (entités, termes…) dans le but de mettre à jour ou d’enrichir un vocabulaire métier existant. Bien sur, la validation de ces candidats et leur insertion dans le référentiel métier est une autre étape importante (« Data Curation ») et peut être plus moins complexe en fonction du type d’entités manipulé.