1. Übersicht
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
- Integrieren Sie Stimmungsanalysemodelle von TF Lite in Ihre App mithilfe der TF Lite Task Library
Was du brauchen wirst
- Android Studio-Version 4.0+.
- Beispielcode.
- Ein Testgerät mit Android 4.4+ 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äts ein Verbindungskabel.
Wie werden Sie dieses Tutorial verwenden?
Wie würden Sie Ihre Erfahrung beim Erstellen von Android-Apps bewerten?
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 codelab-textclassification-android-master
( ) 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 in Android Studio importiert haben, können Sie die App zum ersten Mal ausführen. Verbinden Sie Ihr Android-Gerät und klicken Sie auf Ausführen ( ) in der Symbolleiste von Android Studio.
Die App sollte auf Ihrem Gerät starten. 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 an dieser Stelle versuchen, Stimmungen vorherzusagen, gibt die App nur einige Dummy-Ergebnisse zurück.
5. Erstellen Sie ein Firebase-Konsolenprojekt
Fügen Sie dem Projekt Firebase hinzu
- Gehen Sie zur Firebase-Konsole .
- Wählen Sie Projekt hinzufügen aus .
- Wählen Sie einen Projektnamen aus oder geben Sie einen ein.
- 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 der App Firebase hinzu
- Klicken Sie auf dem Übersichtsbildschirm Ihres neuen Projekts auf das Android-Symbol, um den Einrichtungsablauf zu starten.
- 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 Register** ausgewählt haben, klicken Sie auf Download google-services.json**, um Ihre Firebase-Android-Konfigurationsdatei abzurufen, und kopieren Sie dann die Datei google-services.json
in das Verzeichnis * app
* in Ihrem Projekt.
Fügen Sie Ihrer App das Plug-in für Google-Dienste hinzu
Befolgen Sie die Anweisungen in der Firebase-Konsole, um die build.gradle
Dateien zu aktualisieren, um Firebase zu Ihrer App hinzuzufügen.
Das Google-Services-Plug-in 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 Symbolleiste von Android Studio Datei > Projekt mit Gradle-Dateien synchronisieren.
7. Führen Sie die App mit Firebase aus
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 auf Ausführen ( ) in der Symbolleiste von Android Studio.
Die App sollte auf Ihrem Gerät starten. 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-Notebook dargestellt, das Sie in Google Colab öffnen können. Sie können Runtime > Run all auswählen, um das gesamte Notebook auf einmal auszuführen.
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.
9. Stellen Sie ein Modell in Firebase ML bereit
Das Bereitstellen eines Modells in Firebase ML ist aus zwei Hauptgründen nützlich:
- Wir können die App-Installationsgröße 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 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.
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 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.
Fügen Sie in der Datei app/build.gradle
die Firebase Machine Learning-Abhängigkeit hinzu.
app/build.gradle
Finde diesen Kommentar:
// TODO 1: Add Firebase ML dependency
Dann füge hinzu:
implementation 'com.google.firebase:firebase-ml-model-interpreter:22.0.3'
Wenn Sie von Android Studio aufgefordert werden, Ihr Projekt zu synchronisieren, wählen Sie Jetzt synchronisieren .
Fügen wir dann etwas Code hinzu, um das Modell von Firebase herunterzuladen.
MainActivity.java
Finde 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) {
final FirebaseCustomRemoteModel remoteModel =
new FirebaseCustomRemoteModel
.Builder(modelName)
.build();
FirebaseModelDownloadConditions conditions =
new FirebaseModelDownloadConditions.Builder()
.requireWifi()
.build();
final FirebaseModelManager firebaseModelManager =
FirebaseModelManager.getInstance();
firebaseModelManager
.download(remoteModel, conditions)
.continueWithTask(task ->
firebaseModelManager.getLatestModelFile(remoteModel)
)
.continueWith(executorService, (Continuation<File, Void>) task -> {
// Initialize a text classifier instance with the model
File modelFile = task.getResult();
// TODO 6: Initialize a TextClassifier with the downloaded model
// Enable predict button
predictButton.setEnabled(true);
return null;
})
.addOnFailureListener(e -> {
Log.e(TAG, "Failed to download and initialize the model. ", e);
Toast.makeText(
MainActivity.this,
"Model download failed, please check your connection.",
Toast.LENGTH_LONG)
.show();
predictButton.setEnabled(false);
});
}
Rufen Sie als Nächstes die Methode downloadModel
in der Methode onCreate
der Aktivität auf.
MainActivity.java
Finde 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
Die TensorFlow Lite Task Library hilft Ihnen, TensorFlow Lite-Modelle mit nur wenigen Codezeilen in Ihre App zu integrieren. Wir werden eine NLClassifier
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 zur Gradle-Datei der App und fügen Sie TensorFlow Lite Task Library (Text) in den Abhängigkeiten der App hinzu.
app/build.gradle
Finde diesen Kommentar:
// TODO 4: Add TFLite Task API (Text) dependency
Dann füge hinzu:
implementation 'org.tensorflow:tensorflow-lite-task-text:0.0.0-nightly'
Wenn Sie von Android Studio aufgefordert werden, Ihr Projekt zu synchronisieren, wählen Sie Jetzt synchronisieren .
Initialisieren Sie einen Textklassifikator
Dann laden wir das Stimmungsanalysemodell, das von Firebase heruntergeladen wurde, mit dem NLClassifier
der Aufgabenbibliothek.
MainActivity.java
Lassen Sie uns eine NLClassifier-Instanzvariable deklarieren. Finde diesen Kommentar:
// TODO 5: Define a NLClassifier variable
Dann füge hinzu:
private NLClassifier textClassifier;
Initialisieren Sie die Variable textClassifier
mit dem Stimmungsanalysemodell, das von Firebase heruntergeladen wurde. Finde diesen Kommentar:
// TODO 6: Initialize a TextClassifier with the downloaded model
Dann füge hinzu:
textClassifier = NLClassifier.createFromFile(modelFile);
Texte klassifizieren
Sobald die textClassifier
Instanz eingerichtet wurde, können Sie die Stimmungsanalyse mit einem einzigen Methodenaufruf ausführen.
MainActivity.java
Finde diesen Kommentar:
// TODO 7: Run sentiment analysis on the input text
Dann füge hinzu:
List<Category> results = textClassifier.classify(text);
Nachbearbeitung implementieren
Schließlich konvertieren wir die Ausgabe des Modells in einen beschreibenden Text, der auf dem Bildschirm angezeigt wird.
MainActivity.java
Finde 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 letzte App aus
Sie haben das Stimmungsanalysemodell in die App integriert, also testen wir es. Verbinden Sie Ihr Android-Gerät und klicken Sie auf Ausführen ( ) in der Symbolleiste von Android Studio.
Die App sollte in der Lage sein, die Stimmung der von Ihnen eingegebenen Filmkritik korrekt vorherzusagen.
13. 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 verbessern:
- 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:
14. 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
- Dokumentation zum maschinellen Lernen von Firebase
- TensorFlow Lite-Dokumentation
- Messen Sie die App-Leistung mit Firebase
- A/B-Testmodelle mit Firebase