1. Обзор

Добро пожаловать на практический семинар по классификации текста с использованием TensorFlow Lite и Firebase. В этом семинаре вы узнаете, как использовать TensorFlow Lite и Firebase для обучения и развертывания модели классификации текста в вашем приложении. Этот семинар основан на примере TensorFlow Lite.
Классификация текста — это процесс присвоения тексту тегов или категорий в соответствии с его содержанием. Это одна из фундаментальных задач обработки естественного языка (NLP) с широким спектром применений, таких как анализ настроений, маркировка тем, обнаружение спама и определение намерений.
Анализ настроений — это интерпретация и классификация эмоций (положительных, отрицательных и нейтральных) в текстовых данных с использованием методов анализа текста. Анализ настроений позволяет компаниям выявлять отношение клиентов к продуктам, брендам или услугам в онлайн-обсуждениях и отзывах.
В этом руководстве показано, как создать модель машинного обучения для анализа настроений, в частности, для классификации текста как положительного или отрицательного. Это пример бинарной — или двухклассовой — классификации, важного и широко применимого типа задач машинного обучения.
Что вы узнаете
- Обучите модель анализа настроений TF Lite с помощью TF Lite Model Maker.
- Развертывайте модели TF Lite в Firebase ML и получайте к ним доступ из своего приложения.
- Отслеживайте отзывы пользователей для оценки точности модели с помощью Firebase Analytics.
- Проведите профилирование производительности модели с помощью Firebase Performance Monitoring.
- Выберите, какая из нескольких развернутых моделей будет загружена через удаленную конфигурацию.
- Экспериментируйте с различными моделями с помощью A/B-тестирования в Firebase.
Что вам понадобится
- Xcode 11 (или выше)
- CocoaPods 1.9.1 (или выше)
Как вы будете использовать этот учебный материал?
Как бы вы оценили свой опыт разработки приложений для Android?
2. Создайте проект консоли Firebase.
Добавьте Firebase в проект.
- Перейдите в консоль Firebase .
- Выберите «Создать новый проект» и назовите свой проект «Firebase ML iOS Codelab».
3. Получите пример проекта
Скачать код
Для начала клонируйте пример проекта и выполните команду pod update в каталоге проекта:
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
Если у вас не установлен Git, вы также можете загрузить пример проекта с его страницы на GitHub или перейдя по этой ссылке . После загрузки проекта запустите его в Xcode и поэкспериментируйте с классификацией текста, чтобы понять, как он работает.
Настройка Firebase
Следуйте инструкциям в документации , чтобы создать новый проект Firebase. После создания проекта загрузите файл GoogleService-Info.plist из консоли Firebase и перетащите его в корневую папку проекта Xcode.

Добавьте Firebase в свой Podfile и выполните команду `pod install`.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
В методе didFinishLaunchingWithOptions вашего AppDelegate добавьте импорт Firebase в начало файла.
import FirebaseCore
И добавьте вызов для настройки Firebase.
FirebaseApp.configure()
Запустите проект еще раз, чтобы убедиться, что приложение настроено правильно и не вылетает при запуске.
4. Обучить модель анализа настроений.
Мы будем использовать TensorFlow Lite Model Maker для обучения модели классификации текста, способной предсказывать тональность заданного текста.
Этот шаг представлен в виде блокнота Python, который можно открыть в Google Colab.
Открыть в Colab
После завершения этого шага у вас будет модель анализа настроений TensorFlow Lite, готовая к развертыванию в мобильном приложении.
5. Разверните модель в Firebase ML.
Развертывание модели в Firebase ML полезно по двум основным причинам:
- Мы можем уменьшить размер устанавливаемого приложения и загружать модель только при необходимости.
- Модель может регулярно обновляться с другим циклом выпуска, чем всё приложение целиком.
Развертывание модели может осуществляться либо через консоль, либо программно с помощью Firebase Admin SDK. На этом этапе мы выполним развертывание через консоль.
Сначала откройте консоль Firebase и в левой панели навигации нажмите «Машинное обучение». Если вы открываете консоль впервые, нажмите «Начать». Затем перейдите в раздел «Пользовательские» и нажмите кнопку «Добавить модель».
Когда появится соответствующий запрос, назовите модель sentiment_analysis и загрузите файл, который вы скачали из Colab на предыдущем шаге.

6. Загрузите модель из Firebase ML.
Выбор момента загрузки удалённой модели из Firebase в ваше приложение может быть непростой задачей, поскольку модели TFLite могут достигать довольно больших размеров. В идеале следует избегать загрузки модели сразу после запуска приложения, так как если наша модель используется только для одной функции, и пользователь никогда её не использует, мы загрузим значительный объём данных без всякой причины. Мы также можем установить параметры загрузки, например, загружать модели только при подключении к Wi-Fi. Если вы хотите гарантировать доступность модели даже без подключения к сети, важно также включить её в резервную копию без приложения.
Для простоты мы удалим стандартную встроенную модель и будем всегда загружать модель из Firebase при первом запуске приложения. Таким образом, при выполнении анализа настроений вы можете быть уверены, что вывод выполняется с использованием модели, предоставленной Firebase.
В верхней части файла ModelLoader.swift импортируйте модуль Firebase.
import FirebaseCore import FirebaseMLModelDownloader
Затем реализуйте следующие методы.
static func downloadModel(named name: String,
completion: @escaping (CustomModel?, DownloadError?) -> Void) {
guard FirebaseApp.app() != nil else {
completion(nil, .firebaseNotInitialized)
return
}
guard success == nil && failure == nil else {
completion(nil, .downloadInProgress)
return
}
let conditions = ModelDownloadConditions(allowsCellularAccess: false)
ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
switch (result) {
case .success(let customModel):
// Download complete.
// The CustomModel object contains the local path of the model file,
// which you can use to instantiate a TensorFlow Lite classifier.
return completion(customModel, nil)
case .failure(let error):
// Download was unsuccessful. Notify error message.
completion(nil, .downloadFailed(underlyingError: error))
}
}
}
В viewDidLoad файла ViewController.swift замените вызов loadModel() на наш новый метод загрузки модели.
// Download the model from Firebase
print("Fetching model...")
ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in
guard let customModel = customModel else {
if let error = error {
print(error)
}
return
}
print("Model download complete")
// TODO: Initialize an NLClassifier from the downloaded model
}
Перезапустите приложение. Через несколько секунд в Xcode должно появиться сообщение об успешной загрузке удалённой модели. Попробуйте ввести какой-нибудь текст и убедитесь, что поведение приложения не изменилось.
7. Интегрируйте модель в ваше приложение.
Библиотека задач TensorFlow Lite помогает интегрировать модели TensorFlow Lite в ваше приложение всего несколькими строками кода. Мы инициализируем экземпляр TFLNLClassifier , используя модель TensorFlow Lite, загруженную из Firebase. Затем мы используем его для классификации текстового ввода от пользователей приложения и отображения результата в пользовательском интерфейсе.
Добавьте зависимость
Перейдите в Podfile приложения и добавьте TensorFlow Lite Task Library (Text) в зависимости приложения. Убедитесь, что вы добавили зависимость в раздел target 'TextClassification' .
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
Выполните команду pod install , чтобы установить новую зависимость.
Инициализация текстового классификатора
Затем мы загрузим модель анализа настроений, скачанную из Firebase, используя NLClassifier из библиотеки задач.
ViewController.swift
Давайте объявим переменную экземпляра TFLNLClassifier. В верхней части файла импортируем новую зависимость:
import TensorFlowLiteTaskText
Этот комментарий находится над методом, который мы изменили на последнем шаге:
// TODO: Add a TFLNLClassifier property.
Замените TODO следующим кодом:
private var classifier: TFLNLClassifier?
Инициализируйте переменную textClassifier моделью анализа настроений, загруженной из Firebase. Найдите комментарий, который мы добавили на предыдущем шаге:
// TODO: Initialize an NLClassifier from the downloaded model
Замените TODO следующим кодом:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
Классифицировать текст
После создания экземпляра classifier вы можете выполнить анализ тональности текста с помощью одного вызова метода.
ViewController.swift
В методе classify(text:) найдите комментарий TODO:
// TODO: Run sentiment analysis on the input text
Замените комментарий следующим кодом:
guard let classifier = self.classifier else { return }
// Classify the text
let classifierResults = classifier.classify(text: text)
// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)
8. Запустите готовое приложение.
Вы интегрировали модель анализа настроений в приложение, давайте протестируем её. Подключите ваше устройство iOS и нажмите « Запустить» (
) на панели инструментов Xcode.
Приложение должно уметь правильно предсказывать эмоциональную окраску введенного вами отзыва о фильме.

9. Расширьте возможности приложения, добавив больше функций Firebase.
Помимо размещения ваших моделей TFLite, Firebase предоставляет ряд других функций для расширения возможностей использования машинного обучения:
- Система мониторинга производительности Firebase позволяет измерять скорость выполнения модели на устройствах пользователей.
- Firebase Analytics позволяет оценить эффективность вашей модели в производственной среде путем измерения реакции пользователей.
- A/B-тестирование в Firebase для проверки нескольких версий вашей модели.
- Помните, мы ранее обучили две версии нашей модели TFLite? A/B-тестирование — хороший способ выяснить, какая версия работает лучше в реальных условиях!
Чтобы узнать больше о том, как использовать эти функции в своем приложении, ознакомьтесь с примерами кода ниже:
10. Поздравляем!
В этом практическом занятии вы научились обучать модель анализа настроений 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