Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
privacy-filter — テキスト内のPII検出とマスキングのための双方向トークン分類モデル。オンプレミスでの墨消し、評価、ファインチューニング用のCLIを備える。 | Kitploit
ツール/GitHubGitHub/openai/privacy-filter
防御ツールデータ流出情報収集プライバシーシークレット検出機械学習AIセキュリティ
GitHubopenai/privacy-filter

privacy-filter

テキスト内のPII検出とマスキングのための双方向トークン分類モデル。オンプレミスでの墨消し、評価、ファインチューニング用のCLIを備える。

リポジトリを見る
2.7k2424ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

OpenAI Privacy Filter

OpenAI Privacy Filterは、テキスト内の個人識別情報(PII)の検出とマスキングを行うための双方向トークン分類モデルです。オンプレミスで実行でき、高速で、コンテキストを考慮し、チューニング可能なモデルを必要とするチーム向けの、高スループットなデータサニタイズワークフローを対象としています。

OpenAI Privacy Filterは、自己回帰的に事前学習され、gpt-ossに似たアーキテクチャを持つものの、より小さいサイズのチェックポイントに到達します。その後、そのチェックポイントをプライバシーラベル分類体系上の双方向トークン分類器に変換し、教師あり分類損失で事後学習しました。(gpt-ossのアーキテクチャの詳細については、gpt-ossモデルカードを参照してください。)このモデルは、トークンごとにテキストを生成するのではなく、単一のフォワードパスで入力シーケンスにラベルを付け、制約付きViterbi手続きによって一貫性のあるスパンをデコードします。各入力トークンについて、モデルは以下に説明する8つの出力カテゴリからなるラベル分類体系上の確率分布を予測します。

ハイライト:

  • 寛容なApache 2.0ライセンス: 実験、カスタマイズ、商用展開に理想的です。
  • 小さいサイズ: Webブラウザやラップトップ上で動作します – 合計1.5Bパラメータ、アクティブパラメータ50M。
  • ファインチューニング可能: 簡単かつデータ効率の良いファインチューニングを通じて、特定のデータ分布にモデルを適応させることができます。
  • 長いコンテキスト: 128,000トークンのコンテキストウィンドウにより、チャンキングなしで高スループットで長いテキストを処理できます。
  • ランタイム制御: プリセットの動作点を通じて、精度/再現率のトレードオフと検出スパン長を設定できます。

このリポジトリ

このリポジトリには、Privacy Filterチェックポイントを実行、評価、ファインチューニングするために使用されるローカルコード、CLI、およびサンプルアセットが含まれています。実装を直接検査し、自身の環境でモデルを運用したいチームを対象としています。

リポジトリのリソース: License および Security Policy。

使用方法

  1. パッケージをローカルにインストールします:
root@kitploit:~
pip install -e .

この後、直接実行するか python -m opf 経由で実行できるPythonスクリプト opf が利用可能になります。このスクリプトは、以下に説明する3つの異なる方法で使用できます。

  1. ワンショットの秘匿化を実行します:

デフォルトでは、opf は OPF_CHECKPOINT 変数が指すディレクトリ、または ~/.opf/privacy_filter にあるモデルを探します。~/.opf/privacy_filter の場所にモデルが見つからない場合は、ダウンロードされます。

root@kitploit:~
opf "Alice was born on 1990-01-02."

このコードは、GPU(デフォルト)とCPUの両方での実行をサポートしています。CPUで実行するには、--device cpu フラグを使用します:

root@kitploit:~
opf --device cpu "Alice was born on 1990-01-02."

デフォルトのチェックポイントを上書きするには、--checkpoint を渡します:

root@kitploit:~
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."

秘匿化モードは、ファイル全体を一度に秘匿化することをサポートしています

root@kitploit:~
opf -f /path/to/file

秘匿化はパイプ経由でも実行でき、複雑なワンライナーをサポートします:

root@kitploit:~
cat /path/to/file | grep -e 'some_pattern' | opf

入力が提供されない場合、opf はインタラクティブモードで起動します。このモードでは、各入力例について、CLIは構造化されたJSON出力を表示し、ターミナルがサポートしている場合はANSIカラーコード付きのプレビューを使用します。これらのオプションはフラグで制御できます。

その他のフラグと秘匿化モードに関する情報については、opf redact --help を参照してください。

  1. ラベル付きデータセットでevalを実行します:
root@kitploit:~
opf eval examples/data/sample_eval_five_examples.jsonl

examples/data/sample_eval_five_examples*.jsonl 以下のサンプルevalフィクスチャは合成例データのみであり、実在の人物や実際の機密記録を記述したものではありません。examples/data/README.md を参照してください。

その他のフラグと評価モードに関する情報については、opf eval --help を参照してください。

  1. 独自のラベル付きデータセットでファインチューニングします:
root@kitploit:~
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint

その他のフラグとファインチューニングモードに関する情報については、opf train --help を参照してください。

構成

  • opf/__main__.py: redact、eval、trainモードのための統合CLIエントリポイント。
  • opf/_api.py: ランタイムとデコーディングスタックに対するPython向けAPI。
  • opf/_cli/: コマンドライン引数の解析とターミナルレンダリングのヘルパー。
  • opf/_core/: ランタイムの読み込み、スパン変換、および共有デコーディングロジック。
  • opf/_eval/: データセットの読み込み、前処理、メトリクス、および評価ランナー。
  • opf/_train/: ローカルファインチューニングの引数解析とトレーニングランナー。
  • opf/_model/: transformer実装、チェックポイント設定、および重みの読み込み。
  • examples/data/: サンプルevalファイルと再現可能なファインチューニングデモデータセット。
  • examples/scripts/finetuning/: 実行可能なファインチューニングデモハーネス。
  • FINETUNING.md: ファインチューニングワークフローとデモスクリプトのガイドに焦点を当てた文書。
  • OUTPUT_SCHEMAS.md: JSONレスポンスとエクスポートペイロードの形式。
  • EVAL_AND_OUTPUT_MODES.md: 秘匿化と評価のための出力モードの説明。

モデルの詳細

モデルの説明

Privacy Filterは、スパンデコーディングを備えた双方向トークン分類モデルです。自己回帰的事前学習から始まる段階的なトレーニングが行われます。事前学習された言語モデルはその後、バンドサイズ128(実効アテンションウィンドウ: 自身を含めて257トークン)の双方向バンド付きアテンショントークン分類器として変更され、事後学習されます。これはつまり:

  • ベースモデルは自己回帰的に事前学習されたチェックポイントです。
  • 言語モデルの出力ヘッドは、プライバシーラベル上のトークン分類ヘッドに置き換えられます。
  • 事後学習は、次トークン予測ではなく、教師ありトークンレベル分類です。
  • 推論では、一貫性のあるBIOES(Begin、Inside、Outside、End、Single)スパンラベルを生成するために、制約付きシーケンスデコーディングを適用します。

アーキテクチャ的には、このリポジトリの実装は、以下を備えたpre-norm transformerエンコーダスタイルのスタックです:

  • トークン埋め込み
  • 8つの繰り返しtransformerブロック
  • ロータリ位置埋め込みを備えたgrouped-query attention。14のクエリヘッドと2つのKVヘッド(KVヘッドあたりのグループサイズ = 7クエリ)
  • 合計128のエキスパートを持つスパースmixture-of-expertsフィードフォワードブロック(トークンあたりtop-4ルーティング)
  • プライバシーラベル(自然言語語彙トークンではなく)上の最終トークン分類ヘッド。残差ストリーム幅は d_model = 640。

反復的な自己回帰アプローチと比較して、この設計ではすべてのトークンに1回のパスでラベルを付けることができ、スループットが向上します。古典的なマスク言語モデル事前学習アプローチと比較して、これはネイティブなマスクLM設定ではなく、自己回帰モデルの事後学習による変換です。

出力形状

Privacy Filterは8つのプライバシースパンカテゴリを検出できます:

  1. account_number
  2. private_address
  3. private_email
  4. private_person
  5. private_phone
  6. private_url
  7. private_date
  8. secret

トークン分類を実行するために、各非背景スパンカテゴリは境界タグ付きトークンクラスに展開されます: B-<label>、I-<label>、E-<label>、S-<label>、および背景クラス O。したがって、トークンレベルの出力クラスの総数は33です: 1つの背景クラス + 8つのスパンラベル * 4つの境界タグ = 33クラス。これはつまり、出力ヘッドは各トークンに対して33のロジットを出力します。長さTのシーケンスの場合、出力は形状 [T, 33] を持ちます。サイズBのバッチの場合、形状 [B, T, 33] を持ちます。

トークンラベル語彙は、背景ラベル O に加えて、各プライバシーカテゴリのBIOESタグ付き変種で構成されます: account_number、private_address、private_email、private_person、private_phone、private_url、private_date、および secret。言い換えれば、各カテゴリについて、モデルはbegin、inside、end、およびsingle-tokenスパンに対応する B-、I-、E-、および S- 形式を予測します。推論時には、これらのトークンごとのロジットが、制約付きシーケンスデコーディングを使用して一貫性のあるBIOESスパンラベルにデコードされます。

シーケンスデコーディングの根拠とキャリブレーション

根拠

トークン分類器がトークンごとのロジットを生成した後、各トークンに対して独立にargmaxを取るのではなく、線形チェーン遷移スコアリングを使用した制約付きViterbiデコーダでラベルをデコードします。デコーダは、許可されたBIOES境界遷移を強制し、開始、遷移、終了の項、および背景の持続、スパンへの進入、スパンの継続、スパンの閉鎖、境界から境界への引き継ぎを制御する6つの遷移バイアスパラメータを用いて、完全なラベルパスをスコアリングします。この大域的なパス最適化は、各トークンの決定を局所的なロジットだけでなくシーケンスレベルの構造に依存させることで、スパンの一貫性と境界の安定性を向上させることを意図しており、特に局所的なトークン決定だけでは断片的または一貫性のない境界を生み出す可能性があるノイズの多い、または混在形式のテキストにおいて有効です。

動作点のキャリブレーション

シーケンスデコーディングのパラメータは、背景にとどまることを抑制しつつスパンへの進入と継続を促すように設定でき、再現率を向上させるために広く連続的なマスキングを生み出すか、またはその逆で精度を向上させることができます。実行時に、ユーザーはこのトレードオフを制御するパラメータを調整できます。

モデルメタデータ

  • 開発元: OpenAI

  • 資金提供: OpenAI

  • 共有元: OpenAI

  • モデルタイプ: プライバシースパン検出のための双方向トークン分類モデル

  • 言語: 主に英語。選択された多言語ロバスト性評価が報告されています

  • ライセンス: Apache 2.0

  • モデルの重み: https://huggingface.co/openai/privacy-filter

  • デモ: https://huggingface.co/spaces/openai/privacy-filter

  • モデルカード: OpenAI Privacy Filter Model Card

バイアス、リスク、および制限

リスク: 過度の依存

Privacy Filterは秘匿化とデータ最小化の補助ツールであり、匿名化、コンプライアンス、または安全性の保証ではありません。このツールを包括的な匿名化の主張として過度に依存すると、望ましいプライバシー目標を達成できないリスクがあります。Privacy Filterは、ホリスティックなエンドツーエンドのプライバシーバイデザインアプローチにおける複数の層の1つとして使用するのが最適です。

制限: 静的なラベルポリシー

このモデルは、トレーニングされたラベル分類体系と定義に一致する個人データスパンのみを識別します。実際のプライバシーユースケースは多様で複雑であり、適切なラベルポリシーと決定境界の定義は異なる場合があります。したがって、モデルのデフォルトは、キャリブレーション/ファインチューニングなしでは組織固有のガバナンス要件を満たさない可能性があります。

Privacy Filterは、実行時にラベルポリシーを動的に設定することをサポートしていません。代わりに、ポリシーを変更するにはモデルのさらなるファインチューニングが必要です。ネイティブのラベルセットと関連する決定境界は、すべてのユースケースに適しているとは限りません。例えば、モデルのトレーニングポリシーは個人識別子を優先することを目的としており、設計上、強く個人に紐づかないコンテキストをしばしば保持します。一部のユーザーはこの選択を調整したいと考えるかもしれません。

英語以外のテキスト、非ラテン文字、保護グループの命名パターン、またはモデルのトレーニングと比較して分布外のドメインでは、性能が低下する可能性があります。

失敗モード

すべてのモデルと同様に、Privacy Filterは誤りを犯す可能性があります。例えば: 珍しい個人名、地域の命名慣習、イニシャル、敬称の多い参照、またはドメイン固有の識別子の検出漏れ。局所的なコンテキストが曖昧な場合の、公的機関、組織、場所、または一般名詞の過剰な秘匿化。混在形式のテキスト、長い文書、または句読点やレイアウトのアーティファクトが多いテキストにおける、断片的またはずれたスパン境界。新しい資格情報形式、プロジェクト固有のトークンパターン、または周囲の構文にまたがって分割されたシークレットの検出漏れ。そして、シークレットに似た無害な高エントロピー文字列、プレースホルダー、ハッシュ、サンプル資格情報、または合成例の過剰な秘匿化。

これらの制限は、人口統計学的、地域的、およびドメインの変動と相互作用する可能性があります。例えば、トレーニングデータで過小に表現されている名前や識別子、または支配的なトレーニング分布とは異なる慣習に従うものは、検出漏れになったり、一貫性のない境界になったりする可能性が高くなります。

高リスク展開の注意

医療、法律、金融、人事、教育、政府のワークフローなど、高い機密性が求められる設定では、追加の注意が必要です。これらの設定では、偽陰性と偽陽性の両方がコストを伴う可能性があります: 検出漏れのスパンは機密情報を露出させる可能性があり、過剰なマスキングはレビュー、監査、または下流の意思決定に必要な重要なコンテキストを除去する可能性があります。

推奨事項

  • Privacy Filterは、包括的な匿名化の主張としてではなく、ホリスティックなプライバシーバイデザインアプローチの一部として使用してください。
  • 本番環境での使用前に、ローカルポリシーの参照を用いてドメイン内で評価してください。
  • ポリシーがベースの境界と異なる場合は、タスク固有のファインチューニングを使用してください。
  • 高い機密性が求められるワークフローでは、人間によるレビューの経路を維持してください。
ツールをダウンロード