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
- Выберите, какая из нескольких развернутых моделей будет загружена через Remote Config.
- Экспериментируйте с различными моделями с помощью 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 (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 ML.
- Добавьте механизм, позволяющий пользователям оставлять отзывы о результатах прогнозирования, и используйте Firebase Analytics для отслеживания отзывов пользователей.
- A/B-тестирование модели Average Word Vector и модели MobileBERT с помощью A/B-тестирования Firebase.
Узнать больше
- Документация по машинному обучению Firebase
- Документация TensorFlow Lite
- Измерение производительности приложения с помощью Firebase
- Модели A/B-тестирования с Firebase