
Modèle de classification de tokens bidirectionnel pour la détection et le masquage des données personnelles (PII) dans le texte, avec une interface en ligne de commande pour la rédaction, l'évaluation et l'affinage sur site.
OpenAI Privacy Filter est un modèle de classification de tokens bidirectionnel pour la détection et le masquage d'informations personnellement identifiables (PII) dans le texte. Il est destiné aux flux de travail de désinfection de données à haut débit où les équipes ont besoin d'un modèle qu'elles peuvent exécuter sur site, rapide, sensible au contexte et ajustable.
OpenAI Privacy Filter est pré-entraîné de manière autorégressive pour aboutir à un checkpoint dont l'architecture est similaire à gpt-oss, bien que de taille plus réduite. Nous avons ensuite converti ce checkpoint en un classificateur de tokens bidirectionnel sur une taxonomie de labels de confidentialité, puis effectué un post-entraînement avec une perte de classification supervisée. (Pour les détails d'architecture concernant gpt-oss, veuillez consulter la fiche modèle gpt-oss.) Au lieu de générer du texte token par token, ce modèle étiquette une séquence d'entrée en une seule passe avant, puis décode des spans cohérents avec une procédure de Viterbi contrainte. Pour chaque token d'entrée, le modèle prédit une distribution de probabilité sur la taxonomie de labels, qui se compose de 8 catégories de sortie décrites ci-dessous.
Points forts :
Ce dépôt contient le code local, la CLI et les ressources d'exemple utilisés pour exécuter, évaluer et finetuner les checkpoints Privacy Filter. Il est destiné aux équipes qui souhaitent inspecter directement l'implémentation et exploiter le modèle dans leur propre environnement.
Ressources du dépôt : Licence et Politique de sécurité.
pip install -e .
Après cela, vous disposerez d'un script Python opf qui peut être exécuté directement ou via python -m opf. Le script peut être utilisé de 3 manières distinctes, comme décrit ci-dessous.
Par défaut, opf recherche un modèle dans le répertoire pointé par la variable OPF_CHECKPOINT, ou ~/.opf/privacy_filter. Si aucun modèle n'est trouvé à l'emplacement ~/.opf/privacy_filter, il sera téléchargé.
opf "Alice was born on 1990-01-02."
Le code prend en charge l'exécution à la fois sur GPU (par défaut) et sur CPU. Pour exécuter sur CPU, utilisez le flag --device cpu :
opf --device cpu "Alice was born on 1990-01-02."
Pour remplacer le checkpoint par défaut, passez --checkpoint :
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."
Le mode rédaction prend en charge la rédaction d'un fichier entier en une seule fois
opf -f /path/to/file
La rédaction peut également être effectuée via des pipes, pour prendre en charge des one-liners complexes :
cat /path/to/file | grep -e 'some_pattern' | opf
Si aucune entrée n'est fournie, opf démarrera en mode interactif. Dans ce mode, pour chaque exemple d'entrée, la CLI affiche une sortie JSON structurée, en utilisant des aperçus colorés par codes ANSI si le terminal les prend en charge. Ces options peuvent être contrôlées par des flags.
Consultez opf redact --help pour plus de flags et d'informations sur le mode rédaction.
opf eval examples/data/sample_eval_five_examples.jsonl
Les fixtures d'évaluation d'exemple sous examples/data/sample_eval_five_examples*.jsonl sont uniquement des données d'exemple synthétiques et ne décrivent pas de personnes réelles ni d'enregistrements sensibles réels. Voir examples/data/README.md.
Consultez opf eval --help pour plus de flags et d'informations sur le mode évaluation.
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint
Consultez opf train --help pour plus de flags et d'informations sur le mode finetuning.
opf/__main__.py : point d'entrée CLI unifié pour les modes redact, eval et train.opf/_api.py : API orientée Python au-dessus de la pile d'exécution et de décodage.opf/_cli/ : analyse des arguments en ligne de commande et aides au rendu terminal.opf/_core/ : chargement à l'exécution, conversion de spans et logique de décodage partagée.opf/_eval/ : chargement de jeux de données, prétraitement, métriques et exécuteurs d'évaluation.opf/_train/ : analyse des arguments de finetuning local et exécuteurs d'entraînement.opf/_model/ : implémentation du transformer, configuration du checkpoint et chargement des poids.examples/data/ : fichiers d'évaluation d'exemple ainsi que jeux de données de démonstration de finetuning reproductibles.examples/scripts/finetuning/ : harnais de démonstration de finetuning exécutables.FINETUNING.md : guide ciblé sur le flux de travail de finetuning et les scripts de démonstration.OUTPUT_SCHEMAS.md : formats de réponse JSON et de charge utile d'export.EVAL_AND_OUTPUT_MODES.md : description des modes de sortie pour la rédaction et l'évaluation.Privacy Filter est un modèle de classification de tokens bidirectionnel avec décodage de spans. Il est entraîné par phases, en commençant par un pré-entraînement autorégressif. Le modèle de langage pré-entraîné est ensuite modifié et post-entraîné comme un classificateur de tokens à attention bandée bidirectionnelle avec une taille de bande de 128 (fenêtre d'attention effective : 257 tokens, soi-même inclus). Cela signifie :
Sur le plan architectural, l'implémentation dans ce dépôt est une pile de type encodeur transformer pre-norm avec :
d_model = 640.Par rapport aux approches autorégressives itératives, cette conception permet d'étiqueter tous les tokens en une seule passe, ce qui améliore le débit. Par rapport aux approches classiques de pré-entraînement de type masked-language-model, il s'agit d'une conversion post-entraînement d'un modèle autorégressif plutôt que d'une configuration masked-LM native.
Privacy Filter peut détecter 8 catégories de spans de confidentialité :