Создайте собственную модель классификации текста и обновите с ее помощью свои приложения.

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

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

Предварительные требования

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

  • Создайте простое приложение для обмена сообщениями.
  • Создайте модель машинного обучения для выявления спама в комментариях.
  • Обновите свое приложение, чтобы оно использовало модель машинного обучения для фильтрации спама.

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

  • Как обновить модель классификации текста, созданную вами в разделе «Начало работы с мобильной классификацией текста»
  • Как настроить вашу модель таким образом, чтобы она блокировала наиболее распространенные спам-сообщения в вашем приложении.

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

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

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

Код можно получить, клонировав этот репозиторий и загрузив приложение из TextClassificationStep2 . Он находится по пути TextClassificationOnMobile->Android .

Готовый код также доступен вам в виде TextClassificationStep3 .

Если вы откроете созданное вами приложение для обмена сообщениями и попробуете отправить это сообщение, оно получит очень низкий рейтинг спама:

f111e21903d6fd1f.png

Подобные орфографические ошибки — распространённый способ обойти спам-фильтры. И хотя само сообщение безобидно, спамеры часто добавляют ссылку в идентификатор пользователя (вместо самого сообщения, где наличие ссылки могло бы вызвать срабатывание фильтров).

В этой лабораторной работе вы узнаете, как обновить модель новыми данными. После завершения, при запуске программы с тем же предложением, вы получите результат, показанный ниже, где это сообщение помечено как спам!

c96613a0a4d1fef0.png

3. Отредактируйте свой CSV-файл.

Для обучения исходной модели был создан набор данных в формате CSV ( lmblog_comments.csv ), содержащий почти тысячу комментариев, помеченных как спам или не спам. (Откройте CSV-файл в любом текстовом редакторе, если хотите его просмотреть.)

Структура CSV-файла такова, что первая строка описывает столбцы – в данном случае они обозначены как commenttext и spam .

Каждая последующая строка имеет следующий формат:

64c0128548e1d082.png

Метка справа означает «истина» для спама и «ложь» для не-спама. В данном случае строка 3 считается спамом.

Чтобы добавить свои комментарии, например, если ваш сайт завален спамом о торговле в интернете, вам достаточно добавить примеры спам-комментариев внизу страницы. Например:

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 ), и вы сможете использовать его для обучения новой модели.

В оставшейся части этого практического занятия вы будете использовать предоставленный пример, отредактированный и размещенный в Google Cloud Storage вместе с обновлениями онлайн-торговли. Вы можете изменить URL-адрес в коде, если хотите использовать свой собственный набор данных!

4. Переобучите модель с использованием новых данных.

Для переобучения модели вы можете просто повторно использовать код из предыдущего примера ( SpamCommentsModelMaker.ipynb ), но укажите в нем новый CSV-набор данных, который называется lmblog_comments_extras.csv . Если вам нужен полный блокнот с обновленным содержимым, вы найдете его по адресу SpamCommentsUpdateModelMaker.ipynb.

Если у вас есть доступ к Google Colab, вы можете запустить его напрямую отсюда , в противном случае получите код из репозитория и запустите его в выбранной вами среде для создания ноутбуков.

Вот обновлённый код:

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)

В процессе обучения вы должны убедиться, что модель продолжает демонстрировать высокий уровень точности:

8886033d1f8161c.png

Просмотрите блокнот, чтобы загрузить файлы модели , словаря и меток . На следующем шаге вы интегрируете их в Android.

5. Обновите приложение для Android.

  1. Откройте приложение в Android Studio и убедитесь, что в верхней части обозревателя проекта выбрано приложение Android .
  2. Найдите файл assets , содержащий метки, модель и словарь из старой версии файла модели.

91116524e9016ed4.png

  1. Щелкните правой кнопкой мыши папку assets.
  2. В меню выберите опцию открытия папки с помощью файлового менеджера вашей операционной системы. (На Mac выберите «Показать в Finder» , как показано на рисунке. В Windows это будет «Показать в проводнике» , а в Linux — «Открыть в Файлах» или аналогичная опция.)

25f63f9629657e85.png

  1. Это откроет в файловом менеджере вашей операционной системы папку, содержащую модель, словарь и метки. Скопируйте новые метки, созданные на предыдущем шаге, поверх этих.

Вам не нужно вносить никаких изменений в код вашего приложения. Запустите его и протестируйте, и вы увидите результаты, подобные приведенным выше, где модель улучшилась для распознавания текстового сценария "онлайн-торговля".

Завершённая версия кода доступна в репозитории под названием TextClassificationStep3.

6. Обновите ваше iOS-приложение.

Код можно получить, клонировав этот репозиторий и загрузив приложение из TextClassificationStep2 . Он находится по пути TextClassificationOnMobile->Android .

Готовый код также доступен вам в виде TextClassificationStep3 .

Если вы выполнили предыдущую практическую работу, у вас будет iOS-версия TextClassificationStep2, работающая с базовой моделью. Если вы хотите начать с нашей существующей версии, просто возьмите её из репозитория. Она будет работать с первой моделью, обученной на данных о спаме в комментариях, и вы можете увидеть результаты, подобные этим:

553b845565b5b822.png

Обновить приложение для использования вашей новой модели очень просто. Самый простой способ — просто открыть файловый менеджер, получить новые версии файлов model.tflite , vocab и labels.txt и скопировать их в каталог вашего проекта.

После этого ваше приложение будет работать с новой моделью, и вы сможете его протестировать. Вот пример того же предложения, но с использованием новой модели:

9031ec260b1857a3.png

7. Поздравляем!

Вот и всё! Переобучив модель на новых данных и добавив её в свои приложения для Android и iOS, вы смогли обновить их функциональность без написания нового кода!

Следующие шаги

Эта модель — всего лишь учебная, обученная всего на 1000 элементах данных.

В процессе изучения обработки естественного языка вам может потребоваться работать с большими наборами данных. Вы также можете настроить конвейер непрерывного обучения, чтобы при поступлении новых данных, помеченных как спам, модель автоматически переобучалась на бэкэнде, а затем развертывалась с помощью Firebase Model Hosting.

Ваши пользователи без проблем получат обновленную модель, без необходимости копировать и вставлять ее как ресурс, перекомпилировать и распространять. Вы также можете, например, использовать Firebase Remote Config для управления пороговым значением для отправки спама, вместо текущего значения 0,8.

Возможностей очень много, и мы рассмотрим их на будущих практических занятиях в рамках этого курса!