1. Hinweis
In diesem Codelab erfahren Sie, wie Sie das Modell zur Textklassifizierung aktualisieren, das aus dem ursprünglichen Dataset mit Blog-Spamkommentaren erstellt wurde. Es wird mit Ihren eigenen Kommentaren erweitert, damit Sie ein Modell haben, das mit Ihren Daten funktioniert.
Vorbereitung
Dieses Codelab ist Teil des Lernpfads Erste Schritte mit der mobilen Textklassifizierung. Die Codelabs in diesem Lernpfad sind sequenziell. Die App und das Modell, mit denen Sie arbeiten, sollten zuvor erstellt worden sein, als Sie den ersten Lernpfad durchgearbeitet haben. Wenn Sie die vorherigen Aktivitäten noch nicht abgeschlossen haben, halten Sie bitte an und tun Sie es jetzt:
- Einfache Messaging-App erstellen
- ML-Modell zur Erkennung von Spamkommentaren erstellen
- App aktualisieren, um ein Machine Learning-Modell für die Spamfilterung zu verwenden
Lerninhalte
- So aktualisieren Sie das Modell zur Textklassifizierung, das Sie im Lernpfad Erste Schritte mit der mobilen Textklassifizierung erstellt haben
- So passen Sie Ihr Modell an, damit es den häufigsten Spam in Ihrer App blockiert
Voraussetzungen
- Die Messaging-App und das Spamfiltermodell, die Sie in den vorherigen Aktivitäten beobachtet und erstellt haben.
2. Textklassifizierung verbessern
Sie können den Code dafür abrufen, indem Sie dieses Repository klonen und die App aus TextClassificationStep2 laden. Sie finden sie im TextClassificationOnMobile->Android Pfad.
Der fertige Code ist auch als TextClassificationStep3 verfügbar.
Wenn Sie die von Ihnen erstellte Messaging-App öffnen und diese Nachricht ausprobieren, erhalten Sie einen sehr niedrigen Spam-Score:

Rechtschreibfehler wie diese sind eine gängige Methode, um Spamfilter zu umgehen. Und obwohl die Nachricht harmlos ist, fügen Spammer oft einen Link in die Nutzer-ID ein (anstatt in die Nachricht selbst, wo ein Link die Filter auslösen könnte).
In diesem Lab erfahren Sie, wie Sie das Modell mit neuen Daten aktualisieren. Wenn Sie fertig sind, wird bei Ausführung mit demselben Satz das folgende Ergebnis angezeigt, wobei diese Nachricht als Spam identifiziert wird.

3. CSV-Datei bearbeiten
Zum Trainieren des ursprünglichen Modells wurde ein Dataset als CSV-Datei (lmblog_comments.csv) erstellt, die fast tausend Kommentare enthält, die entweder als Spam oder als kein Spam gekennzeichnet sind. Öffnen Sie die CSV-Datei in einem beliebigen Texteditor, wenn Sie sie prüfen möchten.
Die CSV-Datei ist so aufgebaut, dass in der ersten Zeile die Spalten beschrieben werden. Hier sind sie mit commenttext und spam gekennzeichnet.
Jede nachfolgende Zeile hat dieses Format:

Das Label rechts ist „true“ für Spam und „false“ für kein Spam. In diesem Fall wird Zeile 3 als Spam betrachtet.
Wenn Sie eigene Kommentare hinzufügen möchten, z. B. wenn viele Nutzer Ihre Website mit Nachrichten über Online-Trading spammen, müssen Sie nur Beispiele für Spamkommentare unten auf Ihrer Website hinzufügen. Beispiel:
online trading can be highly highly effective,true online trading can be highly effective,true online trading now,true online trading here,true online trading for the win,true
Wenn Sie fertig sind, speichern Sie die Datei unter einem neuen Namen (z. B. lmblog_comments.csv). Sie können sie dann verwenden, um ein neues Modell zu trainieren.
Für den Rest dieses Codelabs verwenden Sie das bereitgestellte Beispiel, das bearbeitet und in Google Cloud Storage gehostet wird und die Updates zum Online-Trading enthält. Sie können die URL im Code ändern, wenn Sie Ihr eigenes Dataset verwenden möchten.
4. Modell mit den neuen Daten neu trainieren
Um das Modell neu zu trainieren, können Sie einfach den Code von früher (SpamCommentsModelMaker.ipynb) wiederverwenden, aber auf das neue CSV-Dataset verweisen, das lmblog_comments_extras.csv heißt. Wenn Sie das vollständige Notebook mit den aktualisierten Inhalten möchten, finden Sie es unter SpamCommentsUpdateModelMaker.ipynb.
Wenn Sie Zugriff auf Google Colab haben, können Sie es direkt von hier aus starten. Andernfalls rufen Sie den Code aus dem Repository ab und führen Sie ihn in Ihrer bevorzugten Notebook-Umgebung aus.
Hier ist der aktualisierte Code:
training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',
origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
lmblog_comments_extras.csv',
extract=False)
Beim Trainieren sollten Sie sehen, dass das Modell weiterhin eine hohe Genauigkeit erreicht:

Laden Sie im Notebook die Dateien für das Modell, das Vokabular, und die Labels herunter. Im nächsten Schritt integrieren Sie sie in Android.
5. Android-App aktualisieren
- Öffnen Sie die App in Android Studio und prüfen Sie, ob oben im Projektexplorer Android ausgewählt ist.
- Suchen Sie die Datei
assets, die die Labels, das Modell und das Vokabular aus der alten Version der Modelldatei enthält.

- Klicken Sie mit der rechten Maustaste auf den Ordner „assets“.
- Wählen Sie im Menü die Option aus, um den Ordner mit dem Dateimanager Ihres Betriebssystems zu öffnen. Unter Mac ist das Im Finder anzeigen. Unter Windows ist es Im Explorer anzeigen und unter Linux In Dateien öffnen oder ähnlich.

- Dadurch wird das Verzeichnis mit dem Modell, dem Vokabular und den Labels im Dateimanager Ihres Betriebssystems geöffnet. Kopieren Sie die neuen Dateien, die Sie im vorherigen Schritt erstellt haben, in dieses Verzeichnis.
Sie müssen keine Änderungen am Code in Ihrer App vornehmen. Führen Sie sie aus und testen Sie sie. Sie sehen dann Ergebnisse wie oben, wobei das Modell verbessert wurde, um das Textszenario „Online-Trading“ zu erkennen.
Eine fertige Version des Codes ist im Repository als TextClassificationStep3 verfügbar.
6. iOS-App aktualisieren
Sie können den Code dafür abrufen, indem Sie dieses Repository klonen und die App aus TextClassificationStep2 laden. Sie finden sie im TextClassificationOnMobile->Android Pfad.
Der fertige Code ist auch als TextClassificationStep3 verfügbar.
Wenn Sie das vorherige Codelab durchgearbeitet haben, haben Sie eine iOS-Version von TextClassificationStep2, die mit dem Basismodell funktioniert. Wenn Sie mit unserer vorhandenen Version beginnen möchten, rufen Sie sie einfach aus dem Repository ab. Sie funktioniert mit dem ersten Modell, das mit den Daten zu Spamkommentaren trainiert wurde, und Sie sehen möglicherweise Ergebnisse wie diese:

Die App so zu aktualisieren, dass sie Ihr neues Modell verwendet, ist ganz einfach. Am einfachsten ist es, einfach zum Datei-Explorer zu wechseln, die neuen Versionen von model.tflite, vocab und labels.txt abzurufen und sie in Ihr Projektverzeichnis zu kopieren.
Sobald Sie das getan haben, funktioniert Ihre App mit dem neuen Modell und Sie können es ausprobieren. Hier ist ein Beispiel für denselben Satz, aber mit dem neuen Modell:

7. Glückwunsch
Jetzt weißt du Bescheid. Indem Sie das Modell mit neuen Daten neu trainiert und es sowohl Ihren Android- als auch Ihren iOS-Apps hinzugefügt haben, konnten Sie ihre Funktionalität aktualisieren, ohne neuen Code schreiben zu müssen.
Nächste Schritte
Dieses Modell ist nur ein Spielzeugmodell, das mit nur 1.000 Datenelementen trainiert wurde.
Wenn Sie sich mit Natural Language Processing beschäftigen, möchten Sie möglicherweise mit größeren Datasets arbeiten. Sie können auch eine Pipeline für kontinuierliches Training einrichten. Wenn neue Daten eingehen und als Spam gekennzeichnet werden, kann ein Modell automatisch im Backend neu trainiert und dann mit Firebase Model Hosting bereitgestellt werden.
Ihre Nutzer erhalten nahtlos ein aktualisiertes Modell, ohne dass Sie es als Asset kopieren und einfügen, neu kompilieren und neu verteilen müssen. Sie können beispielsweise auch Firebase Remote Config verwenden, um den Schwellenwert für das Senden von Spam zu verwalten, anstatt des aktuellen Werts von 0, 8.
Es gibt so viele Möglichkeiten und wir werden sie in zukünftigen Codelabs in diesem Kurs erkunden.