1. Übersicht
Willkommen bei der Textklassifizierung mit TensorFlow Lite und Firebase Codelab. In diesem Codelab erfahren Sie, wie Sie mit TensorFlow Lite und Firebase ein Textklassifizierungsmodell trainieren und für Ihre App bereitstellen. Dieses Codelab basiert auf diesem TensorFlow Lite- Beispiel .
Unter Textklassifizierung versteht man den Prozess der Zuweisung von Tags oder Kategorien zu Text entsprechend seinem Inhalt. Es ist eine der grundlegenden Aufgaben in der Verarbeitung natürlicher Sprache (NLP) mit breiten Anwendungen wie Stimmungsanalyse, Themenkennzeichnung, Spam-Erkennung und Absichtserkennung.
Unter Stimmungsanalyse versteht man die Interpretation und Klassifizierung von Emotionen (positiv, negativ und neutral) in Textdaten mithilfe von Textanalysetechniken. Die Stimmungsanalyse ermöglicht es Unternehmen, die Stimmung der Kunden gegenüber Produkten, Marken oder Dienstleistungen in Online-Gesprächen und Feedback zu ermitteln.
Dieses Tutorial zeigt, wie Sie ein maschinelles Lernmodell für die Stimmungsanalyse erstellen und insbesondere Text als positiv oder negativ klassifizieren. Dies ist ein Beispiel für die binäre bzw. Zwei-Klassen-Klassifizierung, eine wichtige und weithin anwendbare Art von maschinellem Lernproblem.
Was Sie lernen werden
- Trainieren Sie ein TF Lite-Stimmungsanalysemodell mit TF Lite Model Maker
- Stellen Sie TF Lite-Modelle in Firebase ML bereit und greifen Sie über Ihre App darauf zu
- Verfolgen Sie Benutzerfeedback, um die Modellgenauigkeit mit Firebase Analytics zu messen
- Profilieren Sie die Modellleistung über Firebase Performance Monitoring
- Wählen Sie aus, welches der mehreren bereitgestellten Modelle über Remote Config geladen wird
- Experimentieren Sie mit verschiedenen Modellen über Firebase A/B Testing
Was du brauchen wirst
- Xcode 11 (oder höher)
- CocoaPods 1.9.1 (oder höher)
Wie werden Sie dieses Tutorial nutzen?
Wie würden Sie Ihre Erfahrungen mit der Entwicklung von Android-Apps bewerten?
2. Erstellen Sie ein Firebase-Konsolenprojekt
Fügen Sie Firebase zum Projekt hinzu
- Gehen Sie zur Firebase-Konsole .
- Wählen Sie „Neues Projekt erstellen“ und nennen Sie Ihr Projekt „Firebase ML iOS Codelab“.
3. Holen Sie sich das Beispielprojekt
Laden Sie den Code herunter
Klonen Sie zunächst 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 herunterladen oder auf diesen Link klicken. Nachdem Sie das Projekt heruntergeladen haben, führen Sie es in Xcode aus und experimentieren Sie mit der Textklassifizierung, um ein Gefühl dafür zu bekommen, wie es funktioniert.
Richten Sie Firebase ein
Befolgen Sie die Dokumentation , um ein neues Firebase-Projekt zu erstellen. Sobald Sie Ihr Projekt erhalten haben, laden Sie die Datei GoogleService-Info.plist
Ihres Projekts von der Firebase-Konsole herunter und ziehen Sie sie in das Stammverzeichnis des Xcode-Projekts.
Fügen Sie Firebase zu Ihrer Pod-Datei hinzu und führen Sie die Pod-Installation aus.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
Importieren Sie Firebase in der didFinishLaunchingWithOptions
-Methode Ihrer AppDelegate
am Anfang der Datei
import FirebaseCore
Und fügen Sie einen Aufruf hinzu, um Firebase zu konfigurieren.
FirebaseApp.configure()
Führen Sie das Projekt erneut aus, um sicherzustellen, dass die App richtig konfiguriert ist und beim Start nicht abstürzt.
4. Trainieren Sie ein Stimmungsanalysemodell
Wir werden TensorFlow Lite Model Maker verwenden, um ein Textklassifizierungsmodell zu trainieren, um die Stimmung eines bestimmten Textes vorherzusagen.
Dieser Schritt wird als Python-Notizbuch dargestellt, das Sie in Google Colab öffnen können.
In Colab öffnen
Nach Abschluss dieses Schritts verfügen Sie über ein TensorFlow Lite-Stimmungsanalysemodell, das für die Bereitstellung in einer mobilen App bereit ist.
5. Stellen Sie ein Modell für Firebase ML bereit
Die Bereitstellung eines Modells in Firebase ML ist aus zwei Hauptgründen nützlich:
- Wir können die Installationsgröße der App klein halten und das Modell nur bei Bedarf herunterladen
- Das Modell kann regelmäßig und mit einem anderen Release-Zyklus als die gesamte App aktualisiert werden
Das Modell kann entweder über die Konsole oder programmgesteuert mit dem Firebase Admin SDK bereitgestellt werden. In diesem Schritt führen wir die Bereitstellung über die Konsole durch.
Öffnen Sie zunächst die Firebase-Konsole und klicken Sie im linken Navigationsbereich auf Machine Learning. Klicken Sie auf „Erste Schritte“, wenn Sie es zum ersten Mal öffnen. Navigieren Sie dann zu „Benutzerdefiniert“ und klicken Sie auf die Schaltfläche „Modell hinzufügen“.
Wenn Sie dazu aufgefordert werden, nennen Sie das Modell sentiment_analysis
und laden Sie die Datei hoch, die Sie im vorherigen Schritt von Colab heruntergeladen haben.
6. Laden Sie das Modell von Firebase ML herunter
Die Entscheidung, wann das Remote-Modell von Firebase in Ihre App heruntergeladen werden soll, kann schwierig sein, da TFLite-Modelle relativ groß werden können. Idealerweise möchten wir vermeiden, das Modell sofort beim Start der App zu laden, denn wenn unser Modell nur für eine Funktion verwendet wird und der Benutzer diese Funktion nie verwendet, haben wir ohne Grund eine erhebliche Datenmenge heruntergeladen. Wir können auch Download-Optionen festlegen, z. B. dass Modelle nur dann 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 auch ohne App als Backup zu bündeln.
Der Einfachheit halber entfernen wir das standardmäßig gebündelte Modell und laden immer ein Modell von Firebase herunter, wenn die App zum ersten Mal gestartet wird. Auf diese Weise können Sie bei der Durchführung einer Stimmungsanalyse 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 in 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 erneut aus. Nach einigen Sekunden sollte in Xcode ein Protokoll angezeigt werden, das anzeigt, dass das Remote-Modell erfolgreich heruntergeladen wurde. Geben Sie Text ein und vergewissern Sie sich, dass sich das Verhalten der App nicht geändert hat.
7. Integrieren Sie das Modell in Ihre App
Mit der Tensorflow Lite-Aufgabenbibliothek können Sie TensorFlow Lite-Modelle mit nur wenigen Codezeilen in Ihre App integrieren. Wir werden eine TFLNLClassifier
Instanz mit dem von Firebase heruntergeladenen TensorFlow Lite-Modell initialisieren. Anschließend werden wir damit die Texteingaben der App-Benutzer klassifizieren und das Ergebnis auf der Benutzeroberfläche anzeigen.
Fügen Sie die Abhängigkeit hinzu
Gehen Sie zur Poddatei der App und fügen Sie die TensorFlow Lite Task Library (Text) in den Abhängigkeiten der App hinzu. Stellen Sie sicher, dass Sie die Abhängigkeit unter der target 'TextClassification'
hinzufügen.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
Führen Sie pod install
, um die neue Abhängigkeit zu installieren.
Initialisieren Sie einen Textklassifizierer
Anschließend laden wir das von Firebase heruntergeladene Stimmungsanalysemodell mithilfe des NLClassifier
der Task-Bibliothek.
ViewController.swift
Lassen Sie uns eine TFLNLClassifier-Instanzvariable deklarieren. Importieren Sie oben in der Datei die neue Abhängigkeit:
import TensorFlowLiteTaskText
Finden Sie diesen Kommentar über der Methode, die wir im letzten Schritt geändert haben:
// TODO: Add a TFLNLClassifier property.
Ersetzen Sie TODO durch den folgenden Code:
private var classifier: TFLNLClassifier?
Initialisieren Sie die textClassifier
Variable mit dem von Firebase heruntergeladenen Stimmungsanalysemodell. Finden Sie diesen Kommentar, den wir im letzten Schritt hinzugefügt haben:
// TODO: Initialize an NLClassifier from the downloaded model
Ersetzen Sie TODO durch den folgenden Code:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
Text klassifizieren
Sobald die classifier
eingerichtet wurde, können Sie eine Stimmungsanalyse mit einem einzigen Methodenaufruf ausführen.
ViewController.swift
Suchen Sie in der Methode classify(text:)
den 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. Führen Sie die endgültige App aus
Sie haben das Stimmungsanalysemodell in die App integriert, also testen wir es. Schließen Sie Ihr iOS-Gerät an und klicken Sie auf Ausführen ( ) in der Xcode-Symbolleiste.
Die App sollte in der Lage sein, die Stimmung der von Ihnen eingegebenen Filmkritik korrekt vorherzusagen.
9. Stärken Sie die App mit weiteren Firebase-Funktionen
Neben dem Hosten Ihrer TFLite-Modelle bietet Firebase mehrere weitere Funktionen, um Ihre Anwendungsfälle für maschinelles Lernen zu verbessern:
- Firebase-Leistungsüberwachung zum Messen der Geschwindigkeit Ihrer Modellinferenz, die auf dem Gerät des Benutzers ausgeführt wird.
- Firebase Analytics zur Messung der Leistung Ihres Modells in der Produktion durch Messung der Benutzerreaktion.
- Firebase A/B-Testing zum Testen mehrerer Versionen Ihres Modells
- Erinnern Sie sich, dass wir zuvor zwei Versionen unseres TFLite-Modells trainiert haben? A/B-Tests sind eine gute Möglichkeit herauszufinden, welche Version in der Produktion besser abschneidet!
Um mehr darüber zu erfahren, wie Sie diese Funktionen in Ihrer App nutzen können, sehen Sie sich die folgenden Codelabs an:
10. Herzlichen Glückwunsch!
In diesem Codelab haben Sie gelernt, wie Sie ein TFLite-Modell zur Stimmungsanalyse trainieren und es mithilfe von Firebase in Ihrer mobilen App bereitstellen. Um mehr über TFLite und Firebase zu erfahren, werfen Sie einen Blick auf andere TFLite- Beispiele und die Firebase- Einführungsleitfäden .
Was wir abgedeckt haben
- TensorFlow Lite
- Firebase ML
Nächste Schritte
- Messen Sie die Geschwindigkeit Ihrer Modellinferenz mit Firebase Performance Monitoring.
- Stellen Sie das Modell von Colab über die Firebase ML Model Management API direkt in Firebase bereit.
- Fügen Sie einen Mechanismus hinzu, der es Benutzern ermöglicht, Feedback zum Vorhersageergebnis zu geben, und verwenden Sie Firebase Analytics, um Benutzerfeedback zu verfolgen.
- A/B-Testen Sie das Average Word Vector-Modell und das MobileBERT-Modell mit Firebase A/B-Tests.
Erfahren Sie mehr
- Dokumentation zu Firebase Machine Learning
- TensorFlow Lite-Dokumentation
- Messen Sie die App-Leistung mit Firebase
- A/B-Testmodelle mit Firebase