Créer un modèle de classification de texte personnalisé avec TensorFlow Lite Model Maker

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 :

Objectifs de l'atelier

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

  1. Pour obtenir le code nécessaire, clonez ce dépôt et chargez l'application à partir du dossier tfserving-flutter/codelab2/finished.
  2. 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).

8f1e1974522f274d.png

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.

2bd68691a26aa3da.png

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 :

62025273971c9a7f.png

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é.

96a1547ddb6edf5b.png

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

  1. 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
  1. Ouvrez le fichier lib/main.dart avec votre éditeur de code préféré, puis recherchez la partie qui définit les variables inputTensorName et outTensorName :
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
  1. Redéfinissez la variable inputTensorName sur la valeur "input_1'" et la variable outputTensorName sur la valeur "'dense_1'" :
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
  1. Copiez le fichier vocab.txt que vous avez téléchargé dans le dossier lib/assets/ pour remplacer le fichier existant.
  2. Supprimez manuellement l'application de classification de texte Flutter d'Android Emulator.
  3. Exécutez la commande 'flutter run' dans votre terminal pour lancer l'application.
  4. 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.

En savoir plus