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 sur mobile". 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 le premier parcours. Si vous n'avez pas encore terminé les activités précédentes, veuillez le faire maintenant avant de continuer :
- Créer une application de messagerie de base
- Créer un modèle de machine learning pour le spam dans les commentaires
- Mettre à jour votre application pour utiliser un modèle de machine learning de filtrage du spam
Points abordés
- Mettre à jour le modèle de classification de texte que vous avez créé dans le parcours "Premiers pas avec la classification de texte sur mobile"
- Personnaliser votre modèle de sorte qu'il bloque la plupart des spams dans votre application
Prérequis
- Application de messagerie et modèle de filtrage du spam 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 de TextClassificationStep2. Vous le trouverez dans le chemin d'accès TextClassificationOnMobile->Android.
Le code finalisé est également disponible pour vous sous la forme TextClassificationStep3.
Si vous ouvrez l'application de messagerie que vous avez créée et que vous essayez ce message, vous obtiendrez un score de spam très faible :

Les fautes d'orthographe comme celle-ci sont un moyen courant d'éviter les filtres antispam. Bien que le message soit inoffensif, les spammeurs ajoutent souvent un lien dans l'ID utilisateur (au lieu du message lui-même, où un lien pourrait déclencher les filtres).
Dans cet atelier, vous allez découvrir comment mettre à jour le modèle avec de nouvelles données. Une fois que vous avez terminé, l'exécution avec la même phrase donnera le résultat ci-dessous, où ce message est identifié comme 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 "true" pour "spam" et "false" pour "non spam". Dans ce cas, la ligne 3 est considérée comme du spam.
Pour ajouter vos propres commentaires, par exemple si de nombreuses personnes spamment votre site avec des messages sur le commerce en ligne, il vous suffit d'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
Une fois que vous avez terminé, enregistrez le fichier sous un nouveau nom (par exemple, lmblog_comments.csv). Vous pourrez ensuite 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 Google Cloud Storage avec les mises à jour du contenu "online trading". Si vous souhaitez utiliser 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 à Google Colab, vous pouvez le lancer directement ici. Sinon, récupérez le code dans le dépôt et exécutez-le dans l'environnement de notebook de votre choix.
Voici le code mis à jour :
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é.

Parcourez le notebook pour télécharger les fichiers model, vocab et labels. À l'étape suivante, vous les intégrerez dans Android.
5. Mettre à jour votre application Android
- Ouvrez l'application dans Android Studio et assurez-vous que Android est sélectionné en haut de l'explorateur de projet.
- Recherchez votre fichier
assetscontenant les libellés, le modèle et le vocabulaire de l'ancienne version du fichier de modèle.

- Effectuez un clic droit sur le dossier "assets".
- Dans le menu, sélectionnez l'option permettant d'ouvrir le dossier avec le gestionnaire de fichiers de votre système d'exploitation. (Afficher dans le Finder sur Mac, comme indiqué. Il s'agit de Afficher dans l'Explorateur de fichiers sur Windows et de Ouvrir dans Fichiers ou d'une option similaire sur Linux.)

- Le répertoire contenant le modèle, le vocabulaire et les libellés s'ouvre dans le gestionnaire de fichiers de votre système d'exploitation. Copiez les nouveaux que vous avez créés à l'étape précédente et collez-les par-dessus.
Vous n'avez pas besoin de modifier le code de votre application. Exécutez-le et testez-le. Vous obtiendrez des résultats semblables à ceux ci-dessus, où le modèle a été amélioré pour détecter le scénario de texte "trading en ligne".
Une version finale du code est disponible dans le dépôt sous le nom TextClassificationStep3.
6. Mettre à jour votre application iOS
Pour obtenir le code nécessaire, clonez ce dépôt et chargez l'application à partir de TextClassificationStep2. Vous le trouverez dans le chemin d'accès TextClassificationOnMobile->Android.
Le code finalisé est également disponible pour vous sous la forme TextClassificationStep3.
Si vous avez suivi l'atelier de programmation précédent, vous disposez d'une version iOS de TextClassificationStep2 qui fonctionne avec le modèle de base. Si vous souhaitez commencer à partir de notre version existante, il vous suffit de la récupérer dans le dépôt. Il fonctionnera avec le premier modèle entraîné sur les données de spam dans les commentaires. Vous obtiendrez peut-être des résultats comme celui-ci :

Il est très simple de mettre à jour l'application pour qu'elle utilise votre nouveau modèle. Le moyen le plus simple consiste à accéder à votre explorateur de fichiers, à obtenir les nouvelles versions de model.tflite, vocab et labels.txt, puis à les copier dans le répertoire de votre projet.
Une fois cette opération effectuée, votre application fonctionnera avec le nouveau modèle et vous pourrez le tester. Voici un exemple de la même phrase, mais en utilisant le nouveau modèle :

7. Félicitations
Et voilà ! En réentraînant le modèle avec de nouvelles données et en l'ajoutant à vos applications Android et iOS, vous avez pu mettre à jour leurs fonctionnalités sans écrire de nouveau code.
Étapes suivantes
Ce modèle n'est qu'un modèle fictif, entraîné sur seulement 1 000 éléments de données.
Lorsque vous explorez le traitement du langage naturel, vous pouvez être amené à travailler avec des ensembles de données plus volumineux. Vous pouvez également configurer un pipeline d'entraînement continu. Ainsi, lorsque de nouvelles données arrivent et sont signalées comme spam, un modèle peut être automatiquement réentraîné sur un backend, puis déployé à l'aide de Firebase Model Hosting.
Vos utilisateurs bénéficient d'un modèle mis à jour de manière transparente, sans que vous ayez besoin de le copier et de le coller en tant qu'asset, de le recompiler et de le redistribuer. Par exemple, vous pouvez également utiliser Firebase Remote Config pour gérer la valeur seuil d'envoi de spams, au lieu de la valeur 0, 8 que vous avez actuellement.
Les possibilités sont nombreuses, et nous les explorerons dans les prochains ateliers de programmation de ce cours.