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 Services 9.8 или более поздней версии, или эмулятор с Google Play Services 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 в ваше приложение.
После добавления имени пакета и выбора пункта «Зарегистрировать»**, нажмите «Скачать google-services.json»**, чтобы получить файл конфигурации Firebase Android, а затем скопируйте файл google-services.json в каталог * app * вашего проекта.
Добавьте плагин google-services в ваше приложение.
Следуйте инструкциям в консоли Firebase, обновив файлы build.gradle.kts , чтобы добавить Firebase в ваше приложение.
Плагин google-services использует файл google-services.json для настройки вашего приложения на использование Firebase.
Синхронизируйте свой проект с файлами Gradle.
Чтобы убедиться, что все зависимости доступны вашему приложению, на этом этапе следует синхронизировать проект с файлами Gradle. Выберите File > Sync Project with Gradle Files на панели инструментов Android Studio.
7. Запустите приложение с помощью Firebase.
Теперь, когда вы настроили плагин google-services с помощью JSON-файла, вы готовы запустить приложение с Firebase. Подключите ваше устройство Android и нажмите «Запустить» (
) на панели инструментов Android Studio.
Приложение должно запуститься на вашем устройстве. На этом этапе сборка вашего приложения должна пройти успешно.
8. Обучите модель анализа настроений.
Мы будем использовать TensorFlow Lite Model Maker для обучения модели классификации текста, способной предсказывать тональность заданного текста.
Этот шаг представлен в виде блокнота Python, который можно открыть в Google Colab. Вы можете выбрать Runtime > Run all , чтобы выполнить весь блокнот одновременно.
Открыть в 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 Task Library (Text) в зависимости приложения.
app/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.
- Добавьте механизм, позволяющий пользователям оставлять отзывы о результатах прогнозирования, и используйте Firebase Analytics для отслеживания отзывов пользователей.
- Проведите A/B-тестирование модели Average Word Vector и модели MobileBERT с помощью Firebase A/B testing.
Узнать больше
- Документация Firebase Machine Learning
- Документация TensorFlow Lite
- Оцените производительность приложения с помощью Firebase.
- A/B-тестирование моделей с использованием Firebase