Benutzerdefiniertes Textklassifizierungsmodell erstellen und Ihre Apps damit aktualisieren

1. Hinweis

In diesem Codelab erfahren Sie, wie Sie das Textklassifizierungsmodell aktualisieren, das auf dem ursprünglichen Dataset zu Spamkommentaren in Blogs aufbaut, aber mit eigenen Kommentaren verbessert wurde, damit Sie ein Modell haben, das mit Ihren Daten funktioniert.

Vorbereitung

Dieses Codelab ist Teil des Pfades „Erste Schritte mit der mobilen Textklassifizierung“. Die Codelabs in diesem Lernpfad sind sequenziell. Die App und das Modell, an dem Sie arbeiten, sollten bereits zuvor erstellt worden sein, während Sie dem ersten Weg gefolgt sind. Wenn du die vorherigen Aktivitäten noch nicht abgeschlossen hast, hör auf und tu das jetzt:

  • Einfache Messaging-App erstellen
  • Modell für maschinelles Lernen für Kommentar-Spam erstellen
  • Anwendung zur Verwendung eines Spamfiltermodells für maschinelles Lernen aktualisieren

Lerninhalte

  • Textklassifizierungsmodell aktualisieren, das Sie unter „Erste Schritte mit der mobilen Textklassifizierung“ erstellt haben
  • Wie Sie Ihr Modell anpassen, um den häufigsten Spam in Ihrer Anwendung zu blockieren

Voraussetzungen

  • Die Messaging-App und das Spamfiltermodell, die Sie beobachtet und in den vorherigen Aktivitäten 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 Pfad TextClassificationOnMobile->Android.

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 Spamwert:

f111e21903d6fd1f.png

Durch solche Rechtschreibfehler lassen sich Spamfilter häufig vermeiden. Auch wenn die Nachricht harmlos ist, fügen Spammer häufig einen Link in der Nutzer-ID hinzu (anstelle der Nachricht selbst, bei dem ein Link die Filter auslösen kann).

In diesem Lab erfahren Sie, wie Sie das Modell mit neuen Daten aktualisieren. Wenn Sie fertig sind, erhalten Sie mit demselben Satz das Ergebnis unten, in dem diese Nachricht als Spam erkannt wird.

c96613a0a4d1fef0.png

3. CSV-Datei bearbeiten

Zum Trainieren des ursprünglichen Modells wurde ein Dataset im CSV-Format (lmblog_comments.csv) mit fast tausend Kommentaren mit der Kennzeichnung „Spam“ oder „Kein Spam“ erstellt. (Öffnen Sie die CSV-Datei in einem Texteditor, wenn Sie sie überprüfen möchten.)

Der Aufbau der CSV-Datei besteht darin, dass die Spalten in der ersten Zeile beschrieben werden – hier heißen sie commenttext und spam.

Jede nachfolgende Zeile hat folgendes Format:

64c0128548e1d082.png

Das Label rechts ist „true“ für Spam und „false“ für „Kein Spam“. In diesem Fall gilt Zeile 3 als Spam.

Wenn Sie beispielsweise Ihre eigenen Kommentare hinzufügen möchten, z. B. wenn viele Nutzer Ihre Website mit Nachrichten über den Onlinehandel überfluten, müssen Sie lediglich unten auf der Website Beispiele für Spamkommentare 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, damit Sie ein neues Modell trainieren können.

Für den Rest dieses Codelabs verwenden Sie das in Google Cloud Storage bereitgestellte, bearbeitete und gehostete Beispiel zusammen mit den Updates für den Onlinehandel. 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 aus dem vorherigen Code (SpamCommentsModelMaker.ipynb) wiederverwenden, aber verweisen Sie ihn auf das neue CSV-Dataset mit dem Namen lmblog_comments_extras.csv. Wenn Sie das vollständige Notebook mit dem aktualisierten Inhalt haben möchten, finden Sie es als 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 es in der Notebookumgebung Ihrer Wahl 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 Training sollten Sie sehen, dass das Modell immer noch mit hoher Genauigkeit trainiert wird:

8886033d1f8161c.png

Gehen Sie das Notebook durch, um die Dateien für Modell,Vokabular und Labels herunterzuladen. Im nächsten Schritt binden Sie sie in Android ein.

5. Android-App aktualisieren

  1. Öffnen Sie die App in Android Studio und achten Sie darauf, dass oben im Project Explorer Android ausgewählt ist.
  2. Suchen Sie Ihre assets-Datei, die die Labels, das Modell und den Vokabular aus der alten Version der Modelldatei enthält.

91116524e9016ed4.png

  1. Klicken Sie mit der rechten Maustaste auf den Asset-Ordner.
  2. Wählen Sie im Menü die Option zum Öffnen des Ordners mit dem Dateimanager Ihres Betriebssystems aus. (Auf einem Mac kannst du die Schaltfläche Im Finder anzeigen, wie hier gezeigt. Unter Windows lautet die Option Im Explorer anzeigen und unter Linux In Dateien öffnen oder ähnlich.

25f63f9629657e85.png

  1. Dadurch wird das Verzeichnis mit dem Modell, dem Vokabular und den Labels im Dateimanager Ihres Betriebssystems geöffnet. Kopieren Sie die neuen, die Sie im vorherigen Schritt erstellt haben.

Der Code in Ihrer App muss nicht geändert werden. Führen Sie das Tool aus und testen Sie es. Sie sehen Ergebnisse wie die obigen, bei denen das Modell verbessert wurde, um den Onlinehandel zu erkennen. Textszenario ein.

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 Pfad 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 der vorhandenen Version beginnen möchten, nehmen Sie einfach diese aus dem Repository. Sie funktioniert mit dem ersten Modell, das mit den Spam-Kommentardaten trainiert wurde, und Sie erhalten möglicherweise folgende Ergebnisse:

553b845565b5b822.png

Die Aktualisierung der App zur Verwendung Ihres neuen Modells ist ganz einfach. Am einfachsten ist es, wenn Sie den Datei-Explorer aufrufen, die neuen Versionen von model.tflite, vocab und labels.txt herunterladen und in Ihr Projektverzeichnis kopieren.

Anschließend funktioniert Ihre App mit dem neuen Modell und Sie können es ausprobieren. Hier ist ein Beispiel für den gleichen Satz unter Verwendung des neuen Modells:

9031ec260b1857a3.png

7. Glückwunsch

Fertig! Indem Sie das Modell mit neuen Daten neu trainieren und es sowohl Ihren Android- als auch Ihren iOS-Apps hinzufügen, konnten Sie die Funktionalität aktualisieren, ohne neuen Code schreiben zu müssen.

Nächste Schritte

Dieses Modell ist ein Kinderspielzeug, das mit nur 1.000 Datenelementen trainiert wurde.

Wenn Sie mit Natural Language Processing vertraut sind, möchten Sie möglicherweise mit größeren Datasets arbeiten. Sie können auch eine Pipeline für kontinuierliches Training einrichten. Wenn neue Daten eintreffen und als Spam markiert werden, kann sie automatisch ein Modell auf einem Backend neu trainieren und es dann mit Firebase Model Hosting bereitstellen.

Ihre Nutzer erhalten nahtlos ein aktualisiertes Modell, ohne dass Sie es kopieren und als Asset einfügen, neu kompilieren und neu verteilen müssen. Sie können beispielsweise Firebase Remote Config auch verwenden, um den Grenzwert für das Senden von Spam zu verwalten, anstatt den Wert von 0,8, den Sie jetzt haben.

Es gibt so viele Möglichkeiten, die wir in zukünftigen Codelabs dieses Kurses untersuchen werden.