إنشاء نموذج مخصّص لتصنيف النص باستخدام أداة إنشاء النماذج TensorFlow Lite

1. قبل البدء

في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية تعديل نموذج تصنيف النص الذي تم إنشاؤه من مجموعة البيانات الأصلية المتعلقة بالتعليقات غير المرغوب فيها على المدوّنات، ولكن تم تحسينه من خلال إضافة تعليقات خاصة بك حتى تتمكّن من إنشاء نموذج يتوافق مع بياناتك.

المتطلّبات الأساسية

يشكّل هذا الدرس التطبيقي جزءًا من البدء في تصنيف النص في مسار تطبيقات Flutter. الدروس التطبيقية حول الترميز في هذا المسار متسلسلة. يجب أن يتم إنشاء التطبيق والنموذج الذي ستعمل عليه في السابق، أثناء متابعة الدروس التطبيقية حول الترميز. إذا لم تكن قد أتممت الأنشطة السابقة بعد، يُرجى إيقافها الآن:

ما ستتعرَّف عليه

الأشياء التي تحتاج إليها

  • تطبيق Flutter ونموذج فلتر الرسائل غير المرغوب فيها الذي لاحظته وأنشأته في الأنشطة السابقة.

2. تحسين تصنيف النص

  1. يمكنك الحصول على الرمز لهذا الرمز عن طريق نسخ هذا المستودع وتحميل التطبيق من مجلد tfserving-flutter/codelab2/finished.
  2. بعد بدء صورة TensorFlow docker، في التطبيق الذي أنشأته، أدخِل buy my book to learn online trading، ثم انقر على gRPC > Classify.

8f1e1974522f274d.png

يحصل التطبيق على نتيجة منخفضة للمحتوى غير المرغوب فيه بسبب عدم توفّر عدد كبير من مواضع التداول على الإنترنت في مجموعة البيانات الأصلية، ولم يتعرّف النموذج على أنه محتوى غير مرغوب فيه. في هذا الدرس التطبيقي حول الترميز، يمكنك تعديل النموذج ببيانات جديدة بحيث يتعرّف النموذج على الجملة نفسها باعتبارها محتوى غير مرغوب فيه.

2bd68691a26aa3da.png

3- تعديل ملف CSV

لتدريب النموذج الأصلي، تم إنشاء مجموعة بيانات كملف CSV (lmblog_comments.csv) تحتوي على ما يقرب من ألف تعليق مصنّف إما كمحتوى غير مرغوب فيه أو ليس غير مرغوب فيه. (افتح ملف CSV في أي مُحرِّر نصوص إذا أردت فحصه.)

ويتألف ملف CSV من الصف الأول الذي يصف العمودين commenttext وspam. يتبع كل صف تالٍ التنسيق التالي:

62025273971c9a7f.png

يتم تعيين تصنيف على اليسار لقيمة true للمحتوى غير المرغوب فيه، وقيمة false بدلاً من الرسائل غير المرغوب فيها. مثلاً، يُعدّ السطر الثالث غير مرغوب فيه.

إذا أضاف الأشخاص محتوى غير مرغوب فيه إلى موقعك الإلكتروني باستخدام رسائل عن التداول على الإنترنت، يمكنك إضافة أمثلة للتعليقات غير المرغوب فيها في أسفل موقعك الإلكتروني. مثلاً:

online trading can be highly highly effective,true
online trading can be highly effective,true
online trading now,true
online trading here,true
online trading for the win,true
  • احفظ الملف باسم جديد، مثل lmblog_comments.csv، حتى تتمكن من استخدامه لتدريب نموذج جديد.

بالنسبة إلى بقية هذا الدرس التطبيقي، يمكنك استخدام المثال الذي تم توفيره وتعديله واستضافته على Cloud Storage مع تعديلات التداول على الإنترنت. إذا أردت استخدام مجموعة البيانات الخاصة بك، يمكنك تغيير عنوان URL في الرمز.

4. إعادة تدريب النموذج باستخدام البيانات الجديدة

لإعادة تدريب النموذج، يمكنك ببساطة إعادة استخدام الرمز من (SpamCommentsModelMaker.ipynb)، ولكن يمكنك توجيهه إلى مجموعة بيانات CSV الجديدة، والتي تحمل اسم lmblog_comments_extras.csv. وفي حال أردت الحصول على دفتر الملاحظات الكامل الذي يتضمّن المحتوى المعدَّل، يمكنك العثور عليه بالصيغة SpamCommentsUpdateModelMaker.ipynb..

إذا كان بإمكانك الوصول إلى Colaboratory، يمكنك إطلاقه مباشرةً. بخلاف ذلك، يمكنك الحصول على الرمز من المستودع ثم تشغيله في بيئة الكمبيوتر الدفتري التي تختارها.

يبدو الرمز الجديد مقتطف الرمز التالي:

training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',   
          origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
                  lmblog_comments_extras.csv', 
          extract=False)

عند التدريب، من المفترض أن تلاحظ أن النموذج يتدرب على مستوى عالٍ من الدقة:

96a1547ddb6edf5b.png

اضغط المجلد بالكامل من /mm_update_spam_savedmodel وأسفل ملف mm_update_spam_savedmodel.zip الذي تم إنشاؤه.

# Rename the SavedModel subfolder to a version number
!mv /mm_update_spam_savedmodel/saved_model /mm_update_spam_savedmodel/123
!zip -r mm_update_spam_savedmodel.zip /mm_update_spam_savedmodel/

5. بدء docker وتحديث تطبيق Flutter

  1. فك ضغط ملف mm_update_spam_savedmodel.zip الذي تم تنزيله في مجلد، ثم أوقِف مثيل حاوية docker من الدرس التطبيقي السابق وابدأ تشغيله مرة أخرى، ولكن استبدل العنصر النائب PATH/TO/UPDATE/SAVEDMODEL بالمسار المطلق للمجلد الذي يستضيف ملفاتك التي تم تنزيلها:
docker run -it --rm -p 8500:8500 -p 8501:8501 -v "PATH/TO/UPDATE/SAVEDMODEL:/models/spam-detection" -e MODEL_NAME=spam-detection tensorflow/serving
  1. افتح الملف lib/main.dart باستخدام محرِّر الرموز المفضّل لديك، ثم ابحث عن الجزء الذي يعرّف المتغيّرَين inputTensorName وoutTensorName:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
  1. أعِد ضبط المتغيّر inputTensorName إلى القيمة "input_1'" والمتغيّر outputTensorName إلى القيمة 'dense_1':
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
  1. انسخ ملف vocab.txt الذي نزّلته إلى مجلد lib/assets/ لاستبدال الملف الحالي.
  2. أزِل تطبيق Flutter يدويًا من محاكي Android.
  3. شغِّل الأمر 'flutter run' في الوحدة الطرفية لتشغيل التطبيق.
  4. في التطبيق، أدخِل buy my book to learn online trading ثم انقر على gRPC > Classify.

والآن، تم تحسين النموذج لاكتشاف شراء الكتاب للبيع عبر الإنترنت.

6- تهانينا

لقد أعدت تدريب النموذج على بيانات جديدة ودمجته مع تطبيق Flutter وعدّلت الوظيفة لاكتشاف جمل جديدة غير مرغوب فيها.

مزيد من المعلومات