privacy-filter-it / README.md
capazme's picture
Upload fine-tuned checkpoint: checkpoint_step1_italian_docs_v2
041b204 verified
metadata
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 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}
}