Ce projet explore la classification des codes ICPE (Installations Classées Pour l'Environnement) à l'aide de techniques de traitement du langage naturel et d'apprentissage automatique.
Objectif : Faire une classification binaire entre arrêté préféctoral d'autorisation et autre à l'aide de données tabulaires.
Approche :
- Extraction de features à partir du texte HTML (titre, métadonnées)
- Entraînement d'un modèle XGBoost sur les features tabulaires
- Évaluation comparative des performances
Conclusions : Modèle très satisfaisant (précision de 1 sur les données de test).
Objectif : Essayer de passser à la classification multiclasse de manière supervisée. Une des expérience exploite un modèle de langage pré-entraîné en français.
Approche :
- Fine-tuning de CamemBERT pour la classification d'ICPE
- Utilisation de l'embedding complet du modèle
Résultats : Performances de XGBoost avec les données tabulaires est le "meilleur" modèle au sens du F1 score cross validé. Le modèle utilisant une tête de classification overfit. Entraînement de XGBoost sur des embeddings donne de meilleurs résulats mais pas autant que les données tabulaires
Objectif : Explorer une approche de clustering sans labels.
Approche :
- Génération d'embeddings via CamemBERT
- Clustering des ICPEs par similarité sémantique (k-means)
- Similarité entre les embeddings des documents et la description des labels (cosine similarity)
Résultats : Permet une exploration naturelle des groupements mais ne donne pas de résultats satisfaisants sur les données labelisées.
Ce projet met en évidence l’intérêt et les limites des différentes approches NLP appliquées à la classification des ICPE.
Les expériences montrent que les approches tabulaires, lorsqu’elles reposent sur des features bien construites et informatives, restent particulièrement efficaces. Le modèle XGBoost entraîné sur ces données obtient les meilleures performances globales, tant en classification binaire qu’en multiclasse, et constitue une base robuste et difficile à surpasser dans ce contexte.
L’utilisation de modèles de langage pré-entraînés comme CamemBERT apporte une richesse sémantique indéniable, mais leur fine-tuning supervisé s’avère délicat avec les données disponibles, menant à des phénomènes d’overfitting. L’exploitation des embeddings CamemBERT comme features intermédiaires améliore les résultats par rapport à une tête de classification directe, sans toutefois dépasser les performances des approches tabulaires.
Enfin, l’approche non supervisée permet une exploration qualitative intéressante des similarités sémantiques entre documents et des regroupements naturels d’ICPE. Toutefois, elle reste insuffisante pour une classification fiable en l’absence de supervision explicite.
data/
├── raw/
│ ├── 2026-01-09_Projet_HTML.zip # fichiers HTML
| ├── all_icpes.csv # titres et aiot de tous les arrêtés
| └── Projet_Classification-AP.xlsx # titres et aiot des arrêtés labelisés
└── processed/
├── embeddings_ICPEs.npy # Embeddings des arrêtés labelisés
└── embeddings_all_ICPEs.npy # Embeddings complets
src/
├── embeddings/ # Génération d'embeddings
├── features/ # Extraction de features
├── models/ # Classifieurs et clustering
├── evaluation/ # Métriques d'évaluation
└── pipeline.py # extraction de features vectorizés à partir de texte (TF-IDF)
notebooks/
├── 01_experiment_tabular_xgb.ipynb # Binaire tabulaire
├── 02_camembert_supervised.ipynb # multiclass supervisé
└── 03_camembert_unsupervised.ipynb # multiclass non supervisé
Le fichier ZIP contenant les fichiers HTML de tous les arrêtés étant assez volumineux, il n'est pas inclu dans le repo mais peut être téléchargé en cliquant sur ce lien. Il devra être placé à l'endroit indiqué dans la structure ci dessus pour reproduire toutes les expériences
pip install -r requirements.txt