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 в свой подфайл и запустите установку модуля.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
В методе didFinishLaunchingWithOptions
вашего AppDelegate
импортируйте Firebase в верхней части файла.
import FirebaseCore
И добавьте вызов для настройки Firebase.
FirebaseApp.configure()
Запустите проект еще раз, чтобы убедиться, что приложение настроено правильно и не происходит сбой при запуске.
4. Обучите модель анализа настроений
Мы будем использовать TensorFlow Lite Model Maker для обучения модели классификации текста для прогнозирования тональности данного текста.
Этот шаг представлен в виде блокнота Python, который вы можете открыть в Google 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. Затем мы будем использовать его для классификации текстового ввода от пользователей приложения и отображения результата в пользовательском интерфейсе.
Добавьте зависимость
Перейдите в подфайл приложения и добавьте библиотеку задач TensorFlow Lite (текст) в зависимости приложения. Обязательно добавьте зависимость в 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 позволяет оценить, насколько хорошо ваша модель работает в рабочей среде, путем измерения реакции пользователя.
- Firebase A/B-тестирование для тестирования нескольких версий вашей модели.
- Помните, ранее мы обучали две версии нашей модели TFLite? A/B-тестирование — хороший способ узнать, какая версия работает лучше в рабочей среде!
Чтобы узнать больше о том, как использовать эти функции в вашем приложении, ознакомьтесь с кодовыми лабораториями ниже:
10. Поздравляем!
В этой лабораторной работе вы узнали, как обучить модель анализа настроений 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
Есть вопрос?
Сообщить о проблемах
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 в свой подфайл и запустите установку модуля.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
В методе didFinishLaunchingWithOptions
вашего AppDelegate
импортируйте Firebase в верхней части файла.
import FirebaseCore
И добавьте вызов для настройки Firebase.
FirebaseApp.configure()
Запустите проект еще раз, чтобы убедиться, что приложение настроено правильно и не происходит сбой при запуске.
4. Обучите модель анализа настроений
Мы будем использовать TensorFlow Lite Model Maker для обучения модели классификации текста для прогнозирования тональности данного текста.
Этот шаг представлен в виде блокнота Python, который вы можете открыть в Google 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. Затем мы будем использовать его для классификации текстового ввода от пользователей приложения и отображения результата в пользовательском интерфейсе.
Добавьте зависимость
Перейдите в подфайл приложения и добавьте библиотеку задач TensorFlow Lite (текст) в зависимости приложения. Обязательно добавьте зависимость в 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 позволяет оценить, насколько хорошо ваша модель работает в рабочей среде, путем измерения реакции пользователя.
- Firebase A/B-тестирование для тестирования нескольких версий вашей модели.
- Помните, ранее мы обучали две версии нашей модели TFLite? A/B-тестирование — хороший способ узнать, какая версия лучше работает в рабочей среде!
Чтобы узнать больше о том, как использовать эти функции в вашем приложении, ознакомьтесь с кодовыми лабораториями ниже:
10. Поздравляем!
В этой лабораторной работе вы узнали, как обучить модель анализа настроений 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