--- language: - it license: apache-2.0 library_name: opf base_model: openai/privacy-filter pipeline_tag: token-classification tags: - privacy-filter - pii-detection - italian - anonymization - ner - opf --- # privacy-filter-it Fine-tuning di [openai/privacy-filter](https://huggingface.co/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`: ```bash pip install git+https://github.com/openai/privacy-filter.git ``` ```python 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 , , residente in . 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](https://github.com/capazme/privacy-filter-it)) - **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 intestato a . ` ## ⚖️ 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} } ```