1. Прежде чем начать
В этой лабораторной работе вы узнаете, как обновить модель классификации текста, созданную на основе исходного набора данных blog-spam-comments, но дополнив ее вашими собственными комментариями, чтобы получить модель, работающую с вашими данными.
Предпосылки
Эта практическая работа является частью курса «Начало работы с классификацией текста в приложениях Flutter» . Практические работы в этом курсе выполняются последовательно. Приложение и модель, над которыми вы будете работать, должны были быть созданы ранее, пока вы выполняли эти задания. Если вы ещё не выполнили предыдущие задания, пожалуйста, остановитесь и сделайте это сейчас:
- Обучение модели обнаружения спама в комментариях с помощью практической работы TensorFlow Lite Model Maker
- Создание приложения Flutter для обнаружения спама в комментариях. Практикум.
Чему вы научитесь
- Как обновить модель классификации текста, созданную вами в ходе практической работы «Обучение модели обнаружения спама в комментариях с помощью TensorFlow Lite Model Maker» .
- Как настроить модель так, чтобы она блокировала наиболее распространенный спам в вашем приложении.
Что вам понадобится
- Приложение Flutter и модель спам-фильтра, которые вы наблюдали и построили в предыдущих упражнениях.
2. Улучшить классификацию текста
- Вы можете получить код для этого кода, клонировав этот репозиторий и загрузив приложение из папки
tfserving-flutter/codelab2/finished
. - После запуска образа TensorFlow Serving Docker в созданном вами приложении введите
buy my book to learn online trading
, а затем нажмите gRPC > Classify .
Приложение генерирует низкий рейтинг спама, поскольку в исходном наборе данных не так много упоминаний онлайн-торговли , и модель не определила, что это спам. В этой лабораторной работе вы обновляете модель новыми данными, чтобы она идентифицировала одно и то же предложение как спам!
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
, чтобы его можно было использовать для обучения новой модели.
В оставшейся части этой практической работы вы будете использовать предоставленный пример, отредактированный и размещённый в облачном хранилище вместе с обновлениями онлайн-торговли. Если вы хотите использовать собственный набор данных, вы можете изменить 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 и обновили функционал для обнаружения новых спам-предложений!