Создайте пользовательскую модель классификации текста с помощью 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' :
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 и обновили функционал для обнаружения новых спам-предложений!

Узнать больше