Benutzerdefiniertes Textklassifizierungsmodell mit TensorFlow Lite Model Maker erstellen
Informationen zu diesem Codelab
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:
- Trainieren Sie ein Kommentar-Spamerkennungsmodell mit dem Codelab für TensorFlow Lite-Modellersteller
- Eine Flatter-App erstellen, um Codelab für Spamkommentare zu erkennen
Lerninhalte
- Informationen zur Aktualisierung des Modells für die Textklassifizierung, das Sie im Codelab zur Erkennung von Spamkommentaren mit TensorFlow Lite erstellt haben
- Ihr Modell so anpassen, dass der vorherrschende Spam in Ihrer App blockiert wird.
Voraussetzungen
- Die Flutter-App und das Spamfiltermodell, die Sie in den vorherigen Aktivitäten beobachtet und erstellt haben
2. Textklassifizierung verbessern
- Sie erhalten den Code für diesen Code, indem Sie dieses Repository klonen und die Anwendung aus dem Ordner
tfserving-flutter/codelab2/finished
laden. - 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.
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.
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:
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:
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
- 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 PlatzhalterPATH/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
- Öffne die Datei
lib/main.dart
mit deinem bevorzugten Code-Editor und suche nach dem Teil, der die VariableninputTensorName
undoutTensorName
definiert:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- Weisen Sie die Variable
inputTensorName
eineminput_1'
-Wert und die VariableoutputTensorName
einem'dense_1'
-Wert zu:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- Kopiere die heruntergeladene Datei
vocab.txt
in den Ordnerlib/assets/
. - Entfernen Sie die Textklassifizierungs-Flatter-App manuell aus dem Android-Emulator.
- Führe den Befehl
'flutter run'
in deinem Terminal aus, um die App zu starten. - 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.