تفاصيل العمل

يقرأ هذا النظام نص إعلان الوظيفة ويقرر إن كان حقيقيا أو احتياليا، ويكتب بجانب النتيجة شرحا قصيرا لسبب القرار حتى يعرف المستخدم لماذا صُنف الإعلان بهذا الشكل.

اشتغلت على بيانات Real or Fake Job Postings من Kaggle، وفيها 17,880 إعلانا منها 4.8% فقط مزيفة. هذه النسبة الصغيرة كانت أصعب جزء في المشروع، لأن أي نموذج يقول إن كل الإعلانات حقيقية سيحصل على دقة 95% تقريبا وهو لا يكتشف أي إعلان مزيف. لذلك اعتمدت في المقارنة على F1 وRecall بدل الدقة، وثبتت تقسيم البيانات في كل التجارب (72% تدريب و8% تحقق و20% اختبار) حتى تكون المقارنة عادلة.

بدأت بتنظيف النص. جمعت العنوان والوصف والمتطلبات في نص واحد، وحذفت وسوم HTML والروابط وعلامات الترقيم والكلمات الشائعة، ثم أرجعت الكلمات إلى أصلها باستخدام NLTK. بعد ذلك حولت النص إلى خصائص TF-IDF بحد أقصى 5000 خاصية وأضفت إليها خصائص عن طول النص، واستخدمت SMOTE على بيانات التدريب فقط لتعويض قلة الإعلانات المزيفة.

جربت أكثر من 10 نماذج. بدأت بنماذج تقليدية مثل Logistic Regression وRandom Forest وXGBoost، ثم شبكات تكرارية في Keras مثل LSTM وGRU والنسخ ثنائية الاتجاه منها، وفي الآخر BERT مرة كمستخرج خصائص ومرة بضبط دقيق كامل عن طريق HuggingFace. أفضل نتيجة جاءت من BiLSTM بمقياس F1 بلغ 0.78 ودقة 97.87% وROC-AUC بقيمة 0.9684. أما BiGRU فكان الأقدر على اكتشاف الإعلانات المزيفة، إذ اكتشف 139 من 173 إعلانا مزيفا في بيانات الاختبار. وBERT لم يتفوق هنا لأني اضطررت لقص النص إلى 64 كلمة بسبب حدود ذاكرة كرت الشاشة على Colab.

لجزء التفسير بنيت نظام RAG. حولت كل الإعلانات إلى متجهات بنموذج all-MiniLM-L6-v2 وخزنتها في FAISS، فعند فحص أي إعلان يرجع النظام أقرب 5 إعلانات له في أجزاء من الثانية. ثم كتبت وكيلا بمكتبة LangChain يأخذ نتيجة النموذج والإعلانات المشابهة ويرسلها إلى GPT-3.5 ليكتب شرحا من 3 إلى 5 جمل، وإذا لم يتوفر مفتاح API يعمل بديل بسيط يعتمد على كلمات مفتاحية.

جمعت كل ذلك في واجهة Gradio. يلصق المستخدم نص الإعلان فيظهر له التصنيف ونسبة الثقة والإعلانات المشابهة والشرح، والعملية كلها تأخذ أقل من ثانيتين.

نفذت المشروع بلغة Python ومكتبات scikit-learn وTensorFlow/Keras وHuggingFace Transformers وFAISS وLangChain وGradio، وكان التدريب على Google Colab.

ملفات مرفقة

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
تاريخ الإضافة
تاريخ الإنجاز
المهارات