Fügen Sie Ihrer App mit TensorFlow Lite und Firebase – iOS Codelab eine geräteinterne Textklassifizierung hinzu

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

1. Übersicht

Klassifikationsergebnis_Bildschirm.png

Willkommen beim Codelab zur Textklassifizierung mit TensorFlow Lite und Firebase. 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 .

Textklassifizierung ist der Prozess, Text entsprechend seinem Inhalt mit Tags oder Kategorien zu versehen. Es ist eine der grundlegenden Aufgaben in der Verarbeitung natürlicher Sprache (Natural Language Processing, NLP) mit breiten Anwendungen wie Stimmungsanalyse, Themenkennzeichnung, Spam-Erkennung und Absichtserkennung.

Stimmungsanalyse ist die Interpretation und Klassifizierung von Emotionen (positiv, negativ und neutral) in Textdaten unter Verwendung von Textanalysetechniken. Die Stimmungsanalyse ermöglicht es Unternehmen, die Kundenstimmung gegenüber Produkten, Marken oder Dienstleistungen in Online-Gesprächen und Feedback zu identifizieren.

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 eine binäre – oder Zwei-Klassen-Klassifizierung, eine wichtige und weit verbreitete Art von maschinellem Lernproblem.

Was Sie lernen werden

  • Trainieren Sie ein Stimmungsanalysemodell von TF Lite 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
  • Profilmodellleistung über Firebase Performance Monitoring
  • Wählen Sie aus, welches von mehreren bereitgestellten Modellen über Remote Config geladen wird
  • Experimentieren Sie mit verschiedenen Modellen über Firebase A/B-Tests

Was du brauchen wirst

  • Xcode 11 (oder höher)
  • CocoaPods 1.9.1 (oder höher)

Wie werden Sie dieses Tutorial verwenden?

Nur durchlesen Lies es und vervollständige die Übungen

Wie würden Sie Ihre Erfahrung beim Erstellen von Android-Apps bewerten?

Anfänger Dazwischenliegend Kompetent

2. Erstellen Sie ein Firebase-Konsolenprojekt

Fügen Sie dem Projekt Firebase hinzu

  1. Gehen Sie zur Firebase-Konsole .
  2. 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

Beginnen Sie mit dem Klonen des Beispielprojekts und dem Ausführen von pod update im Projektverzeichnis:

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 spielen Sie mit der Textklassifizierung herum, um ein Gefühl dafür zu bekommen, wie es funktioniert.

Firebase einrichten

Folgen Sie der Dokumentation , um ein neues Firebase-Projekt zu erstellen. Nachdem Sie Ihr Projekt erstellt 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.

9efb62a92f27e939.png

Fügen Sie Ihrer Pod-Datei Firebase hinzu und führen Sie die Pod-Installation aus.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

Importieren Sie in der Methode didFinishLaunchingWithOptions Ihres AppDelegate Firebase 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-Notebook dargestellt, das Sie in Google Colab öffnen können.

In Colab öffnen

Nach Abschluss dieses Schritts verfügen Sie über ein Stimmungsanalysemodell von TensorFlow Lite, das für die Bereitstellung in einer mobilen App bereit ist.

5. Stellen Sie ein Modell in Firebase ML bereit

Das Bereitstellen eines Modells in Firebase ML ist aus zwei Hauptgründen nützlich:

  1. Wir können die App-Installationsgröße klein halten und das Modell nur bei Bedarf herunterladen
  2. 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 mithilfe des Firebase Admin SDK bereitgestellt werden. In diesem Schritt werden wir über die Konsole bereitstellen.

Öffnen Sie zunächst die Firebase Console und klicken Sie im linken Navigationsbereich auf Machine Learning. Klicken Sie auf „Erste Schritte“, wenn Sie die Seite zum ersten Mal öffnen. Navigieren Sie dann zu „Benutzerdefiniert“ und klicken Sie auf die Schaltfläche „Modell hinzufügen“.

Benennen Sie das Modell bei Aufforderung sentiment_analysis und laden Sie die Datei hoch, die Sie im vorherigen Schritt von Colab heruntergeladen haben.

3c3c50e6ef12b3b.png

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 Menge an Daten heruntergeladen. Wir können auch Download-Optionen festlegen, z. B. Modelle nur abrufen, wenn sie mit WLAN verbunden sind. Wenn Sie sicherstellen möchten, dass das Modell auch ohne Netzwerkverbindung verfügbar ist, ist es wichtig, es auch ohne die 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 der 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 ViewController.swift von viewDidLoad den Aufruf von loadModel() durch unsere neue Methode zum Herunterladen des Modells.

// 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 sollten Sie ein Protokoll in Xcode sehen, das angibt, dass das Remote-Modell erfolgreich heruntergeladen wurde. Versuchen Sie, Text einzugeben, und vergewissern Sie sich, dass sich das Verhalten der App nicht geändert hat.

7. Integrieren Sie das Modell in Ihre App

Die TensorFlow Lite Task Library hilft Ihnen, TensorFlow Lite-Modelle mit nur wenigen Codezeilen in Ihre App zu integrieren. Wir werden eine TFLNLClassifier Instanz mit dem von Firebase heruntergeladenen TensorFlow Lite-Modell initialisieren. Dann werden wir es verwenden, um die Texteingabe der App-Benutzer zu klassifizieren und das Ergebnis auf der Benutzeroberfläche anzuzeigen.

Fügen Sie die Abhängigkeit hinzu

Gehen Sie zum Podfile der App und fügen Sie TensorFlow Lite Task Library (Text) in den Abhängigkeiten der App hinzu. Stellen Sie sicher, dass Sie die Abhängigkeit unter der Deklaration target 'TextClassification' .

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

Führen Sie pod install aus, um die neue Abhängigkeit zu installieren.

Initialisieren Sie einen Textklassifikator

Dann laden wir das Stimmungsanalysemodell, das von Firebase heruntergeladen wurde, mit dem NLClassifier der Aufgabenbibliothek.

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 an TFLNLClassifier property.

Ersetzen Sie TODO durch den folgenden Code:

private var classifier: TFLNLClassifier?

Initialisieren Sie die Variable textClassifier mit dem Stimmungsanalysemodell, das von Firebase heruntergeladen wurde. 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)

Texte 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:) 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 letzte App aus

Sie haben das Stimmungsanalysemodell in die App integriert, also testen wir es. Verbinden Sie Ihr iOS-Gerät und klicken Sie auf Ausführen ( ausführen.png ) in der Xcode-Symbolleiste.

Die App sollte in der Lage sein, die Stimmung der von Ihnen eingegebenen Filmkritik korrekt vorherzusagen.

Klassifikationsergebnis_Bildschirm.png

9. Schalten Sie die App mit weiteren Firebase-Funktionen ein

Neben dem Hosten Ihrer TFLite-Modelle bietet Firebase mehrere weitere Funktionen, um Ihre Anwendungsfälle für maschinelles Lernen zu optimieren:

  • Firebase-Leistungsüberwachung, um die Inferenzgeschwindigkeit Ihres Modells zu messen, die auf dem Gerät der Benutzer ausgeführt wird.
  • Firebase Analytics, um zu messen, wie gut Ihr Modell in der Produktion abschneidet, indem die Benutzerreaktion gemessen wird.
  • Firebase A/B-Tests zum Testen mehrerer Versionen Ihres Modells
  • Erinnern Sie sich, dass wir zuvor zwei Versionen unseres TFLite-Modells trainiert haben? A/B-Tests sind ein guter Weg, um 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 Stimmungsanalyse-TFLite-Modell 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-Erste-Schritte-Leitfäden.

Was wir abgedeckt haben

  • TensorFlow Lite
  • Firebase ML

Nächste Schritte

  • Messen Sie die Inferenzgeschwindigkeit Ihres Modells 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-Test des Average Word Vector-Modells und des MobileBERT-Modells mit Firebase A/B-Tests.

Lern mehr

Eine Frage haben?

Probleme melden