Benutzerdefiniertes Textklassifizierungsmodell mit TensorFlow Lite Model Maker erstellen

1. Hinweis

In diesem Codelab lernen Sie, wie Sie das Textklassifizierungsmodell aktualisieren, das aus dem ursprünglichen Dataset „blog-spam-comments“ erstellt, aber mit eigenen Kommentaren optimiert wurde. Sie haben dann ein Modell, das für Ihre Daten geeignet ist.

Vorbereitung

Dieses Codelab ist Teil der Einführung in die Textklassifizierung in Flutter-Apps. Die Codelabs auf diesem Pfad sind sequenziell. Die App und das Modell, an denen Sie arbeiten, sollten bereits erstellt worden sein, während Sie den Codelabs gefolgt haben. Wenn Sie die vorherigen Aktivitäten noch nicht abgeschlossen haben, beenden Sie das bitte jetzt:

Lerninhalte

Voraussetzungen

  • Die Flutter-App und das Spamfiltermodell, die Sie in den vorherigen Aktivitäten beobachtet und erstellt haben

2. Textklassifizierung verbessern

  1. Sie erhalten den Code für diesen Code, indem Sie dieses Repository klonen und die Anwendung aus dem Ordner tfserving-flutter/codelab2/finished laden.
  2. Nachdem Sie das Docker-Deployment-Image gestartet haben, geben Sie in der von Ihnen erstellten App buy my book to learn online trading ein und klicken Sie dann auf BeyondCorp > Classify.

8f1e1974522f274d.png

Die App generiert einen niedrigen Spam-Wert, weil es im ursprünglichen Datenbestand nicht so oft Online-Trading gibt und das Modell nicht erkannt hat, dass es sich um Spam handelt. In diesem Codelab aktualisieren Sie das Modell mit neuen Daten, sodass es denselben Satz wie Spam erkennt.

2bd68691a26aa3da.png

3. CSV-Datei bearbeiten

Zum Trainieren des ursprünglichen Modells wurde ein Dataset als CSV-Datei (lmblog_comments.csv) erstellt, die fast 1.000 Kommentare enthält, die als Spam oder nicht als Spam markiert sind. Öffnen Sie die CSV-Datei in einem Texteditor, wenn Sie die Datei prüfen möchten.

Die CSV-Datei besteht aus der ersten Zeile mit den Spalten „commenttext“ und „spam“. Die nachfolgenden Zeilen haben folgendes Format:

62025273971c9a7f

Das Label rechts erhält einen true-Wert für Spam und einen false-Wert für keinen Spam. Die dritte Zeile wird beispielsweise als Spam eingestuft.

Wenn Nutzer Spam auf Ihrer Website hinterlassen, können Sie unten auf Ihrer 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
  • Speichern Sie die Datei unter einem neuen Namen, z. B. lmblog_comments.csv, damit Sie damit ein neues Modell trainieren können.

Für den Rest dieses Codelabs verwenden Sie das bereitgestellte Beispiel, das bearbeitet und auf Cloud Storage mit den Onlinehandelsupdates gehostet wird. Wenn Sie Ihr eigenes Dataset verwenden möchten, können Sie die URL im Code ändern.

4. Modell mit den neuen Daten neu trainieren

Wenn Sie das Modell neu trainieren möchten, können Sie einfach den Code aus (SpamCommentsModelMaker.ipynb) wiederverwenden, aber den Mauszeiger auf das neue CSV-Dataset namens lmblog_comments_extras.csv bewegen. Wenn du das gesamte Notebook mit den aktualisierten Inhalten benötigst, findest du es als SpamCommentsUpdateModelMaker.ipynb.

Wenn Sie Zugriff auf Colaboratory haben, können Sie es direkt starten. Andernfalls rufen Sie den Code aus dem Repository ab und führen ihn in der gewünschten Notebook-Umgebung aus.

Der aktualisierte Code sieht folgendermaßen aus:

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)

Während des Trainings sollten Sie sehen, dass das Modell weiterhin mit einer hohen Genauigkeit trainiert wird:

96a1547ddb6edf5b

Komprimieren Sie den gesamten Ordner /mm_update_spam_savedmodel und erstellen Sie die generierte Datei mm_update_spam_savedmodel.zip.

# Rename the SavedModel subfolder to a version number
!mv /mm_update_spam_savedmodel/saved_model /mm_update_spam_savedmodel/123
!zip -r mm_update_spam_savedmodel.zip /mm_update_spam_savedmodel/

5. Docker starten und die Flutter-App aktualisieren

  1. Entpacken Sie die heruntergeladene mm_update_spam_savedmodel.zip-Datei in einen Ordner. Beenden Sie dann die Docker-Containerinstanz aus dem vorherigen Codelab und starten Sie sie noch einmal. Ersetzen Sie dabei den Platzhalter PATH/TO/UPDATE/SAVEDMODEL durch den absoluten Pfad des Ordners, in dem die heruntergeladenen Dateien gehostet werden:
docker run -it --rm -p 8500:8500 -p 8501:8501 -v "PATH/TO/UPDATE/SAVEDMODEL:/models/spam-detection" -e MODEL_NAME=spam-detection tensorflow/serving
  1. Öffne die Datei lib/main.dart mit deinem bevorzugten Code-Editor und suche nach dem Teil, der die Variablen inputTensorName und outTensorName definiert:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
  1. Weisen Sie die Variable inputTensorName einem input_1'-Wert und die Variable outputTensorName einem 'dense_1'-Wert zu:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
  1. Kopiere die heruntergeladene Datei vocab.txt in den Ordner lib/assets/.
  2. Entfernen Sie die Textklassifizierungs-Flatter-App manuell aus dem Android-Emulator.
  3. Führe den Befehl 'flutter run' in deinem Terminal aus, um die App zu starten.
  4. Geben Sie in der App buy my book to learn online trading ein und klicken Sie auf GRP > Classify.

Durch die Änderung des Modells wurde das Modell mein Buch zum Online-Handel kaufen als Spam erkannt.

6. Glückwunsch

Sie haben das Modell mit neuen Daten neu trainiert, in die Flutter-App integriert und die Funktion zur Erkennung neuer Spam-Sätze aktualisiert.

Weitere Informationen