AI evaluation of English text anonymization
Checks that an anonymization model or context lets no U.S. personal data through (email, phone, SSN, date of birth, medical record number).
Ressource évaluée
Critères
Each piece of personal data must be replaced by the right tag; a text without personal data must stay identical.
Cas de test
| # | Entrée | Réponse attendue |
|---|---|---|
| 1 | Call Daniel Brooks at 312-555-0199. | \[PHONE_1\] |
| 2 | My email is k.nguyen@outlook.com, thanks. | \[EMAIL_1\] |
| 3 | SSN: 078-05-1120 | \[SSN_1\] |
| 4 | Born on 07/22/1985, Sarah Mitchell lives in Denver. | \[DOB_1\] |
| 5 | MRN 55120034 was admitted on Monday. | \[MRN_1\] |
| 6 | The package leaves Seattle tomorrow. | ^The package leaves Seattle tomorrow\.$ |
Coût estimé
Tokens d'entrée par appel : ≈ 320
| Modèle | Par appel | Pour 1 000 appels |
|---|---|---|
| Mistral Large · Mistral AI | 0,00014 € | 0,14 € |
| DeepSeek Flash · DeepSeek | 0,00009 € | 0,08 € |
| DeepSeek V4 Pro · DeepSeek | 0,00037 € | 0,37 € |
| GPT-6 Luna · OpenAI | 0,00003 € | 0,03 € |
| GPT-6 Sol · OpenAI | 0,00056 € | 0,56 € |
| Claude Sonnet 5.5 · Anthropic | 0,00056 € | 0,56 € |
| Claude Opus 5.5 · Anthropic | 0,00113 € | 1,13 € |
| Modèle open source hébergé chez soi (Ollama, vLLM) | 0 € d'API (coût du serveur seulement) | |
Coût d'entrée seulement, sans la réponse du modèle. Prix publics des fournisseurs (Mistral AI, DeepSeek, OpenAI, Anthropic), tarif standard en dollars converti en euros au taux BCE du 29 septembre 2026. Estimation : 1 token ≈ 3,6 caractères.
Commun aux 3 régions
Contenu créé par l'auteur, sans source extérieure.
Usage commercial autorisé · citer l'auteur · modifications permises.
Texte ou données seuls : aucun accès aux fichiers, au réseau ni aux commandes.
Hébergé en France (Scaleway, Paris). Aucun transfert hors UE.
Union européenne · 5/5
Fictives : noms, adresses et numéros inventés, aucune personne réelle.
Pas de données d'entraînement : pas de résumé à fournir.
États-Unis · 5/5
Fictives : noms, adresses et numéros inventés, aucune personne réelle.
Pas de données d'entraînement : pas de documentation à publier.
Chine · 5/5
Fictives : noms, adresses et numéros inventés, aucune personne réelle.
Pas de données d'entraînement ; les contenus générés par IA diffusés en Chine doivent être marqués (2025).
Synthèse indicative au 30/09/2026, sans valeur de certification juridique. Méthode et sources →
Statistiques
J'aime : 0 · Commentaires : 0
Cliquez sur un compteur pour l’afficher ou le masquer, survolez le graphique pour le détail. Une vue par visiteur et par jour, robots exclus ; décompte commencé le 30 septembre 2026.
- Identifiant
- contextetech--eval-anonymize-english-text
- Type
- Évaluations
- Fichier
- eval-anonymize-english-text.eval.jsonl
- Format
- JSON Lines (application/jsonl)
- Taille
- 476 octets
- Encodage
- UTF-8
- Tokens estimés
- ≈ 132
- Langue
- Anglais
- Licence
- CC BY 4.0
- Usage commercial
- Autorisé
- Données personnelles
- Fictives (inventées)
- Version
- 1.0
- Publié le
- 2 octobre 2026 à 21:54
- Mis à jour le
- 2 octobre 2026 à 21:54
- Stockage
- en base
- Utilisations
- 0
- J'aime
- 0
eval-anonymize-english-text.eval.jsonl
{"input":"Call Daniel Brooks at 312-555-0199.","expected":"\\[PHONE_1\\]"}
{"input":"My email is k.nguyen@outlook.com, thanks.","expected":"\\[EMAIL_1\\]"}
{"input":"SSN: 078-05-1120","expected":"\\[SSN_1\\]"}
{"input":"Born on 07/22/1985, Sarah Mitchell lives in Denver.","expected":"\\[DOB_1\\]"}
{"input":"MRN 55120034 was admitted on Monday.","expected":"\\[MRN_1\\]"}
{"input":"The package leaves Seattle tomorrow.","expected":"^The package leaves Seattle tomorrow\\.$"}
Lancer l'évaluation (Python)
import json, re
cases = [json.loads(l) for l in open("eval-anonymize-english-text.eval.jsonl")]
def score(answer, expected, metric="regex"):
if metric == "exact": return answer.strip() == expected.strip()
if metric == "regex": return re.search(expected, answer) is not None
return expected.lower() in answer.lower() # contains (llm-judge : faire noter par un modèle)
def run(ask): # ask(input) -> réponse du modèle
ok = sum(score(ask(c["input"]), c["expected"]) for c in cases)
print(f"{ok}/{len(cases)} réussis ({100 * ok // len(cases)} %), seuil 100 %")
Communauté
Pas encore de commentaire. Partagez votre retour, il aidera les suivants.