
Bidirektionales Token-Klassifikationsmodell zur Erkennung und Maskierung von PII in Text, mit CLI für Redaktion, Evaluierung und Finetuning vor Ort.
OpenAI Privacy Filter ist ein bidirektionales Token-Klassifikationsmodell zur Erkennung und Maskierung personenbezogener Daten (PII) in Text. Es ist für Workflows zur Datenbereinigung mit hohem Durchsatz gedacht, in denen Teams ein Modell benötigen, das sie lokal betreiben können und das schnell, kontextbewusst und anpassbar ist.
OpenAI Privacy Filter wird autoregressiv vortrainiert, um einen Checkpoint mit einer Architektur ähnlich zu gpt-oss zu erhalten, wenn auch in kleinerer Größe. Anschließend haben wir diesen Checkpoint in einen bidirektionalen Token-Klassifikator über eine Datenschutz-Label-Taxonomie umgewandelt und mit einem überwachten Klassifikationsverlust nachtrainiert. (Architekturdetails zu gpt-oss finden Sie in der gpt-oss-Modellkarte.) Anstatt Text Token für Token zu generieren, beschriftet dieses Modell eine Eingabesequenz in einem einzigen Vorwärtsdurchlauf und dekodiert dann kohärente Spans mit einem eingeschränkten Viterbi-Verfahren. Für jedes Eingabe-Token sagt das Modell eine Wahrscheinlichkeitsverteilung über die Label-Taxonomie voraus, die aus 8 unten beschriebenen Ausgabekategorien besteht.
Highlights:
Dieses Repository enthält den lokalen Code, die CLI und Beispiel-Assets, die zum Ausführen, Evaluieren und Finetunen von Privacy-Filter-Checkpoints verwendet werden. Es ist für Teams gedacht, die die Implementierung direkt untersuchen und das Modell in ihrer eigenen Umgebung betreiben möchten.
Repository-Ressourcen: License und Security Policy.
pip install -e .
Danach verfügen Sie über ein Python-Skript opf, das direkt oder über python -m opf ausgeführt werden kann. Das Skript kann auf drei verschiedene Arten verwendet werden, wie unten beschrieben.
Standardmäßig sucht opf nach einem Modell im Verzeichnis, auf das die Variable OPF_CHECKPOINT zeigt, oder unter ~/.opf/privacy_filter. Wenn kein Modell am Speicherort ~/.opf/privacy_filter gefunden wird, wird es heruntergeladen.
opf "Alice was born on 1990-01-02."
Der Code unterstützt die Ausführung sowohl auf GPU (standardmäßig) als auch auf CPU. Um auf CPU auszuführen, verwenden Sie das Flag --device cpu:
opf --device cpu "Alice was born on 1990-01-02."
Um den Standard-Checkpoint zu überschreiben, übergeben Sie --checkpoint:
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."
Der Redaktionsmodus unterstützt die Redaktion einer gesamten Datei auf einmal
opf -f /path/to/file
Die Redaktion kann auch über Pipes erfolgen, um komplexe Einzeiler zu unterstützen:
cat /path/to/file | grep -e 'some_pattern' | opf
Wenn keine Eingabe bereitgestellt wird, startet opf im interaktiven Modus. In diesem Modus gibt die CLI für jedes Eingabebeispiel eine strukturierte JSON-Ausgabe aus und verwendet ANSI-farbcodierte Vorschauen, wenn das Terminal diese unterstützt. Diese Optionen können über Flags gesteuert werden.
Weitere Flags und Informationen zum Redaktionsmodus finden Sie unter opf redact --help.
opf eval examples/data/sample_eval_five_examples.jsonl
Die Beispiel-Eval-Fixtures unter examples/data/sample_eval_five_examples*.jsonl sind ausschließlich synthetische Beispieldaten und beschreiben keine realen Personen oder realen sensiblen Datensätze. Siehe examples/data/README.md.
Weitere Flags und Informationen zum Evaluationsmodus finden Sie unter opf eval --help.
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint
Weitere Flags und Informationen zum Finetuning-Modus finden Sie unter opf train --help.
opf/__main__.py: einheitlicher CLI-Einstiegspunkt für die Modi redact, eval und train.opf/_api.py: Python-API über den Runtime- und Decoding-Stack.opf/_cli/: Parsing von Kommandozeilenargumenten und Hilfsfunktionen für die Terminal-Darstellung.opf/_core/: Runtime-Laden, Span-Konvertierung und gemeinsame Decoding-Logik.opf/_eval/: Laden von Datensätzen, Vorverarbeitung, Metriken und Evaluations-Runner.opf/_train/: Parsing von Argumenten für lokales Finetuning und Trainings-Runner.opf/_model/: Transformer-Implementierung, Checkpoint-Konfiguration und Laden von Gewichten.examples/data/: Beispiel-Eval-Dateien sowie reproduzierbare Finetuning-Demo-Datensätze.examples/scripts/finetuning/: ausführbare Finetuning-Demo-Harnesses.FINETUNING.md: fokussierter Finetuning-Workflow und Anleitung zu Demo-Skripten.OUTPUT_SCHEMAS.md: JSON-Antwort- und Export-Payload-Formate.EVAL_AND_OUTPUT_MODES.md: Beschreibung der Ausgabemodi für Redaktion und Evaluation.Privacy Filter ist ein bidirektionales Token-Klassifikationsmodell mit Span-Decoding. Es wird in Phasen trainiert, beginnend mit autoregressivem Pretraining. Das vortrainierte Sprachmodell wird dann modifiziert und als bidirektionaler Token-Klassifikator mit banded Attention der Bandgröße 128 (effektives Attention-Fenster: 257 Token einschließlich Self) nachtrainiert. Das bedeutet:
Architektonisch ist die Implementierung in diesem Repo ein Pre-Norm-Transformer-Encoder-Stack mit:
d_model = 640.Im Vergleich zu iterativen autoregressiven Ansätzen ermöglicht dieses Design, alle Token in einem Durchlauf zu labeln, was den Durchsatz verbessert. Im Vergleich zu klassischen Masked-Language-Model-Pretraining-Ansätzen handelt es sich um eine Post-Training-Konvertierung eines autoregressiven Modells statt um ein natives Masked-LM-Setup.
Privacy Filter kann 8 Kategorien von Datenschutz-Spans erkennen:
account_numberprivate_addressprivate_emailprivate_personprivate_phoneprivate_urlprivate_datesecret