Ce repo contient les sources de la soumission de Réfugiés.info dans le cadre du Hackathon GenAI for Public Good du 5-6 février 2025.
Il est organisé de la manière suivante:
| Répertoire | Description |
|---|---|
apps |
Les applications |
data |
Datasets et données traitées |
docs |
Documentation et documentation technique |
images |
Images et ressources graphiques utilisées dans le projet |
models |
Modèles de langue et scripts liés aux modèles |
notebooks |
Notebooks Jupyter pour l'analyse des données et le développement des modèles |
packages |
Packages et bibliothèques réutilisables |
scripts |
Scripts utilitaires pour le traitement des données et l'automatisation |
C'est un monorepo hybride (node + python). Les applications node utilisent pnpm et turbo, les applications python utilisent uv.
- Luis Arias - EIG et CTO de Réfugies.info
- Nour Allazkani - Chef de projet de Réfugies.info
- Alice Mugnier - Responsable éditoriale de Réfugiés.info
- Claudia Meleghi - Rédactrice pôle éditoriale
- Marianne Georges - Product manager de Réfugiés.info
- Margot Gillette - Designer chez Réfugiés.info
- Jérémie Gisserot - Développeur Front-End chez Réfugiés.info
- Alexandre Bigot - Data scientist à la SDID / DTNUM / MI
- Nouran Khallaf - NLP Post-doctoral research fellow à l'université de Leeds
L'application web de Simplifier.gouv.fr est une application NextJS 14 qui utilise le AI SDK de vercel pour fournir une interface utilisateur simple et intuitive pour la simplification de textes administratifs. L'application utilise des prompts optimisés entrainés sur une dataset de textes parallèles élaborée et annotée par le pôle éditorial de Réfugiés.info. La dataset a été anonymisée pour obfusquer toute donnée personnelle (PII)
L'application utilise l'IA d'état Albert API et nécessite d'avoir une clé API.
Le répertoire models contient un modèle permettant de prédire les strategies de simplification d'un texte. Il a été fine-tuné sur la dataset.
Trois étapes sont nécessaires pour nettoyer les données :
- Filtrage : nous avons conservé des transformations de texte qui ne sont pas pertinentes pour la classification dans notre dataset d'origine. Il fallait donc filtrer ces lignes de la dataset.
- Anonymisation : malgré que la dataset provient de données publiques disponbiles en libre accès sur le site Réfugiés.info, pour les besoins du hackathon, nous avons besoin de supprimer toute donnée personnelle (PII). Nous avons donc anonymisé les textes.
- Categorisation : L'annotation de la dataset a été effectué sur un niveau plus précis que les grands catégories de notre taxonomie. Cependant, dans l'intérêt de réduire le nomre de catégories, nous avons regroupé les lignes dans la dataset dans les catégories de notre taxonomie.
Nous avons fine-tuné mBERT pour la tâche de prédiction des strategies de simplification à partir des textes à simplifier.
- Prompt Optimisation : Utlisation de TextGrad intégrant notre modèle finetuné mBERT pour optimiser le prompt utilisé par l'application Simplifier.info.
Ce répo utilise python 3.12.8 et uv pour l'installation et la gestion des environnements virtuels. Installer uv en suivant les instructions pour
votre système d'exploitation.
Ensuite créer l'environment virtuel et installer les dépendances avec : uv sync
Ce repo utilise volta pour l'installation des dépendances. Installer volta en suivant les instructions pour
votre système d'exploitation.
Ensuite installer les dépendances avec :
volta install node@22.13.1
volta install pnpm@10.2.0
pnpm install
Pour pouvoir faire tourner l'application Simplifier.info localement, il faut créer un fichier .env.local dans le répertoire apps/client dans lequel il faut ajouter les variables suivantes :
ALBERT_API_KEY: Clé API de l'IA d'état Albert API
Pour faire tourner l'application Simplifier.info localement, il faut exécuter la commande suivante:
turbo dev
La dataset utilisée pour le fine-tuning et le prompt optimisation est disponible dans le répertoire data/ et a le format suivant:
| Version initiale | Version retraitée | Catégorie |
|---|---|---|
| Dispositif d'apprentissage du français : permet de gagner en autonomie au quotidien grâce à des ateliers sociolinguistiques et cours de français langue professionnelle | Des ateliers 2 fois par semaine pour progresser en français, mieux communiquer au quotidien et dans le milieu professionnel. Bon à savoir Une adhésion de 15 € / an à l'association est demandée lors de l'inscription. | Explanation |
| Dispositif d'apprentissage du français : permet de gagner en autonomie au quotidien grâce à des ateliers sociolinguistiques et cours de français langue professionnelle | Des ateliers pour progresser en français, mieux communiquer au quotidien et dans le milieu professionnel. | Substitution |
| Dispositif d'apprentissage du français : permet de gagner en autonomie au quotidien grâce à des ateliers sociolinguistiques et cours de français langue professionnelle | Des ateliers pour progresser en français, mieux communiquer au quotidien et dans le milieu professionnel. | Compression |
| Dispositif d'apprentissage du français : permet de gagner en autonomie au quotidien grâce à des ateliers sociolinguistiques et cours de français langue professionnelle | Des ateliers pour progresser en français, mieux communiquer au quotidien et dans le milieu professionnel. | Syntactic |
| Progresser en français | Progresser en français | Transcription |
La taxonomie suivante permet d'annoter les phrases selon les transformations qui ont été effectuées par l'équipe éditoriale Réfugies.info. Notre taxonomie est inspirée par celle figurant dans les travaux de Nouran Khallaf et notamment son article "Reading between the lines: A dataset and a study on why some texts are tougher than others".
| Catégorie | Description |
|---|---|
| Transcription | On a conservé la phrase telle qu'elle |
| Synonymy | La phrase a le même sens, mais on en a changé la grammaire simple et le vocabulaire |
| Explanation | Explication de mots culturels, du contexte français, de concepts etc = explanation Donner des exemples = examples Ajout d'une info exogène = complement |
| Omission | On enlève des éléments (mots, phrases...) |
| Compression | Simplification de construction grammaticale (phrases passives en actives, changement de temps) |
| Modulation | Changement de perspectives (passage de la 3e personne à la 2e personne "vous") |
| Transposition | Changer une catégorie grammaticale de la phrase sans changer le message |
| Syntactic | Passage au bullet point par exemple, simplification syntaxique (une phrase avec "." qui devient plus courte, les / qui deviennent "et" ou des virgules) |
pnpm clean:branches: Nettoyer les branches supprimées de github
