تطبيق لإخفاء الهوية في المستندات النصية تلقائيًا باستخدام تقنيات الذكاء الاصطناعي. يكتشف التطبيق الأسماء (PERSON)، والمنظمات (ORG)، والمواقع (GPE) ويستبدلها إما ببيانات وهمية أو برموز مثل [REDACTED].
تم بناء هذا المشروع كجزء من مهمة أكاديمية لمعالجة المستندات وإخفاء الهوية باستخدام نموذج Zero-shot NER (NuNER).
- ✅ دعم تحميل ملفات
.txtو.docx. - ✅ دعم اختياري لملفات
.pdf(استخراج نص فقط). - ✅ استخدام نموذج NuNER Zero-shot للتعرف على الكيانات دون الحاجة لتدريب مسبق.
- ✅ استبدال الكيانات الحساسة ببيانات وهمية (باستخدام
Faker) أو برموز مخصصة. - ✅ إعادة بناء المستندات المخفية بنفس التنسيق الأصلي (لملفات
.txtو.docx). - ✅ واجهة مستخدم تفاعلية في Google Colab.
- ✅ واجهة برمجة تطبيقات (REST API) للاستخدام الآلي.
- ✅ دعم نمط استبدال مخصص (مثل
*****أو[REDACTED]).
نظرًا لأن المشروع يستخدم نموذجًا كبيرًا للذكاء الاصطناعي، فإن أسهل طريقة لتشغيله هي عبر Google Colab.
-
افتح المشروع في Colab:
(سيتم إضافة الرابط بعد رفع الكود على GitHub)
-
شغّل الخلايا بالترتيب: ابدأ بخلية تثبيت المكتبات وانتهي بتشغيل التطبيق أو الـ API.
-
لواجهة المستخدم:
- شغّل خلية
app.py. - ارفع ملفك.
- اختر أنواع الكيانات (
PERSON, ORG, GPE). - اختر نمط الاستبدال.
- احصل على الملف المخفي!
- شغّل خلية
-
لـ REST API:
- شغّل خلية
api.py. - احصل على رابط عام من
ngrok. - أرسل طلبات POST إلى
/anonymizeمع الملف والإعدادات.
- شغّل خلية
text-anonymizer-nuner-zero/ │ ├── app.py # واجهة المستخدم التفاعلية (Colab) ├── api.py # خادم REST API (مع ngrok) ├── core.py # النواة الأساسية (نموذج NuNER, Faker) ├── file_handlers.py # معالجة الملفات (.txt, .docx, .pdf) ├── utils.py # دوال مساعدة (مثل دمج الكيانات) └── requirements.txt # قائمة المكتبات المطلوبة
- Python 3.8+
- المكتبات المذكورة في
requirements.txt:gliner(لنموذج NuNER Zero-shot)python-docx,pdfplumberFakerFlask,pyngrok
تم إرفاق تقرير منفصل يشرح بالتفصيل:
- اختيار النموذج (NuNER Zero-shot) وأسبابه.
- هندسة النظام (من تحميل الملف إلى إخراج الناتج).
- التحديات التي واجهتنا (مثل دقة النموذج، الحفاظ على تنسيق .docx) وكيف تم حلها.
- أمثلة قبل وبعد إخفاء الهوية.
(سيتم رفع ملف REPORT.pdf في المستودع)
هذا مشروع أكاديمي، ولكن أي اقتراحات أو تحسينات مرحب بها!
- عمل فورك (Fork) للمستودع.
- إنشاء فرع (Branch) جديد للخاصية التي تريد إضافتها (
git checkout -b feature/YourFeature). - عمل commit للتغييرات (
git commit -m 'Add some feature'). - دفع الفرع (
git push origin feature/YourFeature). - فتح طلب سحب (Pull Request).
هذا المشروع مفتوح المصدر بموجب ترخيص MIT. للتفاصيل، انظر ملف LICENSE.
لأي استفسار:
تم التطوير باستخدام ❤️ في Google Colab