AI-evaluatie van het anonimiseren van Nederlandse teksten
Controleert of een model of een anonimiseringscontext geen Nederlandse persoonsgegevens doorlaat (e-mail, telefoon, IBAN, BSN, geboortedatum).
Geëvalueerde resource
Criteria
Elk persoonsgegeven moet door het juiste label worden vervangen; een tekst zonder persoonsgegevens moet identiek blijven.
Testgevallen
| # | Invoer | Verwacht antwoord |
|---|---|---|
| 1 | Bel Ruben Smits op 06 98765432. | \[TELEFOON_1\] |
| 2 | Mijn e-mailadres is l.mulder@ziggo.nl, bedankt. | \[EMAIL_1\] |
| 3 | BSN: 111222333 | \[BSN_1\] |
| 4 | IBAN: NL91 ABNA 0417 1643 00 | \[IBAN_1\] |
| 5 | Geboren op 22-07-1988 woont Fleur Bos in Groningen. | \[GEBOORTEDATUM_1\] |
| 6 | Het pakket vertrekt morgen vanuit Utrecht. | ^Het pakket vertrekt morgen vanuit Utrecht\.$ |
Geschatte kosten
Invoertokens per aanroep : ≈ 332
| Model | Per aanroep | Per 1.000 aanroepen |
|---|---|---|
| Mistral Large · Mistral AI | € 0,00015 | € 0,15 |
| DeepSeek Flash · DeepSeek | € 0,00009 | € 0,09 |
| DeepSeek V4 Pro · DeepSeek | € 0,00039 | € 0,39 |
| GPT-6 Luna · OpenAI | € 0,00003 | € 0,03 |
| GPT-6 Sol · OpenAI | € 0,00059 | € 0,58 |
| Claude Sonnet 5.5 · Anthropic | € 0,00059 | € 0,58 |
| Claude Opus 5.5 · Anthropic | € 0,00117 | € 1,17 |
| Zelf gehost open-sourcemodel (Ollama, vLLM) | € 0 aan API-kosten (alleen de server) | |
Alleen de invoerkosten, zonder het antwoord van het model. Openbare standaardprijzen van de aanbieders (Mistral AI, DeepSeek, OpenAI, Anthropic), omgerekend van USD naar euro tegen de ECB-koers van 29 september 2026. Schatting: 1 token ≈ 3,6 tekens.
Gemeenschappelijk voor de 3 regio's
Gemaakt door de auteur, zonder externe bron.
Commercieel gebruik toegestaan · auteur vermelden · wijzigingen toegestaan.
Alleen tekst of gegevens: geen toegang tot bestanden, netwerk of opdrachten.
Gehost in Frankrijk (Scaleway, Parijs). Geen doorgifte buiten de EU.
Europese Unie · 5/5
Fictief: verzonnen namen, adressen en nummers, geen echte personen.
Geen trainingsgegevens: geen samenvatting nodig.
Verenigde Staten · 5/5
Fictief: verzonnen namen, adressen en nummers, geen echte personen.
Geen trainingsgegevens: geen documentatie te publiceren.
China · 5/5
Fictief: verzonnen namen, adressen en nummers, geen echte personen.
Geen trainingsgegevens; door AI gegenereerde inhoud die in China wordt verspreid, moet worden gemarkeerd (2025).
Indicatieve samenvatting per 30/09/2026, zonder waarde als juridische certificering. Methode en bronnen →
Statistieken
Likes : 0 · Reacties : 0
Klik op een teller om hem te tonen of te verbergen, beweeg over de grafiek voor details. Eén weergave per bezoeker per dag, bots uitgezonderd; geteld sinds 30 september 2026.
- Identificatie
- contextetech--eval-teksten-anonimiseren-avg
- Type
- Evaluaties
- Bestand
- eval-teksten-anonimiseren-avg.eval.jsonl
- Formaat
- JSON Lines (application/jsonl)
- Grootte
- 494 bytes
- Codering
- UTF-8
- Geschatte tokens
- ≈ 137
- Taal
- Nederlands
- Licentie
- CC BY 4.0
- Commercieel gebruik
- Toegestaan
- Persoonsgegevens
- Fictief (verzonnen)
- Versie
- 1.0
- Gepubliceerd op
- 8 oktober 2026 om 19:47
- Bijgewerkt op
- 8 oktober 2026 om 19:47
- Opslag
- in de database
- Keer gebruikt
- 0
- Likes
- 0
eval-teksten-anonimiseren-avg.eval.jsonl
{"input":"Bel Ruben Smits op 06 98765432.","expected":"\\[TELEFOON_1\\]"}
{"input":"Mijn e-mailadres is l.mulder@ziggo.nl, bedankt.","expected":"\\[EMAIL_1\\]"}
{"input":"BSN: 111222333","expected":"\\[BSN_1\\]"}
{"input":"IBAN: NL91 ABNA 0417 1643 00","expected":"\\[IBAN_1\\]"}
{"input":"Geboren op 22-07-1988 woont Fleur Bos in Groningen.","expected":"\\[GEBOORTEDATUM_1\\]"}
{"input":"Het pakket vertrekt morgen vanuit Utrecht.","expected":"^Het pakket vertrekt morgen vanuit Utrecht\\.$"}
De evaluatie uitvoeren (Python)
import json, re
cases = [json.loads(l) for l in open("eval-teksten-anonimiseren-avg.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 %")
Community
Nog geen reacties. Deel je ervaring, daar heeft de volgende iets aan.