
عكس مرشح الخصوصية الخاص بـ openai. نفس نموذج 1.5b، يعيد المعلومات الشخصية القابلة للتعريف (PII) على شكل نطاقات منظمة بدلاً من إخفائها
اعثر على كل قطعة من المعلومات الشخصية (PII) في كومة من النصوص واسترجعها كفواصل (spans) منظمة.
مبني على OpenAI Privacy Filter: نفس نموذج 1.5B، نفس التسميات، نفس الأوزان.
Privacy Filter يحجب. Privacy Parser يستخرج.
Hi Quindle Testwick ([email protected] / +1-415-555-0102),
account 40702810500001234567, 14 Beautiful Ct, Anytown USA,
password Priv4cy-Filt3r-2026.
private_person Quindle Testwick
private_email [email protected]
private_phone +1-415-555-0102
account_number 40702810500001234567
private_address 14 Beautiful Ct, Anytown USA
secret Priv4cy-Filt3r-2026
بدلاً من <REDACTED> تحصل على ما تم العثور عليه، وأين هو (start، end) وأي نوع هو.
يجيب Privacy Filter على سؤال "اجعل هذا النص آمنًا". أحيانًا تحتاج إلى إجابة مختلفة: "ما الذي يوجد هنا بالضبط؟"
| الواجهة الخلفية | تحتاج أوزانًا | السرعة | F1 * | استخدمها عندما |
|---|---|---|---|---|
PIIParser | لا | µs | 1.000 | بدون تبعيات، أنماط منظمة |
ModelPIIParser | 1.5B | ~500 ms CPU | 0.733 | مخرجات النموذج الخام |
HybridPIIParser | 1.5B | ~600 ms CPU | 0.929 | الخيار الافتراضي |
* مطابقة النطاق الدقيقة على عينات opf الخمس. مجموعة صغيرة: تعامل معها كاختبار دخاني، وليس كمعيار قياس.
git clone https://github.com/openai/privacy-filter
git clone https://github.com/chiefautism/privacy-parser
uv venv
uv pip install -e ./privacy-filter # only for the model backends
uv pip install -e ./privacy-parser
يُنزّل أول تشغيل للنموذج نقطة التحقق opf (بحجم ~3 GB) إلى ~/.opf/privacy_filter/.
اضبط OPF_CHECKPOINT أو مرّر model= لاستخدام موقع آخر.
from pii_parser.hybrid import HybridPIIParser
parser = HybridPIIParser(device="cpu") # or "cuda"
result = parser.parse("Hi Quindle Testwick, call me at +1-415-555-0102")
for s in result.spans:
print(s.label, s.start, s.end, s.text)
print(result.to_json())
from pii_parser import parse
result = parse("mail [email protected], token ghp_abcdefghijklmnopqrstuvwxyz0123456789")
result.detected_spans # (DetectedSpan(label='private_email', ...), ...)
result.redacted_text # 'mail <REDACTED>, token <REDACTED>'
result.summary # {'span_counts': {...}, 'total_spans': 2}
خلفية Regex، بدون نموذج:
$ echo "Alice paid 40702810500001234567 on 2026-05-17." | pii-parser --mode spans
account_number 11 31 40702810500001234567
private_date 35 45 2026-05-17
$ pii-parser "mail [email protected]" --mode redacted
mail <REDACTED>
| العلم | القيم | الافتراضي |
|---|---|---|
TEXT | نص، أو -f FILE، أو stdin | |
--mode | json · spans · redacted | json |
--placeholder | أي سلسلة نصية | <REDACTED> |
--indent | عدد صحيح، 0 لـ JSON مضغوط | 2 |
الواجهة الخلفية للنموذج:
python -m pii_parser.cli_model "Alice paid 40702810500001234567 on 2026-05-17."
python -m pii_parser.cli_model -f dump.txt --device cuda --mode spans
تصنيف opf v2، 8 فئات:
| التسمية | مثال |
|---|---|
private_person | Quindle Testwick |
private_email | [email protected] |
private_phone | +1-415-555-0102 |
private_address | 14 Beautiful Ct, Anytown USA |
private_url | https://example.com/u/quindle |
private_date | 2026-05-17 |
account_number | 40702810500001234567 |
secret | sk-…، ghp_…، AKIA…، Bearer … |
عندما تتداخل النطاقات، يفوز النطاق الأطول، ثم التسمية ذات الأولوية الأعلى: email > url > secret > account > phone > date > address > person.
text
│
▼
opf 1.5B ──► BIOES logits ──► Viterbi (tuned biases) ──► char spans
│
▼
span merge glues "Quindle" + "Testwick" into one person
│
▼
regex backstop adds url / secret / account where the model missed them
│
▼
spans[]
يمكن تعطيل كل مرحلة:
HybridPIIParser(
enable_merge=True,
enable_regex_backstop=True,
enable_viterbi_tuning=True,
decode_mode="viterbi", # or "argmax"
)
{
"text": "Hi Quindle Testwick ...",
"spans": [
{ "label": "private_person", "start": 3, "end": 19, "text": "Quindle Testwick" }
]
}
يعكس التعبير النمطي PIIParser البنية opf.RedactionResult (schema_version، summary، detected_spans، redacted_text)، لذا يمكنك تبديل الواجهات الخلفية دون المساس بالمستهلكين.
تتوقع الاختبارات أن يكون privacy-filter مستنسخًا بجوار هذا المستودع (فهي تقرأ ملفات العينات الخاصة به).
python tests/test_hybrid.py
Fixture F1: 0.929
Scenarios: 8/8 passed
Latency: ~600 ms CPU
هذه أداة مزدوجة الاستخدام. شغّلها على بيانات تملكها أو مصرّح لك بمعالجتها. استخراج البيانات الشخصية من مصادر مسرّبة أو مسروقة غير قانوني في معظم الولايات القضائية.