1. Обзор
Добро пожаловать на практическое занятие по классификации текста с использованием TensorFlow Lite и Firebase. В этом практическом занятии вы узнаете, как использовать TensorFlow Lite и Firebase для обучения и развертывания модели классификации текста в вашем приложении. Практикум основан на этом примере TensorFlow Lite.
Классификация текста — это процесс присвоения тексту тегов или категорий в соответствии с его содержанием. Это одна из фундаментальных задач обработки естественного языка (NLP), имеющая широкое применение, например, анализ тональности текста, маркировка тем, обнаружение спама и определение намерений.
Анализ тональности — это интерпретация и классификация эмоций (положительных, отрицательных и нейтральных) в текстовых данных с использованием методов анализа текста. Анализ тональности позволяет компаниям определять отношение клиентов к продуктам, брендам или услугам в онлайн-общении и отзывах.
В этом руководстве показано, как построить модель машинного обучения для анализа тональности текста, в частности, для классификации текста на позитивный и негативный. Это пример бинарной (или двухклассовой) классификации — важной и широко применяемой задачи машинного обучения.
Чему вы научитесь
- Обучайте модели анализа настроений TF Lite с помощью TF Lite Model Maker
- Развертывайте модели TF Lite в Firebase ML и получайте к ним доступ из своего приложения
- Интегрируйте модели анализа настроений TF Lite в свое приложение с помощью библиотеки задач TF Lite
Что вам понадобится
- Последняя версия Android Studio .
- Пример кода.
- Тестовое устройство с Android 5.0+ и сервисами Google Play 9.8 или более поздней версии или эмулятор с сервисами Google Play 9.8 или более поздней версии
- При использовании устройства — соединительный кабель.
Как вы будете использовать это руководство?
Как бы вы оценили свой опыт создания приложений для Android?
2. Получите пример кода
Клонируйте репозиторий GitHub из командной строки.
$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git
Если у вас не установлен git, вы также можете загрузить пример проекта со страницы GitHub или перейдя по этой ссылке .
3. Импортируйте стартовое приложение.
В Android Studio выберите каталог codelab-textclassification-android-master
( ) из примера загрузки кода ( Файл > Открыть > .../codelab-textclassification-android-master/start).
Теперь у вас должен быть открыт стартовый проект в Android Studio.
4. Запустите стартовое приложение.
Теперь, когда вы импортировали проект в Android Studio, вы готовы к первому запуску приложения. Подключите устройство Android и нажмите «Запустить» ( ) на панели инструментов Android Studio.
Приложение должно запуститься на вашем устройстве. Оно содержит только простой пользовательский интерфейс, который упрощает интеграцию и тестирование моделей классификации текста на следующих этапах. На этом этапе, если вы попытаетесь предсказать тональность текста, приложение выдаст лишь некоторые фиктивные результаты.
5. Создайте консольный проект Firebase.
Добавить Firebase в проект
- Перейдите в консоль Firebase .
- Выберите Добавить проект .
- Выберите или введите название проекта.
- Выполните оставшиеся шаги по настройке в консоли Firebase, затем нажмите «Создать проект» (или «Добавить Firebase», если вы используете существующий проект Google).
6. Добавьте Firebase в приложение.
- На обзорном экране нового проекта щелкните значок Android, чтобы запустить рабочий процесс настройки.
- Введите имя пакета лабораторной работы:
org.tensorflow.lite.codelabs.textclassification
Добавьте файл google-services.json в свое приложение
После добавления имени пакета и выбора Register** нажмите Download google-services.json**, чтобы получить файл конфигурации Firebase Android, затем скопируйте файл google-services.json
в каталог * app
* вашего проекта.
Добавьте плагин google-services в свое приложение
Следуйте инструкциям в консоли Firebase по обновлению файлов build.gradle.kts
, чтобы добавить Firebase в свое приложение.
Плагин google-services использует файл google-services.json для настройки вашего приложения для использования Firebase.
Синхронизируйте свой проект с файлами Gradle
Чтобы убедиться, что все зависимости доступны вашему приложению, на этом этапе необходимо синхронизировать проект с файлами Gradle. Выберите «Файл» > «Синхронизировать проект с файлами Gradle» на панели инструментов Android Studio.
7. Запустите приложение с помощью Firebase.
Теперь, когда вы настроили плагин google-services
с помощью JSON-файла, вы готовы запустить приложение в Firebase. Подключите устройство Android и нажмите «Запустить» ( ) на панели инструментов Android Studio.
Приложение должно запуститься на вашем устройстве. На этом этапе сборка приложения должна быть успешно завершена.
8. Обучите модель анализа настроений
Мы будем использовать TensorFlow Lite Model Maker для обучения модели классификации текста с целью прогнозирования тональности заданного текста.
Этот шаг представлен в виде блокнота Python, который можно открыть в Google Colab. Чтобы выполнить все блокноты одновременно, выберите «Среда выполнения» > «Запустить все» .
Открыть в Colab
После завершения этого шага у вас будет модель анализа настроений TensorFlow Lite, готовая к развертыванию в мобильном приложении.
9. Развертывание модели в Firebase ML
Развертывание модели в Firebase ML полезно по двум основным причинам:
- Мы можем сохранить небольшой размер устанавливаемого приложения и загружать модель только при необходимости.
- Модель может обновляться регулярно и с другим циклом выпуска, чем все приложение.
Модель можно развернуть как через консоль, так и программно, используя Firebase Admin SDK. На этом этапе мы развернём её через консоль.
Сначала откройте консоль Firebase и выберите «Машинное обучение» на левой навигационной панели. Если вы открываете её впервые, нажмите «Начать». Затем перейдите в раздел «Пользовательская настройка» и нажмите кнопку «Добавить модель».
При появлении запроса назовите модель sentiment_analysis
и загрузите файл, который вы скачали из Colab на предыдущем шаге.
10. Загрузите модель из Firebase ML
Выбор момента загрузки удалённой модели из Firebase в ваше приложение может быть сложным, поскольку модели TFLite могут стать относительно большими. В идеале мы хотим избежать загрузки модели сразу после запуска приложения, поскольку если наша модель используется только для одной функции, и пользователь никогда ею не пользуется, мы загрузим значительный объём данных без причины. Мы также можем настроить параметры загрузки, например, загружать модели только при подключении к Wi-Fi. Если вы хотите, чтобы модель была доступна даже без подключения к сети, важно также включить её в пакет без приложения в качестве резервной копии.
Для простоты мы удалим стандартную встроенную модель и всегда будем загружать модель из Firebase при первом запуске приложения. Таким образом, при анализе тональности вы будете уверены, что вывод выполняется с использованием модели, предоставленной Firebase.
В файле app/build.gradle.kts
добавьте зависимость Firebase Machine Learning.
app/build.gradle.kts
Найдите этот комментарий:
// TODO 1: Add Firebase ML dependency
Затем добавьте:
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")
Когда Android Studio предложит синхронизировать ваш проект, выберите Синхронизировать сейчас .
Затем давайте добавим код для загрузки модели из Firebase.
MainActivity.java
Найдите этот комментарий:
// TODO 2: Implement a method to download TFLite model from Firebase
Затем добавьте:
/** Download model from Firebase ML. */
private synchronized void downloadModel(String modelName) {
CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
.requireWifi()
.build();
FirebaseModelDownloader.getInstance()
.getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
.addOnSuccessListener(model -> {
try {
// TODO 6: Initialize a TextClassifier with the downloaded model
predictButton.setEnabled(true);
} catch (IOException e) {
Log.e(TAG, "Failed to initialize the model. ", e);
Toast.makeText(
MainActivity.this,
"Model initialization failed.",
Toast.LENGTH_LONG)
.show();
predictButton.setEnabled(false);
}
})
.addOnFailureListener(e -> {
Log.e(TAG, "Failed to download the model. ", e);
Toast.makeText(
MainActivity.this,
"Model download failed, please check your connection.",
Toast.LENGTH_LONG)
.show();
}
);
}
Затем вызовите метод downloadModel
в методе onCreate
действия.
MainActivity.java
Найдите этот комментарий:
// TODO 3: Call the method to download TFLite model
Затем добавьте:
downloadModel("sentiment_analysis");
11. Интегрируйте модель в свое приложение.
Библиотека задач Tensorflow Lite позволяет интегрировать модели TensorFlow Lite в ваше приложение всего несколькими строками кода. Мы инициализируем экземпляр NLClassifier
, используя модель TensorFlow Lite, загруженную из Firebase. Затем мы используем её для классификации текста, вводимого пользователями приложения, и отображения результата в пользовательском интерфейсе.
Добавить зависимость
Перейдите в файл Gradle приложения и добавьте библиотеку задач TensorFlow Lite (текст) в зависимости приложения.
приложение/build.gradle
Найдите этот комментарий:
// TODO 4: Add TFLite Task API (Text) dependency
Затем добавьте:
implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")
Когда Android Studio предложит синхронизировать ваш проект, выберите Синхронизировать сейчас .
Инициализировать текстовый классификатор
Затем мы загрузим модель анализа настроений, загруженную из Firebase, с помощью NLClassifier
из библиотеки задач.
MainActivity.java
Давайте объявим переменную экземпляра NLClassifier. Найдите этот комментарий:
// TODO 5: Define a NLClassifier variable
Затем добавьте:
private NLClassifier textClassifier;
Инициализируйте переменную textClassifier
, используя модель анализа тональности, скачанную из Firebase. Найдите этот комментарий:
// TODO 6: Initialize a TextClassifier with the downloaded model
Затем добавьте:
textClassifier = NLClassifier.createFromFile(model.getFile());
Классифицировать текст
После настройки экземпляра textClassifier
вы можете запустить анализ настроений с помощью одного вызова метода.
MainActivity.java
Найдите этот комментарий:
// TODO 7: Run sentiment analysis on the input text
Затем добавьте:
List<Category> results = textClassifier.classify(text);
Реализовать постобработку
Наконец, мы преобразуем выходные данные модели в описательный текст для отображения на экране.
MainActivity.java
Найдите этот комментарий:
// TODO 8: Convert the result to a human-readable text
Удалите код, который генерирует фиктивный текст результата:
String textToShow = "Dummy classification result.\n";
Затем добавьте:
String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
Category result = results.get(i);
textToShow += String.format(" %s: %s\n", result.getLabel(),
result.getScore());
}
textToShow += "---------\n";
12. Запустите финальное приложение.
Вы интегрировали модель анализа настроений в приложение, теперь давайте протестируем её. Подключите устройство Android и нажмите « Запустить» ( ) на панели инструментов Android Studio.
Приложение должно уметь правильно предсказывать тон введенной вами рецензии на фильм.
13. Расширьте возможности приложения, добавив больше функций Firebase
Помимо размещения моделей TFLite, Firebase предоставляет ряд других функций для расширения возможностей использования машинного обучения:
- Мониторинг производительности Firebase для измерения скорости вывода модели, работающей на устройстве пользователя.
- Firebase Analytics для оценки эффективности вашей модели в производственной среде путем измерения реакции пользователей.
- A/B-тестирование Firebase для проверки нескольких версий вашей модели
- Помните, мы ранее обучили две версии нашей модели TFLite? A/B-тестирование — хороший способ выяснить, какая версия работает лучше в продакшене!
Чтобы узнать больше о том, как использовать эти функции в своем приложении, ознакомьтесь с приведенными ниже практическими занятиями:
14. Поздравляем!
В этой практической работе вы узнали, как обучить модель анализа тональности TFLite и развернуть её в мобильном приложении с помощью Firebase. Чтобы узнать больше о TFLite и Firebase, ознакомьтесь с другими примерами TFLite и руководствами по началу работы с Firebase.
Что мы рассмотрели
- TensorFlow Lite
- Firebase ML
Следующие шаги
- Измерьте скорость вывода модели с помощью Firebase Performance Monitoring.
- Разверните модель из Colab непосредственно в Firebase через API управления моделями Firebase ML.
- Добавьте механизм, позволяющий пользователям оставлять отзывы о результатах прогнозирования, и используйте Firebase Analytics для отслеживания отзывов пользователей.
- A/B-тестирование модели Average Word Vector и модели MobileBERT с помощью A/B-тестирования Firebase.
Узнать больше
- Документация по машинному обучению Firebase
- Документация TensorFlow Lite
- Измерение производительности приложения с помощью Firebase
- Модели A/B-тестирования с Firebase