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. Code et benchmark : https://github.com/5000dev/noirci
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.
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.
- Downloads last month
- -
Model tree for 5000dev/noirci
Base model
almanach/camembert-base