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

1. قبل البدء

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

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

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

أهداف الدورة التعليمية

المتطلبات

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

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

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

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. أزِل تطبيق Text Classification Flutter يدويًا من محاكي Android.
  3. شغِّل الأمر 'flutter run' في الوحدة الطرفية لتشغيل التطبيق.
  4. في التطبيق، أدخِل buy my book to learn online trading ثم انقر على gRPC > تصنيف.

وقد تم تحسين النموذج الآن لرصد عبارة "شراء كتابي مقابل التداول على الإنترنت" كمحتوى غير مرغوب فيه.

6. تهانينا

أعدت تدريب النموذج باستخدام بيانات جديدة، ودمجته مع تطبيق Flutter، وعدّلت الوظيفة لرصد الجُمل الجديدة غير المرغوب فيها.

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