1. قبل البدء
في هذا الدرس التطبيقي، ستتعرّف على كيفية تعديل نموذج تصنيف النصوص الذي تم إنشاؤه من مجموعة البيانات الأصلية الخاصة بتعليقات البريد الإلكتروني غير المرغوب فيه على المدونات، ولكن تم تحسينه باستخدام تعليقاتك الخاصة حتى تتمكّن من الحصول على نموذج يعمل مع بياناتك.
المتطلبات الأساسية
يشكّل هذا الدرس العملي جزءًا من مسار "بدء استخدام تصنيف النصوص في تطبيقات Flutter". تكون الجلسات التدريبية في هذا المسار متسلسلة. يجب أن يكون التطبيق والنموذج اللذان ستعمل عليهما قد تم إنشاؤهما سابقًا أثناء اتّباعك للدروس البرمجية. إذا لم تكن قد أكملت الأنشطة السابقة بعد، يُرجى التوقّف وإكمالها الآن:
- تدريب نموذج لرصد التعليقات غير المرغوب فيها باستخدام الدرس التطبيقي حول الترميز في TensorFlow Lite Model Maker
- درس تطبيقي حول إنشاء تطبيق Flutter لرصد التعليقات غير المرغوب فيها
أهداف الدورة التعليمية
- كيفية تعديل نموذج تصنيف النصوص الذي أنشأته في الدرس التطبيقي حول الترميز "تدريب نموذج لرصد التعليقات غير المرغوب فيها باستخدام أداة Model Maker في TensorFlow Lite"
- كيفية تخصيص النموذج لحظر الرسائل غير المرغوب فيها الأكثر شيوعًا في تطبيقك
المتطلبات
- تطبيق Flutter ونموذج فلتر الرسائل غير المرغوب فيها اللذان لاحظتهما وأنشأتهما في الأنشطة السابقة
2. تحسين تصنيف النصوص
- يمكنك الحصول على الرمز البرمجي لهذا التطبيق من خلال استنساخ هذا المستودع وتحميل التطبيق من المجلد
tfserving-flutter/codelab2/finished
. - بعد بدء صورة TensorFlow Serving Docker، أدخِل
buy my book to learn online trading
في التطبيق الذي أنشأته، ثم انقر على gRPC > تصنيف.
يُنشئ التطبيق نتيجة منخفضة للرسائل غير المرغوب فيها لأنّ التداول على الإنترنت لا يتكرّر كثيرًا في مجموعة البيانات الأصلية، ولم يتعلّم النموذج أنّه رسالة غير مرغوب فيها. في هذا الدرس العملي، ستعدّل النموذج باستخدام بيانات جديدة لكي يتمكّن من تصنيف الجملة نفسها كرسالة غير مرغوب فيها.
3- تعديل ملف CSV
للتدريب على النموذج الأصلي، تم إنشاء مجموعة بيانات كملف CSV (lmblog_comments.csv
) يحتوي على ألف تعليق تقريبًا مصنّف على أنّه غير مرغوب فيه أو غير ذلك. (افتح ملف CSV في أي محرِّر نصوص إذا أردت فحصه).
يجب أن يصف الصف الأول في ملف CSV الأعمدة التي تحمل التصنيفين commenttext
وspam
. تتّبع كل صفوف لاحقة هذا التنسيق:
تمّ تخصيص القيمة 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)
عند التدريب، من المفترض أن تلاحظ أنّ النموذج لا يزال يتدرب على مستوى عالٍ من الدقة:
اضغط المجلد الكامل الذي يحتوي على /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
- فُك ضغط ملف
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
- افتح ملف
lib/main.dart
باستخدام أداة تعديل الرموز المفضّلة لديك، ثم ابحث عن الجزء الذي يحدّد المتغيّرَينinputTensorName
وoutTensorName
:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- أعِد تعيين المتغير
inputTensorName
إلى قيمةinput_1'
والمتغيرoutputTensorName
إلى قيمة'dense_1'
:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- انسخ ملف
vocab.txt
الذي نزّلته إلى المجلدlib/assets/
لاستبدال الملف الحالي. - أزِل تطبيق Text Classification Flutter يدويًا من محاكي Android.
- شغِّل الأمر
'flutter run'
في الوحدة الطرفية لتشغيل التطبيق. - في التطبيق، أدخِل
buy my book to learn online trading
ثم انقر على gRPC > تصنيف.
وقد تم تحسين النموذج الآن لرصد عبارة "شراء كتابي مقابل التداول على الإنترنت" كمحتوى غير مرغوب فيه.
6. تهانينا
أعدت تدريب النموذج باستخدام بيانات جديدة، ودمجته مع تطبيق Flutter، وعدّلت الوظيفة لرصد الجُمل الجديدة غير المرغوب فيها.