1. Übersicht
Willkommen beim Codelab zur Textklassifizierung mit TensorFlow Lite und Firebase. In diesem Codelab erfahren Sie, wie Sie TensorFlow Lite und Firebase verwenden, um ein Textklassifizierungsmodell zu trainieren und in Ihrer App bereitzustellen. Dieses Codelab basiert auf diesem TensorFlow Lite-Beispiel.
Bei der Textklassifizierung werden Textinhalte mit Tags oder Kategorien versehen. Sie ist eine der grundlegenden Aufgaben im Bereich Natural Language Processing (NLP) und wird in vielen Anwendungen eingesetzt, z. B. bei der Sentimentanalyse, der Themenkennzeichnung, der Spamerkennung und der Absichtserkennung.
Die Sentimentanalyse ist die Interpretation und Klassifizierung von Emotionen (positiv, negativ und neutral) in Textdaten mithilfe von Textanalysetechniken. Mit der Sentimentanalyse können Unternehmen die Kundenstimmung in Bezug auf Produkte, Marken oder Dienstleistungen in Online-Gesprächen und ‑Feedback ermitteln.
In dieser Anleitung wird gezeigt, wie Sie ein Modell für maschinelles Lernen für die Sentimentanalyse erstellen, insbesondere zum Klassifizieren von Text als positiv oder negativ. Dies ist ein Beispiel für die binäre oder Zwei-Klassen-Klassifizierung, eine wichtige und weit verbreitete Art von Machine-Learning-Problem.
Lerninhalte
- TF Lite-Sentimentanalysemodell mit TF Lite Model Maker trainieren
- TF Lite-Modelle in Firebase ML bereitstellen und über Ihre App darauf zugreifen
- Nutzerfeedback erfassen, um die Modellgenauigkeit mit Firebase Analytics zu messen
- Modellleistung mit Firebase Performance Monitoring analysieren
- Auswahl des Modells, das über Remote Config geladen wird, wenn mehrere Modelle bereitgestellt wurden
- Mit verschiedenen Modellen über Firebase A/B Testing experimentieren
Voraussetzungen
- Xcode 11 oder höher
- CocoaPods 1.9.1 oder höher
Wie werden Sie diese Anleitung verwenden?
Wie würden Sie Ihre Erfahrung beim Erstellen von Android-Apps bewerten?
2. Firebase Console-Projekt erstellen
Firebase zum Projekt hinzufügen
- Rufen Sie die Firebase Console auf.
- Wählen Sie Create New Project (Neues Projekt erstellen) aus und geben Sie Ihrem Projekt den Namen „Firebase ML iOS Codelab“.
3. Beispielprojekt abrufen
Code herunterladen
Klonen Sie zuerst das Beispielprojekt und führen Sie pod update
im Projektverzeichnis aus:
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
Wenn Sie Git nicht installiert haben, können Sie das Beispielprojekt auch von der GitHub-Seite oder über diesen Link herunterladen. Nachdem Sie das Projekt heruntergeladen haben, führen Sie es in Xcode aus und probieren Sie die Textklassifizierung aus, um ein Gefühl dafür zu bekommen, wie sie funktioniert.
Firebase einrichten
Folgen Sie der Dokumentation, um ein neues Firebase-Projekt zu erstellen. Wenn Sie Ihr Projekt haben, laden Sie die GoogleService-Info.plist
-Datei Ihres Projekts aus der Firebase Console herunter und ziehen Sie sie in den Stamm des Xcode-Projekts.
Fügen Sie Firebase zu Ihrer Podfile-Datei hinzu und führen Sie „pod install“ aus.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
Importieren Sie Firebase in der didFinishLaunchingWithOptions
-Methode von AppDelegate
oben in der Datei.
import FirebaseCore
Fügen Sie einen Aufruf hinzu, um Firebase zu konfigurieren.
FirebaseApp.configure()
Führen Sie das Projekt noch einmal aus, um sicherzugehen, dass die App richtig konfiguriert ist und beim Start nicht abstürzt.
4. Sentimentanalyse-Modell trainieren
Wir verwenden TensorFlow Lite Model Maker, um ein Textklassifizierungsmodell zu trainieren, das das Sentiment eines bestimmten Texts vorhersagt.
Dieser Schritt wird als Python-Notebook dargestellt, das Sie in Google Colab öffnen können.
In Colab öffnen
Nach Abschluss dieses Schritts haben Sie ein TensorFlow Lite-Modell für die Stimmungsanalyse, das für die Bereitstellung in einer mobilen App bereit ist.
5. Modell in Firebase ML bereitstellen
Die Bereitstellung eines Modells in Firebase ML ist aus zwei Hauptgründen nützlich:
- Wir können die Installationsgröße der App gering halten und das Modell nur bei Bedarf herunterladen.
- Das Modell kann regelmäßig und mit einem anderen Releasezyklus als die gesamte App aktualisiert werden.
Das Modell kann entweder über die Konsole oder programmatisch mit dem Firebase Admin SDK bereitgestellt werden. In diesem Schritt stellen wir die Funktion über die Console bereit.
Öffnen Sie zuerst die Firebase Console und klicken Sie im Navigationsbereich auf der linken Seite auf „Machine Learning“. Klicken Sie auf „Erste Schritte“, wenn Sie die Funktion zum ersten Mal öffnen. Klicken Sie dann auf „Benutzerdefiniert“ und auf die Schaltfläche „Modell hinzufügen“.
Geben Sie bei entsprechender Aufforderung den Namen sentiment_analysis
für das Modell ein und laden Sie die Datei hoch, die Sie im vorherigen Schritt aus Colab heruntergeladen haben.
6. Modell aus Firebase ML herunterladen
Es kann schwierig sein, den richtigen Zeitpunkt für das Herunterladen des Remote-Modells aus Firebase in Ihre App zu wählen, da TFLite-Modelle relativ groß werden können. Im Idealfall möchten wir vermeiden, das Modell sofort beim Start der App zu laden. Wenn unser Modell nur für eine Funktion verwendet wird und der Nutzer diese Funktion nie verwendet, haben wir unnötigerweise eine große Menge an Daten heruntergeladen. Wir können auch Downloadoptionen festlegen, z. B. dass Modelle nur abgerufen werden, wenn eine WLAN-Verbindung besteht. Wenn Sie sicherstellen möchten, dass das Modell auch ohne Netzwerkverbindung verfügbar ist, ist es wichtig, es als Backup auch ohne die App zu bündeln.
Der Einfachheit halber entfernen wir das standardmäßig gebündelte Modell und laden immer ein Modell aus Firebase herunter, wenn die App zum ersten Mal gestartet wird. So können Sie bei der Sentimentanalyse sicher sein, dass die Inferenz mit dem von Firebase bereitgestellten Modell ausgeführt wird.
Importieren Sie oben in ModelLoader.swift
das Firebase-Modul.
import FirebaseCore import FirebaseMLModelDownloader
Implementieren Sie dann die folgenden Methoden.
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)) } } }
Ersetzen Sie im viewDidLoad
von ViewController.swift
den Aufruf von loadModel()
durch unsere neue Methode zum Herunterladen von Modellen.
// 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 }
Führen Sie Ihre App noch einmal aus. Nach einigen Sekunden sollte in Xcode ein Log angezeigt werden, das darauf hinweist, dass das Remote-Modell erfolgreich heruntergeladen wurde. Geben Sie etwas Text ein und prüfen Sie, ob sich das Verhalten der App geändert hat.
7. Modell in Ihre App einbinden
Mit der Tensorflow Lite Task Library können Sie TensorFlow Lite-Modelle mit nur wenigen Zeilen Code in Ihre App einbinden. Wir initialisieren eine TFLNLClassifier
-Instanz mit dem TensorFlow Lite-Modell, das von Firebase heruntergeladen wurde. Anschließend verwenden wir sie, um die Texteingabe der App-Nutzer zu klassifizieren und das Ergebnis auf der Benutzeroberfläche anzuzeigen.
Abhängigkeit hinzufügen
Rufen Sie das Podfile der App auf und fügen Sie die TensorFlow Lite Task Library (Text) den Abhängigkeiten der App hinzu. Achten Sie darauf, dass Sie die Abhängigkeit unter der target 'TextClassification'
-Deklaration hinzufügen.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
Führen Sie pod install
aus, um die neue Abhängigkeit zu installieren.
Textklassifizierer initialisieren
Anschließend laden wir das aus Firebase heruntergeladene Sentimentanalysemodell mit NLClassifier
aus der Task Library.
ViewController.swift
Wir deklarieren eine TFLNLClassifier-Instanzvariable. Importieren Sie die neue Abhängigkeit oben in der Datei:
import TensorFlowLiteTaskText
Suchen Sie diesen Kommentar über der Methode, die wir im letzten Schritt geändert haben:
// TODO: Add a TFLNLClassifier property.
Ersetzen Sie den TODO-Kommentar durch den folgenden Code:
private var classifier: TFLNLClassifier?
Initialisieren Sie die Variable textClassifier
mit dem aus Firebase heruntergeladenen Modell für die Sentimentanalyse. Suchen Sie nach diesem Kommentar, den wir im letzten Schritt hinzugefügt haben:
// TODO: Initialize an NLClassifier from the downloaded model
Ersetzen Sie den TODO-Kommentar durch den folgenden Code:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
Text klassifizieren
Nachdem die classifier
-Instanz eingerichtet wurde, können Sie die Stimmungsanalyse mit einem einzigen Methodenaufruf ausführen.
ViewController.swift
Suchen Sie in der Methode classify(text:)
nach dem TODO-Kommentar:
// TODO: Run sentiment analysis on the input text
Ersetzen Sie den Kommentar durch den folgenden Code:
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. Endgültige App ausführen
Sie haben das Sentimentanalysemodell in die App integriert. Lassen Sie uns es testen. Verbinden Sie Ihr iOS-Gerät und klicken Sie in der Xcode-Symbolleiste auf Ausführen ( ).
Die App sollte das Sentiment der eingegebenen Filmrezension korrekt vorhersagen können.
9. App mit weiteren Firebase-Funktionen optimieren
Firebase bietet neben dem Hosting Ihrer TFLite-Modelle auch mehrere andere Funktionen, mit denen Sie Ihre Anwendungsfälle für maschinelles Lernen optimieren können:
- Firebase Performance Monitoring, um die Geschwindigkeit der Modellinferenz auf dem Gerät der Nutzer zu messen.
- Mit Firebase Analytics können Sie die Leistung Ihres Modells in der Produktion anhand der Nutzerreaktionen messen.
- Firebase A/B Testing zum Testen mehrerer Versionen Ihres Modells
- Erinnern Sie sich noch daran, dass wir vorhin zwei Versionen unseres TFLite-Modells trainiert haben? A/B-Tests sind eine gute Möglichkeit, um herauszufinden, welche Version in der Produktion besser abschneidet.
Weitere Informationen zur Verwendung dieser Funktionen in Ihrer App finden Sie in den folgenden Codelabs:
10. Glückwunsch!
In diesem Codelab haben Sie gelernt, wie Sie ein TFLite-Modell für die Stimmungsanalyse trainieren und es mit Firebase in Ihrer mobilen App bereitstellen. Weitere Informationen zu TFLite und Firebase finden Sie in den anderen TFLite-Beispielen und den Firebase-Anleitungen für die ersten Schritte.
Behandelte Themen
- TensorFlow Lite
- Firebase ML
Nächste Schritte
- Mit Firebase Performance Monitoring können Sie die Inferenzgeschwindigkeit Ihres Modells messen.
- Stellen Sie das Modell direkt aus Colab über die Firebase ML Model Management API in Firebase bereit.
- Fügen Sie ein Verfahren hinzu, mit dem Nutzer Feedback zum Vorhersageergebnis geben können, und verwenden Sie Firebase Analytics, um Nutzerfeedback zu erfassen.
- Führen Sie A/B-Tests für das Average Word Vector-Modell und das MobileBERT-Modell mit Firebase A/B Testing durch.
Weitere Informationen
- Dokumentation zu Firebase Machine Learning
- TensorFlow Lite-Dokumentation
- App-Leistung mit Firebase messen
- Modelle mit Firebase A/B Testing testen