1. Hinweis
In diesem Codelab erfahren Sie, wie Sie das Textklassifizierungsmodell aktualisieren, das aus dem ursprünglichen Dataset mit Blog-Spam-Kommentaren erstellt wurde, aber mit Ihren eigenen Kommentaren erweitert wurde, 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 bereits im ersten Lernpfad erstellt worden sein. Wenn Sie die vorherigen Aktivitäten noch nicht abgeschlossen haben, halten Sie bitte an und tun Sie dies jetzt:
- Einfache Messaging-App erstellen
- Modell für maschinelles Lernen für Kommentar-Spam erstellen
- App für die Verwendung eines Machine-Learning-Modells für die Spamfilterung aktualisieren
Lerninhalte
- So aktualisieren Sie das Textklassifizierungsmodell, das Sie im Lernpfad „Erste Schritte mit der mobilen Textklassifizierung“ erstellt haben
- Modell anpassen, damit die häufigsten Spam-Arten in Ihrer App blockiert werden
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 unter TextClassificationOnMobile->Android.
Der fertige Code ist auch als TextClassificationStep3 verfügbar.
Wenn Sie die von Ihnen entwickelte Messaging-App öffnen und diese Nachricht ausprobieren, wird ein sehr niedriger Spam-Score angezeigt:

Falsch geschriebene Wörter wie dieses sind eine gängige Methode, um Spamfilter zu umgehen. Die Nachricht selbst ist zwar harmlos, aber Spammer fügen 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 der Ausführung mit demselben Satz das folgende Ergebnis angezeigt, in dem 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, das fast tausend Kommentare enthält, die entweder als „Spam“ oder „kein Spam“ gekennzeichnet sind. Wenn Sie die CSV-Datei prüfen möchten, öffnen Sie sie in einem beliebigen Texteditor.
In der ersten Zeile der CSV-Datei werden die Spalten beschrieben. Hier sind sie mit commenttext und spam gekennzeichnet.
Jede nachfolgende Zeile hat dieses Format:

Das Label rechts ist „wahr“ für Spam und „falsch“ für keine Spam-Nachrichten. In diesem Fall wird Zeile 3 als Spam eingestuft.
Wenn Sie eigene Kommentare hinzufügen möchten, z. B. wenn viele Nutzer Ihre Website mit Nachrichten über Onlinehandel 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 zum Trainieren eines neuen Modells verwenden.
Im weiteren Verlauf dieses Codelabs verwenden Sie das bereitgestellte Beispiel, das bearbeitet und in Google Cloud Storage gehostet wurde und die Online-Trading-Updates 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 oben (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 wünschen, finden Sie es unter SpamCommentsUpdateModelMaker.ipynb..
Wenn Sie Zugriff auf Google Colab haben, können Sie es direkt hier starten. Andernfalls können Sie den Code aus dem Repository abrufen und in der Notebook-Umgebung Ihrer Wahl ausführen.
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 Training sollte das Modell weiterhin eine hohe Genauigkeit erreichen:

Laden Sie über das Notebook die Dateien model, vocab und labels herunter. Im nächsten Schritt werden sie in Android eingebunden.
5. Android-App aktualisieren
- Öffnen Sie die App in Android Studio und prüfen Sie, ob oben im Projekt-Explorer Android ausgewählt ist.
- Suchen Sie die
assets-Datei mit den Labels, dem Modell und dem Vokabular aus der alten Version der Modelldatei.

- Klicken Sie mit der rechten Maustaste auf den Ordner „Assets“.
- Wählen Sie im Menü die Option zum Öffnen des Ordners mit dem Dateimanager Ihres Betriebssystems aus. (Im Finder anzeigen auf dem Mac, wie abgebildet. Unter Windows wird Im Explorer anzeigen und unter Linux In Dateien öffnen oder Ähnliches angezeigt.

- 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 diese Ordner.
Sie müssen keine Änderungen am Code in Ihrer App vornehmen. Führen Sie sie aus und testen Sie sie. Sie werden Ergebnisse wie oben sehen, bei denen das Modell verbessert wurde, um das Textszenario „Onlinehandel“ 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 unter TextClassificationOnMobile->Android.
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, können Sie sie einfach aus dem Repository übernehmen. Es wird mit dem ersten Modell gearbeitet, das mit den Kommentar-Spam-Daten trainiert wurde. Möglicherweise sehen Sie Ergebnisse wie diese:

Die Aktualisierung der App, damit sie Ihr neues Modell verwendet, ist ganz einfach. Am einfachsten ist es, wenn Sie im Datei-Explorer die neuen Versionen von model.tflite, vocab und labels.txt abrufen und in Ihr Projektverzeichnis kopieren.
Danach funktioniert Ihre App mit dem neuen Modell und Sie können es ausprobieren. Hier ein Beispiel für denselben Satz, aber mit dem neuen Modell:

7. Glückwunsch
Geschafft! Durch das erneute Trainieren des Modells mit neuen Daten und das Hinzufügen des Modells zu Ihren Android- und iOS-Apps konnten Sie die Funktionen der Apps aktualisieren, ohne neuen Code schreiben zu müssen.
Nächste Schritte
Dieses Modell ist nur ein Testmodell, das mit nur 1.000 Datenelementen trainiert wurde.
Wenn Sie sich mit Natural Language Processing beschäftigen, möchten Sie vielleicht 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önnten beispielsweise Firebase Remote Config verwenden, um den Schwellenwert für das Senden von Spam zu verwalten, anstelle des aktuellen Werts von 0, 8.
Es gibt so viele Möglichkeiten, die wir in zukünftigen Codelabs in diesem Kurs näher betrachten werden.