SkimLit_NLP / README.md
AL FAYOUMI BILAL
ajout de readme
18a20ae
metadata
title: SkimLit NLP
emoji: 📄
colorFrom: red
colorTo: blue
sdk: docker
app_port: 7860
tags:
  - streamlit
  - nlp
  - medical
  - text-classification
pinned: false
short_description: Classification de phrases dans les résumés médicaux

📄 SkimLit — Classification séquentielle de phrases dans les résumés médicaux

HuggingFace Space HuggingFace Model Open In Colab Python TensorFlow

Réplication de "Neural Networks for Joint Sentence Classification in Medical Paper Abstracts" — Dernoncourt & Lee (2017).

Étant donné un résumé médical, classifier automatiquement chaque phrase dans l'une des cinq catégories rhétoriques : Background · Objective · Methods · Results · Conclusions


Démonstration

L'application est déployée sur Hugging Face Spaces — colle un résumé médical et obtiens une version structurée en quelques secondes.

🔗 Essayer la démo


Dataset

PubMed 20k RCT — résumés d'essais cliniques randomisés (RCT) issus de PubMed, chaque phrase annotée avec son rôle rhétorique.

Split Phrases
Train 180 040
Validation 30 212
Test 30 135

Progression des architectures

Le projet explore 6 architectures en complexité croissante :

# Modèle Accuracy F1 (weighted)
0 Naive Bayes + TF-IDF (baseline) 72.18 % 0.699
1 Conv1D — token embeddings ~85 % ~0.843
2 Transfer Learning — USE (512 dims) ~87 % ~0.871
3 Conv1D — character embeddings ~73 % ~0.720
4 Hybride Token + Char (BiLSTM) ~88 % ~0.876
5 Tribride — Token + Char + Positionnel 85.86 % 0.855

Les résultats des modèles 1–4 sont issus de la publication originale. Model 5 : résultat réel après 5 époques (non convergé — ~0.88–0.90 attendu à convergence).


Architecture du modèle final (Model 5 — Tribride)

Le modèle combine quatre flux d'entrée complémentaires :

Architecture Model 5 Tribride

Flux Entrée Sortie
Sémantique Embeddings all-MiniLM-L6-v2 (384 dims) Dense → 128
Morphologique Texte caractère par caractère Embedding(25) → BiLSTM(24) → Dense → 128
Positionnel One-hot(numéro de ligne, depth=15) Dense → 32
Structurel One-hot(total de lignes, depth=20) Dense → 32

Les flux sémantique et morphologique sont fusionnés (Dense 256 + Dropout 0.5), puis concaténés avec les features positionnelles avant la couche de classification finale.

Modèle hybride intermédiaire (Model 4)

Architecture Model 4 Hybride


Stack technique

Notebook (Google Colab GPU)
    └── SentenceTransformer (all-MiniLM-L6-v2)   # encodage sémantique
    └── TensorFlow / Keras                         # construction & entraînement
    └── scikit-learn                               # baseline + encodage labels

Application
    └── Streamlit                                  # interface web
    └── Docker                                     # containerisation (PORT 7860)
    └── Hugging Face Spaces                        # hébergement & CI
    └── Hugging Face Hub                           # stockage du modèle

Lancer localement

# Cloner le dépôt
git clone https://github.com/bilalfym/SkimLit_NLP.git
cd SkimLit_NLP

# Installer les dépendances
pip install -r requirements.txt

# Lancer l'application Streamlit
streamlit run src/streamlit_app.py

Ou via Docker :

docker build -t skimlit .
docker run -p 7860:7860 skimlit

Structure du projet

SkimLit_NLP/
├── src/
│   ├── SkimLit_NLP.ipynb      # notebook complet (entraînement + évaluation)
│   └── streamlit_app.py       # application de démonstration
├── Images/
│   ├── model_5.png            # architecture tribride
│   └── téléchargement.png     # architecture hybride (Model 4)
├── .github/workflows/
│   └── keep_alive.yml         # ping automatique du Space HuggingFace
├── Dockerfile
└── requirements.txt

Références

  • Dernoncourt, F., & Lee, J. Y. (2017). PubMed 200k RCT: a Dataset for Sequential Sentence Classification in Medical Abstracts. arXiv:1710.06071
  • Dernoncourt, F., & Lee, J. Y. (2017). Neural Networks for Joint Sentence Classification in Medical Paper Abstracts. EACL 2017.
  • Reimers, N., & Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. arXiv:1908.10084