إسماعيل بن علا

Text Classification

كشف المشاعر بشبكات RNN وLSTM وGRU

معالجة اللغات الطبيعية · نونبر 2024 · قيد الإنجاز

اثنا عشر نموذجاً تكرارياً يقرأ الجملة ويسمّي مشاعرها، أُعيد بناؤها من دفترين معطوبين في حزمة واحدة مختبَرة.

التقنياتPyTorchGloVeNLTKPandasMatplotlibpytest

Text Classification — نظرة عامة

نظرة عامة

بدأ هذا المشروع كدفتري Colab يصنّفان جملاً إنجليزية إلى ست مشاعر بنماذج RNN وLSTM وGRU. بلغت الدفاتر دقة اختبار بين 50 و81.5% ولم أثق بالأرقام. أعدت بناءها كحزمة Python بوصفة تدريب واحدة مشتركة واكتشفت السبب: الخلايا المبنية من الصفر لم تكن تكرارية، والحشو (padding) كان يتسرب إلى التنبؤ، ومعادلة GRU كانت خاطئة، والتقييم كان متفائلاً.

تحتفظ الحزمة بأفكار الدفاتر: ثلاثة أنواع من الخلايا، كل منها مبني مرتين (بوحدات nn.RNN / nn.LSTM / nn.GRU ومن الصفر)، تُغذّى إما بجدول تضمين (embedding) متعلَّم على نص مردود إلى جذوره (lemmatised) أو بمتجهات GloVe مجمَّدة ببُعد 100 على النص الخام. ينتج عن ذلك 12 نموذجاً، كلها بطبقتين وثنائية الاتجاه برأس MLP نفسه، مدرَّبة حتى 8 حقب على CPU مع إيقاف مبكر على دقة التحقق، على مجموعة بيانات dair-ai/emotion (16,000 تدريب / 2,000 تحقق / 2,000 اختبار).

كل نموذج يستقر الآن عند دقة اختبار بين 91 و92% مع F1 كلي (macro F1) بين 0.87 و0.88؛ وأفضلها glove-lstm-scratch عند 92.3%. الخلايا المبنية من الصفر تطابق خلايا PyTorch عددياً، وهو ما تثبته الاختبارات بنسخ أوزان PyTorch إليها. الأخطاء المتبقية في الفئات المتقاربة: love تُحسب joy، وsurprise تُحسب fear.

السؤال

لماذا تراوحت دقة دفاتري الأصلية بين 50% و81.5% على المهمة نفسها، وهل يبقى لنوع الخلية والتضمين أثر بعد تصحيح خط المعالجة (pipeline)؟

أهم الميزات

كيف يعمل

  1. تنظيف النص

    تحويل إلى أحرف صغيرة والاحتفاظ بالحروف والأرقام وعلامات الترقيم الأساسية؛ تحذف تشغيلات one-hot أيضاً الكلمات النادرة وكلمات التوقف (مع الاحتفاظ بأدوات النفي) وتردّ الكلمات إلى جذورها بـ NLTK، بينما تستخدم تشغيلات GloVe الكلمات الخام.

  2. التضمين

    معرّفات الرموز تفهرس جدولاً متعلَّماً بحجم 3,100 x 100، أو متجهات GloVe مجمَّدة بصف صفري للحشو والمتجه المتوسط للكلمات المجهولة.

  3. قراءة الجملة

    شبكة RNN أو LSTM أو GRU ثنائية الاتجاه بطبقتين تمر على الرموز؛ والحالة عند آخر رمز حقيقي في كل اتجاه هي ملخص الجملة.

  4. التصنيف

    Dropout، ورأس Linear-ReLU-Linear، وsoftmax بست مخرجات، مدرَّبة بإنتروبيا متقاطعة بتنعيم التسميات.

  5. التحقق قبل الثقة

    فرط تخصيص دفعة حقيقية واحدة، ومقارنة مع نموذج معمّى، والتأكد من وصول التدرجات إلى كل موتّر (tensor)، ثم التدريب حتى 8 حقب والاحتفاظ بأفضل حقبة تحقق.

أمثلة

دقة اختبار النماذج الـ12 في الدفاتر الأصلية (رمادي) مقابل الحزمة المصحَّحة (أزرق): من 50 إلى 81.5% صعوداً إلى 91 إلى 92%.
دقة اختبار النماذج الـ12 في الدفاتر الأصلية (رمادي) مقابل الحزمة المصحَّحة (أزرق): من 50 إلى 81.5% صعوداً إلى 91 إلى 92%.
اختبار فرط التخصيص: كل نموذج يحفظ دفعة واحدة من 64 جملة حقيقية، فيدفع الخسارة من ln 6 إلى نحو الصفر. القفزة في شبكة RNN من الصفر بتضمين one-hot حول الخطوة 65 هي عدم الاستقرار المعروف لشبكات RNN العادية بتنشيط ReLU؛ وتتعافى من تلقاء نفسها.
اختبار فرط التخصيص: كل نموذج يحفظ دفعة واحدة من 64 جملة حقيقية، فيدفع الخسارة من ln 6 إلى نحو الصفر. القفزة في شبكة RNN من الصفر بتضمين one-hot حول الخطوة 65 هي عدم الاستقرار المعروف لشبكات RNN العادية بتنشيط ReLU؛ وتتعافى من تلقاء نفسها.
دقة التحقق في كل حقبة. الخطوط المتصلة خلايا nn.* والمتقطعة الخلايا المبنية من الصفر؛ يبدأ GloVe أبطأ من الجدول المتعلَّم ويلحق به عند الحقبة 5.
دقة التحقق في كل حقبة. الخطوط المتصلة خلايا nn.* والمتقطعة الخلايا المبنية من الصفر؛ يبدأ GloVe أبطأ من الجدول المتعلَّم ويلحق به عند الحقبة 5.
مصفوفة التباس الاختبار لـ glove-lstm-scratch، أفضل نموذج (92.3%): الأخطاء هي love المتنبَّأ بها joy (32 من 159)، وsurprise وfear المختلطتان إحداهما بالأخرى.
مصفوفة التباس الاختبار لـ glove-lstm-scratch، أفضل نموذج (92.3%): الأخطاء هي love المتنبَّأ بها joy (32 من 159)، وsurprise وfear المختلطتان إحداهما بالأخرى.

المدخل

textcls-predict --checkpoint checkpoints/glove-lstm-scratch/best.pt "i didnt feel humiliated" "i feel amazing today, everything went right"

المخرج

sadness 0.98 (anger 0.01, fear 0.00) <- i didnt feel humiliated surprise 0.88 (joy 0.10, fear 0.01) <- i feel amazing today, everything went right

مخرجات حقيقية لأفضل نموذج. السطر الثاني خطأ (ينبغي أن يكون joy): في مجموعة التدريب تحمل «amazing» تسمية surprise في 39 مرة من 121، أي عشرة أضعاف المعدل الأساسي لتلك الفئة.

التقنيات المستخدمة

ما تعلمته

الحدود

الكلمات المفتاحية

تصنيف النصوص · كشف المشاعر · تحليل المشاعر · RNN · LSTM · GRU · الشبكات العصبية التكرارية · من الصفر · RNN ثنائي الاتجاه · GloVe · تضمينات الكلمات · تضمين one-hot · NLP · dair-ai/emotion · macro F1 · مصفوفة الالتباس · PyTorch · NLTK · اختبار فرط التخصيص · فحوص السلامة