1. Avant de commencer
Dans cet atelier de programmation, vous allez apprendre à mettre à jour le modèle de classification de texte créé à partir de l'ensemble de données de commentaires de blog d'origine contenant du spam, mais enrichi de vos propres commentaires afin de créer un modèle compatible avec vos données.
Prérequis
Cet atelier de programmation fait partie du parcours Premiers pas avec la classification de texte dans les applications Flutter. Les ateliers de programmation de ce parcours doivent être suivis dans l'ordre. L'application et le modèle sur lesquels vous allez travailler doivent avoir déjà été créés pendant que vous suiviez les ateliers de programmation. Si vous n'avez pas encore terminé les activités précédentes, veuillez le faire maintenant avant de continuer :
- Atelier de programmation "Entraîner un modèle de détection de spam dans les commentaires avec TensorFlow Lite Model Maker"
- Atelier de programmation "Créer une application Flutter pour détecter le spam dans les commentaires"
Objectifs de l'atelier
- Mettre à jour le modèle de classification de texte que vous avez créé dans l'atelier de programmation "Entraîner un modèle de détection de spam dans les commentaires avec TensorFlow Lite Model Maker"
- Personnaliser votre modèle de sorte qu'il bloque la plupart des spams dans votre application
Ce dont vous avez besoin
- Application Flutter et modèle de filtre antispam que vous avez étudiés et créés dans les activités précédentes
2. Améliorer la classification du texte
- Pour obtenir le code nécessaire, clonez ce dépôt et chargez l'application à partir du dossier
tfserving-flutter/codelab2/finished
. - Après avoir démarré l'image Docker TensorFlow Serving, saisissez
buy my book to learn online trading
dans l'application que vous avez créée, puis cliquez sur gRPC > Classify (gRPC > Classer).
L'application génère un score de spam faible, car les occurrences de l'expression online trading (commerce en ligne) dans l'ensemble de données d'origine sont peu nombreuses et le modèle n'a pas appris qu'il s'agissait de spam. Dans cet atelier de programmation, vous allez mettre à jour le modèle avec de nouvelles données afin qu'il identifie la même phrase comme du spam.
3. Modifier le fichier CSV
Pour entraîner le modèle d'origine, vous avez créé un ensemble de données au format CSV (lmblog_comments.csv
) qui contient près de 1 000 commentaires marqués comme spam ou non spam. (Si vous souhaitez inspecter le fichier CSV, ouvrez-le dans un éditeur de texte.)
La première ligne du fichier CSV doit décrire les colonnes, intitulées commenttext
et spam
. Chaque ligne suivante se présente comme suit :
L'étiquette de droite est associée à une valeur true
pour "spam" et à une valeur false
pour "non spam". Par exemple, la troisième ligne est considérée comme du spam.
Si des personnes spamment votre site Web avec des messages sur le commerce en ligne, vous pouvez ajouter des exemples de commentaires contenant du spam au bas de votre site. Exemple :
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
- Enregistrez le fichier sous un nouveau nom, par exemple
lmblog_comments.csv
, afin de pouvoir l'utiliser pour entraîner un nouveau modèle.
Dans la suite de cet atelier de programmation, vous utiliserez l'exemple fourni, modifié et hébergé sur Cloud Storage avec les mises à jour du contenu "online trading". Si vous souhaitez vous servir de votre propre ensemble de données, vous pouvez modifier l'URL dans le code.
4. Réentraîner le modèle avec les nouvelles données
Pour réentraîner le modèle, vous pouvez simplement réutiliser le code de (SpamCommentsModelMaker.ipynb
), en le faisant pointer vers le nouvel ensemble de données CSV, appelé lmblog_comments_extras.csv
. Si vous souhaitez obtenir le notebook complet avec le contenu mis à jour, vous pouvez le trouver sous SpamCommentsUpdateModelMaker.ipynb.
Si vous avez accès à Colaboratory, vous pouvez le lancer directement. Sinon, récupérez le code dans le dépôt, puis exécutez-le dans l'environnement de notebook de votre choix.
Le code mis à jour se présente comme suit :
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)
Lors de l'entraînement, vous devriez constater que le modèle s'entraîne toujours avec un niveau de justesse élevé.
Compressez l'intégralité du dossier /mm_update_spam_savedmodel
et enregistrez le fichier mm_update_spam_savedmodel.zip
généré dans un sous-dossier.
# 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. Démarrer Docker et mettre à jour votre application Flutter
- Décompressez le fichier
mm_update_spam_savedmodel.zip
téléchargé dans un dossier, puis arrêtez l'instance de conteneur Docker de l'atelier de programmation précédent et redémarrez-la, en remplaçant l'espace réservéPATH/TO/UPDATE/SAVEDMODEL
par le chemin absolu du dossier hébergeant vos fichiers téléchargés :
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
- Ouvrez le fichier
lib/main.dart
avec votre éditeur de code préféré, puis recherchez la partie qui définit les variablesinputTensorName
etoutTensorName
:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- Redéfinissez la variable
inputTensorName
sur la valeur "input_1'
" et la variableoutputTensorName
sur la valeur "'dense_1'
" :
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- Copiez le fichier
vocab.txt
que vous avez téléchargé dans le dossierlib/assets/
pour remplacer le fichier existant. - Supprimez manuellement l'application de classification de texte Flutter d'Android Emulator.
- Exécutez la commande
'flutter run'
dans votre terminal pour lancer l'application. - Dans l'application, saisissez
buy my book to learn online trading
, puis cliquez sur gRPC > Classify (gRPC > Classer).
Le modèle a maintenant été amélioré pour détecter la phrase buy my book to online trading comme spam.
6. Félicitations
Vous avez réentraîné le modèle avec de nouvelles données, l'avez intégré à l'application Flutter et mis à jour la fonctionnalité pour qu'elle détecte de nouvelles phrases de spam.