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

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 и убедитесь, что в верхней части проводника проекта выбран Android .
  2. Найдите файл assets , содержащий метки, модель и словарь из старой версии файла модели.

91116524e9016ed4.png

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

25f63f9629657e85.png

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

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

Готовая версия кода доступна в репозитории как TextClassificationStep3.

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

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

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

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

553b845565b5b822.png

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

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

9031ec260b1857a3.png

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

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

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

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

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

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

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