AI-utvärdering av anonymisering av svenska texter
Kontrollerar att en modell eller en anonymiseringskontext inte släpper igenom svenska personuppgifter (e-post, telefon, IBAN, personnummer, födelsedatum).
Utvärderad resurs
Kriterier
Varje personuppgift ska ersättas med rätt etikett; en text utan personuppgifter ska förbli identisk.
Testfall
| # | Indata | Förväntat svar |
|---|---|---|
| 1 | Ring Nils Åberg på 070-174 06 77. | \[TELEFON_1\] |
| 2 | Min e-post är k.sandberg@telia.com, tack. | \[EPOST_1\] |
| 3 | Personnummer: 780721-4569 | \[PERSONNUMMER_1\] |
| 4 | IBAN: SE45 5000 0000 0583 9825 7466 | \[IBAN_1\] |
| 5 | Född den 22 juli 1988 bor Klara Holm i Västerås. | \[FÖDELSEDATUM_1\] |
| 6 | Paketet skickas från Örebro i morgon. | ^Paketet skickas från Örebro i morgon\.$ |
Uppskattad kostnad
Indatatokens per anrop : ≈ 326
| Modell | Per anrop | Per 1 000 anrop |
|---|---|---|
| Mistral Large · Mistral AI | 0,00014 € | 0,14 € |
| DeepSeek Flash · DeepSeek | 0,00009 € | 0,09 € |
| DeepSeek V4 Pro · DeepSeek | 0,00038 € | 0,38 € |
| GPT-6 Luna · OpenAI | 0,00003 € | 0,03 € |
| GPT-6 Sol · OpenAI | 0,00057 € | 0,57 € |
| Claude Sonnet 5.5 · Anthropic | 0,00057 € | 0,57 € |
| Claude Opus 5.5 · Anthropic | 0,00115 € | 1,15 € |
| Egendriftad öppen källkodsmodell (Ollama, vLLM) | 0 € i API-avgifter (endast serverkostnad) | |
Endast kostnaden för indata, utan modellens svar. Leverantörernas offentliga standardpriser (Mistral AI, DeepSeek, OpenAI, Anthropic) omräknade från USD till euro enligt ECB:s kurs den 29 september 2026. Uppskattning: 1 token ≈ 3,6 tecken.
Gemensamt för de 3 regionerna
Skapad av författaren, utan extern källa.
Kommersiell användning tillåten · ange upphovsperson · ändringar tillåtna.
Endast text eller data: ingen åtkomst till filer, nätverk eller kommandon.
Driftas i Frankrike (Scaleway, Paris). Ingen överföring utanför EU.
Europeiska unionen · 5/5
Fiktiva: påhittade namn, adresser och nummer, inga verkliga personer.
Inga träningsdata: ingen sammanfattning krävs.
USA · 5/5
Fiktiva: påhittade namn, adresser och nummer, inga verkliga personer.
Inga träningsdata: ingen dokumentation att publicera.
Kina · 5/5
Fiktiva: påhittade namn, adresser och nummer, inga verkliga personer.
Inga träningsdata; AI-genererat innehåll som sprids i Kina måste märkas (2025).
Vägledande sammanfattning per 30/09/2026, utan värde som juridisk certifiering. Metod och källor →
Statistik
Gillamarkeringar : 0 · Kommentarer : 0
Klicka på en räknare för att visa eller dölja den, för muspekaren över diagrammet för detaljer. En visning per besökare och dag, robotar undantagna; räkningen startade den 30 september 2026.
- Identifierare
- contextetech--eval-anonymisera-texter-gdpr
- Typ
- Utvärderingar
- Fil
- eval-anonymisera-texter-gdpr.eval.jsonl
- Format
- JSON Lines (application/jsonl)
- Storlek
- 513 byte
- Teckenkodning
- UTF-8
- Uppskattade tokens
- ≈ 139
- Språk
- Svenska
- Licens
- CC BY 4.0
- Kommersiell användning
- Tillåten
- Personuppgifter
- Fiktiva (påhittade)
- Version
- 1.0
- Publicerad
- 8 oktober 2026 kl. 19:48
- Uppdaterad
- 8 oktober 2026 kl. 19:48
- Lagring
- i databasen
- Användningar
- 0
- Gillamarkeringar
- 0
eval-anonymisera-texter-gdpr.eval.jsonl
{"input":"Ring Nils Åberg på 070-174 06 77.","expected":"\\[TELEFON_1\\]"}
{"input":"Min e-post är k.sandberg@telia.com, tack.","expected":"\\[EPOST_1\\]"}
{"input":"Personnummer: 780721-4569","expected":"\\[PERSONNUMMER_1\\]"}
{"input":"IBAN: SE45 5000 0000 0583 9825 7466","expected":"\\[IBAN_1\\]"}
{"input":"Född den 22 juli 1988 bor Klara Holm i Västerås.","expected":"\\[FÖDELSEDATUM_1\\]"}
{"input":"Paketet skickas från Örebro i morgon.","expected":"^Paketet skickas från Örebro i morgon\\.$"}
Kör utvärderingen (Python)
import json, re
cases = [json.loads(l) for l in open("eval-anonymisera-texter-gdpr.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 %")
Gemenskap
Inga kommentarer ännu. Dela din erfarenhet, det hjälper nästa person.