## Présentation

La tâche d'extraction passe par la construction de terminologies propres à chaque maladie. Ces terminologies ont été générées à l'aide de médecins et sont rendues disponibles dans une librairie Open-Source développée à l'AP-HP : [EDS-NLP](https://github.com/aphp/edsnlp)

### La librairie EDS-NLP

La librairie est construite autour de spaCy, un framework populaire de NLP. Vous trouverez un guide basique [ici](https://aphp.github.io/edsnlp/latest/tutorials/spacy101/).  
Dans le cadre de ce cours, une version dédiée est disponible:
- Lien [GitHub](https://github.com/aphp/edsnlp/tree/epita)
- Lien vers la [documentation](https://aphp.github.io/edsnlp/epita/)

### Les algorithmes de NER

L'extraction d'entité se fait à l'aide des terminologies mentionnées ci-dessous ainsi qu'un certain nombre de règles ad-hoc permettant d'afiner l'extraction et/ou d'exclurer des faux-positifs.

### Les algorithmes de qualification

De même, des algorithmes de qualification (négation, parenté, hypothèse) se basent sur un ensemble de règles pour qualifier une entité.

### Notebook
Le [notebook d'exemple](https://www.kaggle.com/thomzoy/1-ner-et-qualification-base-de-r-gles) vous montre comment instancier une pipeline spaCy contenant les différents algorithmes de NER et de qualification. Vous pouvez partir de ce notebook pour la suite:

>## **Proposition de travail**
>
>**- Se familiariser avec spaCy et EDS-NLP**
>**- Construire la pipeline complète d'extraction d'entité + qualification à base de règles**
>**- Calculer des métriques sur les données disponibles (NER seul, NER + Qualification / Qualification seule)**



## Liens utiles

- Classe de base utilisée pour créer les pipelines de NER : https://aphp.github.io/edsnlp/epita/pipelines/core/contextual-matcher/
- Exécuter une pipeline spaCy sur de nombreux textes: https://aphp.github.io/edsnlp/epita/tutorials/multiple-texts/
- Documentation sur les qualificateurs à base de règles: https://aphp.github.io/edsnlp/epita/pipelines/qualifiers/#available-pipeline
