--- language: fr license: mit library_name: onnx tags: - token-classification - pii - anonymization - french - camembert base_model: almanach/camembert-base --- # Noirci — détection de données personnelles en français Modèle de reconnaissance d'entités entraîné pour **pseudonymiser de la correspondance professionnelle française** avant de l'envoyer à un LLM. Exporté en ONNX quantifié int8 : 186 Mo, tourne sur CPU. Développé par **[5000.dev](https://5000.dev)**. Le moteur complet et le protocole de mesure sont publiés avec le benchmark : [5000dev/noirci-bench](https://huggingface.co/datasets/5000dev/noirci-bench). ## La métrique compte autant que le modèle Une entité n'est protégée que si **100 % de ses caractères significatifs sont masqués**. Masquer « Jean » dans « Jean Dupont » est compté comme une fuite, pas comme un demi-succès : le nom de famille est parti chez le fournisseur du LLM. Les scores F1 par token, usuels dans la littérature, récompensent ces demi-succès et surestiment fortement la protection réelle. On mesure donc deux choses séparément : le **taux de fuite** (l'entité a-t-elle été entièrement masquée) et le **taux de sur-masquage** (combien de texte inutile a été masqué au passage). ## Résultats Sur de la correspondance professionnelle française authentique, annotée à la main. Le modèle n'est qu'une couche du pipeline complet ; les chiffres ci-dessous sont ceux du pipeline `lite2`. | Jeu | Documents | Entités | Fuite | Sur-masquage | |---|---|---|---|---| | Validation (tenu à l'écart) | 72 | 555 | 3,96 % | 17,7 % | | Entraînement | 407 | 3 576 | 3,30 % | 11,2 % | | Aveugle (annoté avant exécution) | 7 | 55 | 5,45 % | 8,0 % | Par type sur le jeu le plus large : PERSON 0,00 %, URL 0,60 %, CITY 1,47 %, ADDRESS 1,74 %, PHONE 2,59 %, DATE 3,58 %, AMOUNT 4,58 %, COMPANY 5,70 %. Les identifiants à somme de contrôle (SIREN, SIRET, TVA, IBAN, NIR) sont à 0,00 % : ils sont traités par la couche déterministe, pas par le modèle. ## Ce que le modèle a appris, et pourquoi Le corpus d'entraînement mélange du synthétique métier (juridique, compta, RH, immobilier, administratif), du WikiNER français, et de la **prose réelle à valeurs substituées** : de vrais documents dont chaque entité a été remplacée par une autre valeur réelle du même type, tirée de sources publiques (BODACC, INSEE). La structure vient du réel, aucune donnée client ne subsiste. Un point non évident : la **forme de surface** des sociétés a été réalignée sur la distribution observée. Les pools BODACC et SIRENE stockent les raisons sociales en capitales, ce qui donnait un corpus à 65 % de majuscules contre 17 % dans la vraie correspondance. Le modèle apprenait qu'« une société, c'est un mot en capitales » et ratait 40 % des marques écrites normalement, en simple capitale initiale. Corriger cette seule distribution a fait passer les sociétés de 9,7 % à 6,7 % de fuite. ## Contenu du dépôt | Fichier | | |---|---| | `model.safetensors` | les poids en float32, pour réentraîner ou réexporter | | `onnx/model_int8.onnx` | l'export quantifié, 186 Mo, tourne sur processeur | | `tokenizer.json` | **sans troncature**. Le fichier sauvé après entraînement en embarquait une, silencieuse, à 192 tokens : la fin de tout document long n'était jamais analysée. Si vous repartez d'un autre export, vérifiez ce point. | ## Utilisation Le modèle seul n'est pas suffisant. Il est conçu comme une couche d'un pipeline qui comprend aussi des regex à checksums, des gazetteers (communes INSEE, dénominations SIRENE) et une passe de propagation document entier. Voir le dépôt GitHub. ```python from bench.detect.run import DETECTORS spans = DETECTORS["lite2"]("Bonjour, je suis Claire Baudry de la Verrerie Delaunay.") ``` ## Limites - **Français uniquement.** Quelques formats anglo-saxons sont couverts parce qu'ils apparaissent dans de la correspondance française, mais ce n'est pas un modèle multilingue. - **Le sur-masquage est réel**, entre 8 et 15 %. Environ un mot masqué sur sept l'est inutilement. - **Les benchmarks synthétiques sont saturés** (0,04 % de fuite) et ne discriminent plus rien. Ne jugez pas ce modèle dessus. - **Le périmètre exclut les plateformes grand public** (Zoom, Excel, Stripe, Figma). Ce sont des noms de produits, pas des données personnelles, et les masquer dégrade la réponse du LLM sans rien protéger. ## Licence et attributions MIT. Modèle de base : `almanach/camembert-base` (MIT). Données d'entraînement dérivées de WikiNER (CC-BY), BODACC et INSEE SIRENE (Licence Ouverte), Wikidata (CC0). Voir `NOTICE` dans le dépôt.