1. 概述
歡迎來到使用 TensorFlow Lite 和 Firebase 進行文本分類 Codelab。在此 Codelab 中,您將學習如何使用 TensorFlow Lite 和 Firebase 訓練文本分類模型並將其部署到您的應用。此 Codelab 基於此 TensorFlow Lite示例。
文本分類是根據文本內容為其分配標籤或類別的過程。它是自然語言處理 (NLP) 的基本任務之一,具有廣泛的應用,例如情感分析、主題標記、垃圾郵件檢測和意圖檢測。
情感分析是使用文本分析技術對文本數據中的情感(積極、消極和中性)進行解釋和分類。情緒分析使企業能夠在在線對話和反饋中識別客戶對產品、品牌或服務的情緒。
本教程展示瞭如何構建用於情感分析的機器學習模型,特別是將文本分類為正面或負面。這是二元分類(或二類分類)的一個示例,是一種重要且廣泛適用的機器學習問題。
你將學到什麼
- 使用 TF Lite Model Maker 訓練 TF Lite 情感分析模型
- 將 TF Lite 模型部署到 Firebase ML 並從您的應用訪問它們
- 使用 Firebase Analytics 跟踪用戶反饋以衡量模型準確性
- 通過 Firebase 性能監控分析模型性能
- 選擇通過遠程配置加載多個部署模型中的哪一個
- 通過 Firebase A/B 測試嘗試不同的模型
你需要什麼
- 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 項目。獲得項目後,從Firebase 控制台下載項目的GoogleService-Info.plist
文件並將其拖到 Xcode 項目的根目錄。
將 Firebase 添加到您的 Podfile 並運行 pod install。
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
在AppDelegate
的didFinishLaunchingWithOptions
方法中,在文件頂部導入 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 模型可能會變得相對較大。理想情況下,我們希望避免在應用程序啟動時立即加載模型,因為如果我們的模型僅用於一項功能並且用戶從不使用該功能,那麼我們將無緣無故地下載大量數據。我們還可以設置下載選項,例如僅在連接到 WiFi 時獲取模型。如果您想確保模型即使在沒有網絡連接的情況下也可用,那麼在沒有應用程序的情況下將其捆綁作為備份也很重要。
為了簡單起見,我們將刪除默認的捆綁模型,並在應用首次啟動時始終從 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)) } } }
在ViewController.swift
的viewDidLoad
中,用我們的新模型下載方法替換對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 模型集成到您的應用程序中。我們將使用從 Firebase 下載的 TensorFlow Lite 模型初始化TFLNLClassifier
實例。然後我們將使用它對應用程序用戶輸入的文本進行分類,並將結果顯示在 UI 上。
添加依賴
轉到應用程序的 Podfile 並在應用程序的依賴項中添加 TensorFlow Lite 任務庫(文本)。確保在target 'TextClassification'
聲明下添加依賴項。
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
運行pod install
以安裝新的依賴項。
初始化文本分類器
然後我們將使用任務庫的NLClassifier
加載從 Firebase 下載的情感分析模型。
ViewController.swift
讓我們聲明一個 TFLNLClassifier 實例變量。在文件頂部,導入新的依賴項:
import TensorFlowLiteTaskText
在我們在上一步中修改的方法上方找到此註釋:
// TODO: Add an TFLNLClassifier property.
將 TODO 替換為以下代碼:
private var classifier: TFLNLClassifier?
使用從 Firebase 下載的情感分析模型初始化textClassifier
變量。找到我們在上一步中添加的這條評論:
// 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. 恭喜!
在此 Codelab 中,您學習瞭如何訓練情緒分析 TFLite 模型並使用 Firebase 將其部署到您的移動應用。要了解有關 TFLite 和 Firebase 的更多信息,請查看其他 TFLite示例和 Firebase入門指南。
我們涵蓋的內容
- TensorFlow Lite
- Firebase 機器學習
下一步
- 使用 Firebase 性能監控衡量模型推理速度。
- 通過 Firebase ML 模型管理 API 將模型從 Colab 直接部署到 Firebase。
- 添加允許用戶反饋預測結果的機制,並使用 Firebase Analytics 跟踪用戶反饋。
- 使用 Firebase A/B 測試對平均詞向量模型和 MobileBERT 模型進行 A/B 測試。