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 в свое приложение.
Добавив имя пакета и выбрав «Зарегистрировать**», нажмите «Загрузить google-services.json**», чтобы получить файл конфигурации Firebase Android, а затем скопируйте файл google-services.json
в каталог * app
* вашего проекта.
Добавьте плагин Google-сервисов в свое приложение
Следуйте инструкциям в консоли 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. Вы можете выбрать «Среда выполнения» > «Выполнить все» , чтобы выполнить всю записную книжку одновременно.
Открыть в Колабе
После завершения этого шага у вас будет модель анализа настроений 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.
приложение/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 позволяет оценить, насколько хорошо ваша модель работает в рабочей среде, путем измерения реакции пользователя.
- Firebase A/B-тестирование для тестирования нескольких версий вашей модели.
- Помните, ранее мы обучали две версии нашей модели TFLite? A/B-тестирование — хороший способ узнать, какая версия лучше работает в рабочей среде!
Чтобы узнать больше о том, как использовать эти функции в вашем приложении, ознакомьтесь с кодовыми лабораториями ниже:
14. Поздравляем!
В этой лабораторной работе вы узнали, как обучить модель анализа настроений TFLite и развернуть ее в своем мобильном приложении с помощью Firebase. Чтобы узнать больше о TFLite и Firebase, ознакомьтесь с другими примерами TFLite и руководствами по началу работы с Firebase.
Что мы рассмотрели
- ТензорФлоу Лайт
- Firebase ML
Следующие шаги
- Измерьте скорость вывода вашей модели с помощью Firebase Performance Monitoring.
- Разверните модель из Colab непосредственно в Firebase через API управления моделями Firebase ML.
- Добавьте механизм, позволяющий пользователям оставлять отзывы о результате прогноза, и используйте Firebase Analytics для отслеживания отзывов пользователей.
- A/B-тестирование векторной модели среднего слова и модели MobileBERT с помощью A/B-тестирования Firebase.
Узнать больше
- Документация по машинному обучению Firebase
- Документация TensorFlow Lite
- Измеряйте производительность приложения с помощью Firebase
- Модели A/B-тестирования с помощью Firebase