Создайте пользовательскую модель классификации текста с помощью TensorFlow Lite Model Maker.
О практической работе
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'
значение «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 > Classify .
Теперь модель улучшена, чтобы определять покупку моей книги для онлайн-торговли как спам.
6. Поздравления
Вы переобучили модель с новыми данными, интегрировали ее с приложением Flutter и обновили функциональность для обнаружения новых спам-предложений!