Создайте пользовательскую модель классификации текста с помощью TensorFlow Lite Model Maker.

1. Прежде чем начать

В этой лабораторной работе вы узнаете, как обновить модель классификации текста, созданную на основе исходного набора данных blog-spam-comments, но дополненную собственными комментариями, чтобы у вас была модель, которая работает с вашими данными.

Предпосылки

Эта лаборатория кода является частью пути « Начало работы с классификацией текста в приложениях Flutter» . Лаборатории кода на этом пути являются последовательными. Приложение и модель, над которой вы будете работать, должны были быть созданы ранее, пока вы следовали лабораторным кодам. Если вы еще не выполнили предыдущие действия, остановитесь и сделайте это сейчас:

Что вы узнаете

Что вам понадобится

  • Приложение Flutter и модель спам-фильтра, которые вы наблюдали и создавали в предыдущих действиях.

2. Улучшить классификацию текста

  1. Вы можете получить код для этого кода, клонировав этот репозиторий и загрузив приложение из tfserving-flutter/codelab2/finished .
  2. После запуска образа TensorFlow Serving 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 , чтобы использовать его для обучения новой модели.

Для остальной части этой кодовой лаборатории вы используете предоставленный пример, отредактированный и размещенный в облачном хранилище с обновлениями онлайн-торговли. Если вы хотите использовать свой собственный набор данных, вы можете изменить 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' значение «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 > Classify .

Теперь модель улучшена, чтобы определять покупку моей книги для онлайн-торговли как спам.

6. Поздравления

Вы переобучили модель с новыми данными, интегрировали ее с приложением Flutter и обновили функциональность для обнаружения новых спам-предложений!

Учить больше