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 d'origine sur les commentaires de spam d'un blog, mais enrichi par vos propres commentaires, afin d'obtenir 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 été créés précédemment, alors que vous avez suivi le premier parcours. Si vous n'avez pas encore terminé les activités précédentes, veuillez vous arrêter et le faire maintenant:
- Créer une application de messagerie basique
- 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 avec 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 pour bloquer le spam le plus répandu dans votre application
Prérequis
- Application de chat et modèle de filtrage antispam que vous avez observé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 finished est également disponible en tant que TextClassificationStep3
.
Si vous ouvrez l'application de messagerie que vous avez créée et essayée ce message, celui-ci donnera un très faible score de spam:
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 apprendre à mettre à jour le modèle avec de nouvelles données. Lorsque vous avez terminé, courir 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, un ensemble de données a été créé sous forme de fichier CSV (lmblog_comments.csv
) contenant près d'un millier de 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. Ici, elles sont appelées commenttext
et spam
.
Chaque ligne suivante se présente comme suit :
L'étiquette de droite est "true" pour les spams 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 envoient du spam sur votre site avec des messages sur le commerce en ligne, il vous suffit d'ajouter des exemples de commentaires indésirables en 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
Lorsque vous avez terminé, 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 Google Cloud Storage, avec les modifications apportées aux transactions en ligne. Vous pouvez modifier l'URL dans le code si vous souhaitez utiliser votre propre ensemble de données.
4. Réentraîner le modèle avec les nouvelles données
Pour réentraîner le modèle, il vous suffit de réutiliser le code précédent (SpamCommentsModelMaker.ipynb
), mais 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 depuis cette page. Sinon, récupérez le code depuis 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 continuera d'être entraîné avec un niveau de précision élevé:
Parcourez le notebook pour télécharger les fichiers du modèle, du vocab et des étiquettes. À l'étape suivante, vous les intégrerez à Android.
5. Mettre à jour votre application Android
- Ouvrez l'application dans Android Studio et assurez-vous qu'Android est sélectionné en haut de l'explorateur de projets.
- Recherchez le fichier
assets
contenant les étiquettes, le modèle et le vocabulaire de l'ancienne version du fichier de modèle.
- Effectuez un clic droit sur le dossier des éléments.
- 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 illustré. Elle s'intitule Afficher dans l'explorateur sous Windows et Ouvrir dans Fichiers (ou similaire sous Linux).
- Le répertoire contenant le modèle, le vocabulaire et les étiquettes s'ouvre dans le gestionnaire de fichiers de votre système d'exploitation. Copiez les nouvelles annonces que vous avez créées à l'étape précédente.
Vous n'avez pas besoin de modifier le code de votre application. Exécutez-le et testez-le. Vous obtenez des résultats semblables à ceux présentés ci-dessus, dans lesquels le modèle a été amélioré pour détecter les échanges en ligne. de texte.
Une version finale du code est disponible dans le dépôt en tant que 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 finished est également disponible en tant que TextClassificationStep3
.
Si vous avez suivi l'atelier de programmation précédent, vous disposez d'une version iOS de TextClassificationStep2 compatible avec le modèle de base. Si vous voulez utiliser l'ancienne version, il vous suffit de la récupérer dans le dépôt. Il fonctionnera avec le premier modèle entraîné avec les données de spam dans les commentaires et vous obtiendrez peut-être des résultats semblables à ceux-ci:
La mise à jour de l'application pour utiliser votre nouveau modèle est très simple. Le plus simple est d'accéder à votre explorateur de fichiers, d'obtenir les nouvelles versions de model.tflite
, de vocab
et de labels.txt
, puis de les copier dans le répertoire de votre projet.
Votre application fonctionnera ensuite avec le nouveau modèle, et vous pourrez l'essayer. Voici un exemple de la même phrase, mais utilisant le nouveau modèle:
7. Félicitations
Et voilà ! En entraînant à nouveau 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 avoir à écrire de nouveau code.
Étapes suivantes
Il ne s'agit que d'un modèle factice, entraîné avec seulement 1 000 éléments de données.
Lorsque vous explorez le traitement du langage naturel, vous pouvez travailler avec des jeux de données plus importants. Vous pouvez également configurer un pipeline d'entraînement continu. Ainsi, lorsque de nouvelles données arrivent et sont signalées comme spam, elles peuvent automatiquement réentraîner un modèle sur un backend, puis le déployer à l'aide de Firebase Model Hosting.
Vos utilisateurs obtiennent facilement un modèle mis à jour sans que vous ayez besoin de le copier et de le coller en tant qu'élément, de le recompiler et de le redistribuer. Vous pouvez également, par exemple, utiliser Firebase Remote Config pour gérer la valeur de seuil pour l'envoi de spam, au lieu de la valeur 0,8 dont vous disposez actuellement.
Les possibilités sont infinies, et nous les étudierons dans de prochains ateliers de programmation dans ce cours.