
نموذج تصنيف الرموز ثنائي الاتجاه لكشف وإخفاء المعلومات الشخصية القابلة للتعريف (PII) في النصوص، مع واجهة سطر أوامر (CLI) لتنقيح البيانات وتقييمها وضبطها الدقيق محليًا.
OpenAI Privacy Filter هو نموذج تصنيف رموز ثنائي الاتجاه للكشف عن المعلومات الشخصية القابلة للتعريف (PII) وإخفائها في النصوص. وهو مخصص لسير عمل تعقيم البيانات عالي الإنتاجية حيث تحتاج الفرق إلى نموذج يمكنها تشغيله محليًا يكون سريعًا وواعيًا بالسياق وقابلًا للضبط.
تم تدريب OpenAI Privacy Filter مسبقًا بشكل انحداري ذاتي للوصول إلى نقطة تفتيش بمعمارية مشابهة لـ gpt-oss، وإن كانت بحجم أصغر. ثم قمنا بتحويل نقطة التفتيش تلك إلى مصنّف رموز ثنائي الاتجاه وفق تصنيف تسميات الخصوصية، وأعدنا تدريبه بخسارة تصنيف خاضعة للإشراف. (للاطلاع على تفاصيل معمارية gpt-oss، يرجى الرجوع إلى بطاقة نموذج gpt-oss.) بدلًا من توليد النص رمزًا برمز، يقوم هذا النموذج بوسم تسلسل الإدخال في تمريرة أمامية واحدة، ثم يفك ترميز النطاقات المتماسكة بإجراء Viterbi مقيّد. لكل رمز إدخال، يتنبأ النموذج بتوزيع احتمالي على تصنيف التسميات الذي يتكون من 8 فئات مخرجات موصوفة أدناه.
أبرز الميزات:
يحتوي هذا المستودع على الكود المحلي وواجهة سطر الأوامر والأصول المثالية المستخدمة لتشغيل نقاط تفتيش Privacy Filter وتقييمها وضبطها الدقيق. وهو مخصص للفرق التي تريد فحص التنفيذ مباشرة وتشغيل النموذج في بيئتها الخاصة.
موارد المستودع: الترخيص وسياسة الأمان.
pip install -e .
بعد ذلك، سيكون لديك سكربت بايثون باسم opf يمكن تشغيله مباشرة أو عبر python -m opf. يمكن استخدام السكربت بثلاث طرق منفصلة، كما هو موضح أدناه.
بشكل افتراضي، يبحث opf عن نموذج في الدليل الذي يشير إليه متغير OPF_CHECKPOINT، أو ~/.opf/privacy_filter. إذا لم يتم العثور على نموذج في موقع ~/.opf/privacy_filter، فسيتم تنزيله.
opf "Alice was born on 1990-01-02."
يدعم الكود التشغيل على GPU (بشكل افتراضي) وعلى CPU. للتشغيل على CPU، استخدم علم --device cpu:
opf --device cpu "Alice was born on 1990-01-02."
لتجاوز نقطة التفتيش الافتراضية، مرّر --checkpoint:
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."
يدعم وضع الإخفاء إخفاء ملف كامل دفعة واحدة
opf -f /path/to/file
يمكن أيضًا تنفيذ الإخفاء عبر الأنابيب، لدعم أوامر مركبة معقدة:
cat /path/to/file | grep -e 'some_pattern' | opf
إذا لم يتم توفير أي إدخال، سيبدأ opf في الوضع التفاعلي. في هذا الوضع، لكل مثال إدخال، تطبع واجهة سطر الأوامر مخرجات JSON منظمة، باستخدام معاينات مرمّزة بالألوان ANSI إذا كان الطرفية تدعم ذلك. يمكن التحكم في هذه الخيارات عبر الأعلام.
راجع opf redact --help لمزيد من الأعلام والمعلومات حول وضع الإخفاء.
opf eval examples/data/sample_eval_five_examples.jsonl
ملفات التقييم المثالية تحت examples/data/sample_eval_five_examples*.jsonl هي بيانات مثالية اصطناعية فقط ولا تصف أشخاصًا حقيقيين أو سجلات حساسة حقيقية. راجع examples/data/README.md.
راجع opf eval --help لمزيد من الأعلام والمعلومات حول وضع التقييم.
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint
راجع opf train --help لمزيد من الأعلام والمعلومات حول وضع الضبط الدقيق.
opf/__main__.py: نقطة دخول موحدة لواجهة سطر الأوامر لأوضاع redact وeval وtrain.opf/_api.py: واجهة برمجية موجهة لبايثون فوق حزمة وقت التشغيل وفك الترميز.opf/_cli/: تحليل وسائط سطر الأوامر وأدوات مساعدة للعرض في الطرفية.opf/_core/: تحميل وقت التشغيل وتحويل النطاقات ومنطق فك الترميز المشترك.opf/_eval/: تحميل مجموعات البيانات والمعالجة المسبقة والمقاييس ومشغلات التقييم.opf/_train/: تحليل وسائط الضبط الدقيق المحلي ومشغلات التدريب.opf/_model/: تنفيذ المحوّل وإعداد نقطة التفتيش وتحميل الأوزان.examples/data/: ملفات تقييم مثالية بالإضافة إلى مجموعات بيانات تجريبية قابلة لإعادة الإنتاج للضبط الدقيق.examples/scripts/finetuning/: أدوات تجريبية قابلة للتشغيل للضبط الدقيق.FINETUNING.md: دليل مركّز لسير عمل الضبط الدقيق وسكربتات العرض التوضيحي.OUTPUT_SCHEMAS.md: تنسيقات استجابة JSON وحمولات التصدير.EVAL_AND_OUTPUT_MODES.md: وصف أوضاع المخرجات للإخفاء والتقييم.Privacy Filter هو نموذج تصنيف رموز ثنائي الاتجاه مع فك ترميز النطاقات. يتم تدريبه على مراحل، بدءًا من التدريب المسبق الانحداري الذاتي. ثم يتم تعديل نموذج اللغة المُدرَّب مسبقًا وإعادة تدريبه كمصنّف رموز ثنائي الاتجاه بانتباه نطاقي بحجم نطاق 128 (نافذة الانتباه الفعلية: 257 رمزًا بما في ذلك الذات). وهذا يعني:
معماريًا، التنفيذ في هذا المستودع هو حزمة على نمط مُرمِّز محوّل بمعيار مسبق مع:
d_model = 640.مقارنة بالأساليب الانحدارية الذاتية التكرارية، يتيح هذا التصميم وسم جميع الرموز في تمريرة واحدة، مما يحسّن الإنتاجية. مقارنة بأساليب التدريب المسبق الكلاسيكية لنموذج اللغة المقنّع، هذا تحويل بعد التدريب لنموذج انحداري ذاتي بدلًا من إعداد masked-LM أصلي.
يمكن لـ Privacy Filter اكتشاف 8 فئات لنطاقات الخصوصية:
account_numberprivate_addressprivate_emailprivate_personprivate_phoneprivate_urlprivate_datesecretلإجراء تصنيف الرموز، يتم توسيع كل فئة نطاق غير خلفية إلى فئات رموز موسومة بالحدود: B-<label>، I-<label>، E-<label>، S-<label>، بالإضافة إلى فئة الخلفية، O. لذا فإن العدد الإجمالي لفئات المخرجات على مستوى الرمز هو 33: فئة خلفية واحدة + 8 تسميات نطاق * 4 وسوم حدود = 33 فئة. وهذا يعني أن رأس المخرجات يُصدر 33 قيمة logit لكل رمز. لتسلسل بطول T، يكون للمخرجات شكل [T, 33]؛ ولدفعة بحجم B، يكون لها شكل [B, T, 33].
تتكون مفردات تسميات الرموز من تسمية الخلفية O بالإضافة إلى متغيرات موسومة بـ BIOES لكل فئة خصوصية: account_number، private_address، private_email، private_person، private_phone، private_url، private_date، وsecret. بعبارة أخرى، لكل فئة، يتنبأ النموذج بأشكال B- وI- وE- وS- المقابلة لنطاقات البداية والداخل والنهاية والرمز الواحد. في وقت الاستدلال، يتم فك ترميز قيم logit لكل رمز إلى تسميات نطاقات BIOES متماسكة باستخدام فك ترميز تسلسلي مقيّد.
بعد أن ينتج مصنّف الرموز قيم logit لكل رمز، نفك ترميز التسميات بفاك ترميز Viterbi مقيّد باستخدام تسجيل انتقالي بسلسلة خطية، بدلًا من أخذ argmax مستقل لكل رمز. يفرض الفاك انتقالات حدود BIOES المسموح بها ويسجّل مسارات التسميات الكاملة بشروط البداية والانتقال والنهاية، بالإضافة إلى ستة معاملات تحيّز انتقالي تتحكم في استمرارية الخلفية ودخول النطاق واستمرار النطاق وإغلاق النطاق والتسليم من حد إلى حد. يهدف هذا التحسين الشامل للمسار إلى تحسين تماسك النطاق واستقرار الحدود من خلال جعل كل قرار رمز يعتمد على بنية على مستوى التسلسل، وليس فقط على قيم logit المحلية، خاصة في النصوص المزعجة أو المختلطة التنسيق حيث يمكن لقرارات الرموز المحلية وحدها أن تنتج حدودًا مجزأة أو غير متسقة.