1. Hinweis
In diesem Codelab erfahren Sie, wie Sie das Textklassifizierungsmodell aktualisieren, das aus dem ursprünglichen Dataset mit Blog-Spam-Kommentaren erstellt wurde. Das Modell wird mit Ihren eigenen Kommentaren erweitert, damit es mit Ihren Daten funktioniert.
Vorbereitung
Dieses Codelab ist Teil des Lernpfads „Erste Schritte mit der Textklassifizierung in Flutter-Apps“. Die Codelabs in diesem Lernpfad sind sequenziell. Die App und das Modell, mit denen Sie arbeiten, sollten bereits erstellt worden sein, als Sie die Codelabs durchgearbeitet haben. Wenn Sie die vorherigen Aktivitäten noch nicht abgeschlossen haben, halten Sie bitte an und tun Sie dies jetzt:
- Trainieren eines Modells zur Erkennung von Kommentar-Spam mit dem TensorFlow Lite Model Maker-Codelab
- Codelab: Flutter-App zum Erkennen von Kommentar-Spam erstellen
Lerninhalte
- So aktualisieren Sie das Textklassifikationsmodell, das Sie im Codelab zum Trainieren eines Modells zur Erkennung von Kommentar-Spam mit TensorFlow Lite Model Maker erstellt haben.
- So passen Sie Ihr Modell an, damit es den häufigsten Spam in Ihrer App blockiert.
Voraussetzungen
- Die Flutter-App und das Spamfiltermodell, die Sie in den vorherigen Aktivitäten beobachtet und erstellt haben.
2. Textklassifizierung verbessern
- Sie können den Code für diesen Code abrufen, indem Sie dieses Repository klonen und die App aus dem Ordner
tfserving-flutter/codelab2/finished
laden. - Geben Sie nach dem Start des TensorFlow Serving-Docker-Images in der von Ihnen erstellten App
buy my book to learn online trading
ein und klicken Sie dann auf gRPC > Classify.
Die App generiert einen niedrigen Spam-Score, da im Original-Dataset nicht viele Vorkommen von Onlinehandel vorhanden sind und das Modell nicht gelernt hat, dass es sich um Spam handelt. In diesem Codelab aktualisieren Sie das Modell mit neuen Daten, damit es denselben Satz als Spam erkennt.
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 „Nicht Spam“ gekennzeichnet sind. Wenn Sie die CSV-Datei prüfen möchten, öffnen Sie sie in einem Texteditor.
Die CSV-Datei muss so aufgebaut sein, dass in der ersten Zeile die Spalten beschrieben werden, die mit commenttext
und spam
gekennzeichnet sind. Jede nachfolgende Zeile hat dieses Format:
Dem Label rechts wird der Wert true
für Spam und der Wert false
für „nicht Spam“ zugewiesen. Die dritte Zeile gilt beispielsweise als Spam.
Wenn Nutzer Ihre Website mit Nachrichten zum Onlinehandel spammen, 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 sie zum Trainieren eines neuen Modells verwenden können.
Für den Rest dieses Codelabs verwenden Sie das bereitgestellte Beispiel, das bearbeitet und in Cloud Storage mit den Onlinehandels-Updates gehostet wurde. Wenn Sie ein eigenes Dataset verwenden möchten, können Sie die URL im Code ändern.
4. Modell mit den neuen Daten neu trainieren
Um das Modell neu zu trainieren, können Sie einfach den Code aus (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 benötigen, finden Sie es unter 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 Sie ihn in der Notebook-Umgebung Ihrer Wahl aus.
Der aktualisierte Code sieht so 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)
Beim Training sollte das Modell weiterhin eine hohe Genauigkeit erreichen:
Komprimieren Sie den gesamten Ordner von /mm_update_spam_savedmodel
und laden Sie die generierte mm_update_spam_savedmodel.zip
-Datei herunter.
# 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 Flutter-App aktualisieren
- Entpacken Sie die heruntergeladene Datei
mm_update_spam_savedmodel.zip
in einen Ordner. Beenden Sie dann die Docker-Container-Instanz aus dem vorherigen Codelab und starten Sie sie noch einmal. Ersetzen Sie dabei den PlatzhalterPATH/TO/UPDATE/SAVEDMODEL
durch den absoluten Pfad des Ordners, in dem sich die heruntergeladenen Dateien befinden:
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
- Öffnen Sie die
lib/main.dart
-Datei in Ihrem bevorzugten Code-Editor und suchen Sie den Teil, in dem die VariableninputTensorName
undoutTensorName
definiert sind:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- Weisen Sie der Variablen
inputTensorName
den Wert „input_1'
“ und der VariablenoutputTensorName
den Wert „'dense_1'
“ zu:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- Kopieren Sie die heruntergeladene Datei
vocab.txt
in den Ordnerlib/assets/
, um die vorhandene Datei zu ersetzen. - Entfernen Sie die Flutter-App zur Textklassifizierung manuell aus dem Android-Emulator.
- Führen Sie den Befehl
'flutter run'
in Ihrem Terminal aus, um die App zu starten. - Geben Sie in der App
buy my book to learn online trading
ein und klicken Sie auf gRPC > Classify (gRPC > Klassifizieren).
Das Modell wurde verbessert und erkennt nun buy my book to online trading als Spam.
6. Glückwunsch
Sie haben das Modell mit neuen Daten neu trainiert, in die Flutter-App eingebunden und die Funktion zum Erkennen neuer Spam-Sätze aktualisiert.