privacy-filter-it
Fine-tuning di openai/privacy-filter su documenti italiani sintetici per il riconoscimento di PII (Personally Identifiable Information).
Modello addestrato su dataset sintetico italiano (checkpoint_step1_italian_docs_v2).
β οΈ Come caricare il modello
Questo modello usa un'architettura custom (model_type: privacy_filter) non registrata in transformers. NON funziona con AutoModel / transformers.pipeline.
Per usarlo serve la libreria opf:
pip install git+https://github.com/openai/privacy-filter.git
import os
os.environ['OPF_MOE_TRITON'] = '0' # disabilita kernel CUDA-only su MPS/CPU
from opf import OPF
from huggingface_hub import snapshot_download
# Scarica il modello (viene messo in cache locale)
local_path = snapshot_download(repo_id='capazme/privacy-filter-it')
model = OPF(
model=local_path,
device='cuda', # oppure 'mps' (Apple Silicon) o 'cpu'
output_mode='typed',
decode_mode='viterbi',
)
text = 'Il sottoscritto Mario Rossi, CF RSSMRA80A01H501U, residente in Via Roma 10, Milano.'
result = model.redact(text)
print(result.redacted_text)
# -> Il sottoscritto <PRIVATE_PERSON>, <CODICE_FISCALE>, residente in <PRIVATE_ADDRESS>.
for span in result.detected_spans:
print(f'{span.label:25s} "{span.text}" [{span.start}:{span.end}]')
π Categorie riconosciute
Il modello riconosce 18 categorie di PII italiane:
| Categoria | Descrizione |
|---|---|
private_person |
Nomi di persone fisiche |
private_address |
Indirizzi (vie, cittΓ , numeri civici) |
private_email |
Indirizzi email |
private_phone |
Numeri di telefono italiani |
private_url |
URL contenenti dati personali |
private_date |
Date (nascita, scadenze, eventi) |
account_number |
Numeri di conto (generici) |
secret |
Credenziali, password, token |
codice_fiscale |
Codice Fiscale italiano (16 caratteri) |
carta_identita |
Numero Carta d'IdentitΓ italiana |
patente |
Numero Patente di guida |
passaporto |
Numero Passaporto |
partita_iva |
Partita IVA italiana (11 cifre) |
iban |
IBAN italiano (27 caratteri) |
tessera_sanitaria |
Tessera Sanitaria |
numero_procedimento |
Numero procedimento legale (RG) |
riferimento_catastale |
Riferimento catastale (foglio/mappale) |
parte_in_causa |
Parti in procedimento giudiziario |
π Dettagli training
- Base model:
openai/privacy-filter - Dataset: sintetico, generato dal modulo
dataset_builder.py(vedi repo GitHub) - Dati: 7500 esempi di training, 1250 di validation, (held-out, non usato in training) di test (held-out)
- Epoche: 14
- Batch size: 1
- Grad accum steps: 4
- Learning rate: 1e-05
- Hardware training: cuda
- Best epoch: 14 (validation loss: 0.0000)
- Param dtype: bfloat16
π― Metriche (validation set)
- Token accuracy (best): 1.0000
- Validation loss (best): 0.0000
π¨ Esempi di output
Input: Per bonifici IBAN IT60X0542811101000000123456 intestato a Luigi Bianchi. luigi.bianchi@studio.it
Output: Per bonifici <IBAN> intestato a <PRIVATE_PERSON>. <PRIVATE_EMAIL>
βοΈ Licenza & limitazioni
- Licenza: Apache 2.0 (ereditata dal base model)
- Limiti: il dataset Γ¨ sintetico β il modello potrebbe avere pattern overfitted su formati tipici (es. "CF RSSMRA80A01H501U" preceduto da prefisso). Testa con i tuoi testi prima dell'uso in produzione.
- Contesto: addestrato su testo italiano generico (email, CV, news, chat, business). Non ottimizzato per domini specifici (medico, scientifico, etc.).
- Dati sintetici: nessun dato reale di terze parti usato nel training. Tutti gli esempi sono generati programmaticamente con formati italiani validi ma valori casuali.
π Citazione
Se usi questo modello, per favore cita il lavoro originale di OpenAI:
@misc{openai-privacy-filter,
title = {Privacy Filter},
author = {OpenAI},
year = {2024},
url = {https://github.com/openai/privacy-filter}
}
- Downloads last month
- 47
Model tree for capazme/privacy-filter-it
Base model
openai/privacy-filter