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-Sentimentanalysemodelle mit TF Lite Model Maker trainieren
- TF Lite-Modelle in Firebase ML bereitstellen und über Ihre App darauf zugreifen
- TF Lite-Sentimentanalysemodelle mithilfe der TF Lite-Task Library in Ihre App einbinden
Voraussetzungen
- Die neueste Version von Android Studio.
- Beispielcode.
- Ein Testgerät mit Android 5.0 oder höher und Google Play-Dienste 9.8 oder höher oder ein Emulator mit Google Play-Dienste 9.8 oder höher
- Wenn Sie ein Gerät verwenden, ein Verbindungskabel.
Wie werden Sie diese Anleitung verwenden?
Wie würden Sie Ihre Erfahrung beim Erstellen von Android-Apps bewerten?
2. Beispielcode abrufen
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. Start-App importieren
Wählen Sie in Android Studio das Verzeichnis codelab-textclassification-android-master
( ) aus dem Download des Beispielcodes aus (File > Open > .../codelab-textclassification-android-master/start).
Das Startprojekt sollte jetzt in Android Studio geöffnet sein.
4. Start-App ausführen
Nachdem Sie das Projekt in Android Studio importiert haben, kann die App zum ersten Mal ausgeführt werden. Verbinden Sie Ihr Android-Gerät und klicken Sie in der Android Studio-Symbolleiste auf Ausführen ( ).
Die App sollte auf Ihrem Gerät gestartet werden. Sie enthält nur eine einfache Benutzeroberfläche, die die Integration und das Testen von Textklassifizierungsmodellen in den nächsten Schritten erleichtert. Wenn Sie jetzt versuchen, Stimmungen vorherzusagen, gibt die App nur einige Dummy-Ergebnisse zurück.
5. Firebase Console-Projekt erstellen
Firebase zum Projekt hinzufügen
- Rufen Sie die Firebase Console auf.
- Wählen Sie Projekt hinzufügen aus.
- Wählen Sie einen Projektnamen aus oder geben Sie ihn ein.
- Folgen Sie den verbleibenden Einrichtungsschritten in der Firebase Console und klicken Sie dann auf „Projekt erstellen“ (oder „Firebase hinzufügen“, wenn Sie ein vorhandenes Google-Projekt verwenden).
6. Firebase zur App hinzufügen
- Klicken Sie auf dem Übersichtsbildschirm Ihres neuen Projekts auf das Android-Symbol, um den Einrichtungsworkflow zu starten.
- Geben Sie den Paketnamen des Codelabs ein:
org.tensorflow.lite.codelabs.textclassification
Datei „google-services.json“ Ihrer App hinzufügen
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.
Google-Services-Plug-in zur App hinzufügen
Folgen Sie der Anleitung in der Firebase Console, um Firebase zu Ihrer App hinzuzufügen. Aktualisieren Sie dazu die build.gradle.kts
-Dateien.
Das google-services-Plug-in verwendet die Datei „google-services.json“, um Ihre Anwendung für die Verwendung von Firebase zu konfigurieren.
Projekt mit Gradle-Dateien synchronisieren
Damit alle Abhängigkeiten für Ihre App verfügbar sind, sollten Sie Ihr Projekt jetzt mit Gradle-Dateien synchronisieren. Wählen Sie in der Android Studio-Symbolleiste File > Sync Project with Gradle Files aus.
7. App mit Firebase ausführen
Nachdem Sie das google-services
-Plug-in mit Ihrer JSON-Datei konfiguriert haben, können Sie die App mit Firebase ausführen. Verbinden Sie Ihr Android-Gerät und klicken Sie in der Android Studio-Symbolleiste auf Ausführen ( ).
Die App sollte auf Ihrem Gerät gestartet werden. An diesem Punkt sollte Ihre App weiterhin erfolgreich erstellt werden.
8. 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. Sie können Laufzeit > Alle ausführen auswählen, um das gesamte Notebook auf einmal auszuführen.
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.
9. 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.
10. 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.
Fügen Sie der Datei app/build.gradle.kts
die Firebase Machine Learning-Abhängigkeit hinzu.
app/build.gradle.kts
Suchen Sie diesen Kommentar:
// TODO 1: Add Firebase ML dependency
Fügen Sie dann Folgendes 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 Sync Now (Jetzt synchronisieren) aus.
Fügen wir nun etwas Code hinzu, um das Modell von Firebase herunterzuladen.
MainActivity.java
Suchen Sie diesen Kommentar:
// TODO 2: Implement a method to download TFLite model from Firebase
Fügen Sie dann Folgendes 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 Methode downloadModel
in der Methode onCreate
der Aktivität auf.
MainActivity.java
Suchen Sie diesen Kommentar:
// TODO 3: Call the method to download TFLite model
Fügen Sie dann Folgendes hinzu:
downloadModel("sentiment_analysis");
11. 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 NLClassifier
-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 die Gradle-Datei der App auf und fügen Sie die TensorFlow Lite Task Library (Text) den Abhängigkeiten der App hinzu.
app/build.gradle
Suchen Sie diesen Kommentar:
// TODO 4: Add TFLite Task API (Text) dependency
Fügen Sie dann Folgendes 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 Sync Now (Jetzt synchronisieren) aus.
Textklassifizierer initialisieren
Anschließend laden wir das aus Firebase heruntergeladene Sentimentanalysemodell mit NLClassifier
aus der Task Library.
MainActivity.java
Deklarieren wir eine NLClassifier-Instanzvariable. Suchen Sie diesen Kommentar:
// TODO 5: Define a NLClassifier variable
Fügen Sie dann Folgendes hinzu:
private NLClassifier textClassifier;
Initialisieren Sie die Variable textClassifier
mit dem aus Firebase heruntergeladenen Modell für die Sentimentanalyse. Suchen Sie diesen Kommentar:
// TODO 6: Initialize a TextClassifier with the downloaded model
Fügen Sie dann Folgendes hinzu:
textClassifier = NLClassifier.createFromFile(model.getFile());
Text klassifizieren
Nachdem die textClassifier
-Instanz eingerichtet wurde, können Sie die Stimmungsanalyse mit einem einzigen Methodenaufruf ausführen.
MainActivity.java
Suchen Sie diesen Kommentar:
// TODO 7: Run sentiment analysis on the input text
Fügen Sie dann Folgendes hinzu:
List<Category> results = textClassifier.classify(text);
Nachbearbeitung implementieren
Schließlich wandeln wir die Ausgabe des Modells in einen beschreibenden Text um, der auf dem Bildschirm angezeigt wird.
MainActivity.java
Suchen Sie diesen Kommentar:
// TODO 8: Convert the result to a human-readable text
Entfernen Sie den Code, mit dem der Platzhaltertext für das Ergebnis generiert wird:
String textToShow = "Dummy classification result.\n";
Fügen Sie dann Folgendes 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. Endgültige App ausführen
Sie haben das Sentimentanalysemodell in die App integriert. Lassen Sie uns es testen. Verbinden Sie Ihr Android-Gerät und klicken Sie in der Android Studio-Symbolleiste auf Ausführen ( ).
Die App sollte das Sentiment der eingegebenen Filmrezension korrekt vorhersagen können.
13. 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:
14. 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