Fügen Sie Ihrer App mit TensorFlow Lite und Firebase – Android Codelab eine Textklassifizierung auf dem Gerät hinzu

1. Übersicht

text-classification-result.png

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 TF Lite-Stimmungsanalysemodelle mit TF Lite Model Maker
  • Stellen Sie TF Lite-Modelle in Firebase ML bereit und greifen Sie über Ihre App darauf zu
  • Integrieren Sie TF Lite-Stimmungsanalysemodelle mit der TF Lite Task Library in Ihre App

Was du brauchen wirst

  • Neueste Android Studio- Version.
  • Beispielcode.
  • Ein Testgerät mit Android 5.0+ und Google Play-Diensten 9.8 oder höher oder ein Emulator mit Google Play-Diensten 9.8 oder höher
  • Bei Verwendung eines Gerätes ein Verbindungskabel.

Wie werden Sie dieses Tutorial nutzen?

Lesen Sie es nur durch Lesen Sie es und absolvieren Sie die Übungen

Wie würden Sie Ihre Erfahrungen mit der Entwicklung von Android-Apps bewerten?

Anfänger Dazwischenliegend Kompetent

2. Holen Sie sich den Beispielcode

Klonen Sie das GitHub-Repository über die Befehlszeile.

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

Wenn Sie Git nicht installiert haben, können Sie das Beispielprojekt auch von der GitHub-Seite herunterladen oder auf diesen Link klicken.

3. Importieren Sie die Starter-App

Wählen Sie in Android Studio das Verzeichnis codelab-textclassification-android-master aus ( android_studio_folder.png ) aus dem Beispielcode-Download ( Datei > Öffnen > .../codelab-textclassification-android-master/start).

Sie sollten nun das Startprojekt in Android Studio geöffnet haben.

4. Führen Sie die Starter-App aus

Nachdem Sie das Projekt nun in Android Studio importiert haben, können Sie die App zum ersten Mal ausführen. Schließen Sie Ihr Android-Gerät an und klicken Sie auf Ausführen ( ausführen.png )in der Android Studio-Symbolleiste.

Die App sollte auf Ihrem Gerät gestartet werden. Es enthält nur eine einfache Benutzeroberfläche, die es einfach macht, Textklassifizierungsmodelle in den nächsten Schritten zu integrieren und zu testen. Wenn Sie zu diesem Zeitpunkt versuchen, Stimmungen vorherzusagen, wird die App nur einige Scheinergebnisse zurückgeben.

2fb4e69fafb2e3ed.png

5. Erstellen Sie ein Firebase-Konsolenprojekt

Fügen Sie Firebase zum Projekt hinzu

  1. Gehen Sie zur Firebase-Konsole .
  2. Wählen Sie Projekt hinzufügen .
  3. Wählen Sie einen Projektnamen aus oder geben Sie ihn ein.
  4. Befolgen Sie die verbleibenden Einrichtungsschritte in der Firebase-Konsole und klicken Sie dann auf Projekt erstellen (oder Firebase hinzufügen, wenn Sie ein vorhandenes Google-Projekt verwenden).

6. Fügen Sie Firebase zur App hinzu

  1. Klicken Sie im Übersichtsbildschirm Ihres neuen Projekts auf das Android-Symbol, um den Einrichtungsworkflow zu starten.
  2. Geben Sie den Paketnamen des Codelabs ein: org.tensorflow.lite.codelabs.textclassification

Fügen Sie Ihrer App die Datei „google-services.json“ hinzu

Nachdem Sie den Paketnamen hinzugefügt und Registrieren** ausgewählt haben, klicken Sie auf „Google-services.json herunterladen**“, um Ihre Firebase-Android-Konfigurationsdatei zu erhalten. Kopieren Sie dann die Datei google-services.json in das Verzeichnis * app * in Ihrem Projekt.

Fügen Sie Ihrer App das Google-Services-Plugin hinzu

Befolgen Sie die Anweisungen in der Firebase-Konsole, um die build.gradle.kts Dateien zu aktualisieren, um Firebase zu Ihrer App hinzuzufügen.

Das Google-Services-Plugin verwendet die Datei google-services.json, um Ihre Anwendung für die Verwendung von Firebase zu konfigurieren.

Synchronisieren Sie Ihr Projekt mit Gradle-Dateien

Um sicherzustellen, dass alle Abhängigkeiten für Ihre App verfügbar sind, sollten Sie Ihr Projekt an dieser Stelle mit Gradle-Dateien synchronisieren. Wählen Sie in der Android Studio-Symbolleiste Datei > Projekt mit Gradle-Dateien synchronisieren .

7. Führen Sie die App mit Firebase aus

Nachdem Sie nun das google-services -Plugin mit Ihrer JSON-Datei konfiguriert haben, können Sie die App mit Firebase ausführen. Schließen Sie Ihr Android-Gerät an und klicken Sie auf Ausführen ( ausführen.png )in der Android Studio-Symbolleiste.

Die App sollte auf Ihrem Gerät gestartet werden. Zu diesem Zeitpunkt sollte Ihre App immer noch erfolgreich erstellt werden.

8. 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. Sie können „Laufzeit“ > „Alle ausführen“ wählen, um das gesamte Notebook auf einmal auszuführen.

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.

9. Stellen Sie ein Modell für Firebase ML bereit

Die Bereitstellung eines Modells in Firebase ML ist aus zwei Hauptgründen nützlich:

  1. Wir können die Installationsgröße der App 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 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.

3c3c50e6ef12b3b.png

10. 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.

Fügen Sie in der Datei app/build.gradle.kts die Firebase Machine Learning-Abhängigkeit hinzu.

app/build.gradle.kts

Finden Sie diesen Kommentar:

// TODO 1: Add Firebase ML dependency

Dann füge hinzu:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

Wenn Sie von Android Studio aufgefordert werden, Ihr Projekt zu synchronisieren, wählen Sie „Jetzt synchronisieren“ aus.

Dann fügen wir etwas Code hinzu, um das Modell von Firebase herunterzuladen.

MainActivity.java

Finden Sie diesen Kommentar:

// TODO 2: Implement a method to download TFLite model from Firebase

Dann füge hinzu:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

Rufen Sie als Nächstes die downloadModel Methode in der onCreate Methode der Aktivität auf.

MainActivity.java

Finden Sie diesen Kommentar:

// TODO 3: Call the method to download TFLite model

Dann füge hinzu:

downloadModel("sentiment_analysis");

11. 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 NLClassifier 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 Gradle-Datei der App und fügen Sie die TensorFlow Lite Task Library (Text) in den Abhängigkeiten der App hinzu.

app/build.gradle

Finden Sie diesen Kommentar:

// TODO 4: Add TFLite Task API (Text) dependency

Dann füge hinzu:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

Wenn Sie von Android Studio aufgefordert werden, Ihr Projekt zu synchronisieren, wählen Sie „Jetzt synchronisieren“ aus.

Initialisieren Sie einen Textklassifikator

Anschließend laden wir das von Firebase heruntergeladene Stimmungsanalysemodell mithilfe des NLClassifier der Task-Bibliothek.

MainActivity.java

Lassen Sie uns eine NLClassifier-Instanzvariable deklarieren. Finden Sie diesen Kommentar:

// TODO 5: Define a NLClassifier variable

Dann füge hinzu:

private NLClassifier textClassifier;

Initialisieren Sie die textClassifier Variable mit dem von Firebase heruntergeladenen Stimmungsanalysemodell. Finden Sie diesen Kommentar:

// TODO 6: Initialize a TextClassifier with the downloaded model

Dann füge hinzu:

textClassifier = NLClassifier.createFromFile(model.getFile());

Text klassifizieren

Sobald die textClassifier Instanz eingerichtet wurde, können Sie eine Stimmungsanalyse mit einem einzigen Methodenaufruf ausführen.

MainActivity.java

Finden Sie diesen Kommentar:

// TODO 7: Run sentiment analysis on the input text

Dann füge hinzu:

List<Category> results = textClassifier.classify(text);

Implementieren Sie die Nachbearbeitung

Abschließend konvertieren wir die Ausgabe des Modells in einen beschreibenden Text, der auf dem Bildschirm angezeigt wird.

MainActivity.java

Finden Sie diesen Kommentar:

// TODO 8: Convert the result to a human-readable text

Entfernen Sie den Code, der den Dummy-Ergebnistext generiert:

String textToShow = "Dummy classification result.\n";

Dann füge hinzu:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

12. Führen Sie die endgültige App aus

Sie haben das Stimmungsanalysemodell in die App integriert, also testen wir es. Schließen Sie Ihr Android-Gerät an und klicken Sie auf Ausführen ( ausführen.png )in der Android Studio-Symbolleiste.

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

img/text-classification-result.png

13. 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:

14. 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

Eine Frage haben?

Probleme melden