Ajoutez une classification de texte sur l'appareil à votre application avec TensorFlow Lite et Firebase – Android Codelab

1. Vue d'ensemble

texte-classification-result.png

Bienvenue dans l'atelier de programmation sur la classification de texte avec TensorFlow Lite et Firebase. Dans cet atelier de programmation, vous apprendrez à utiliser TensorFlow Lite et Firebase pour entraîner et déployer un modèle de classification de texte dans votre application. Cet atelier de programmation est basé sur cet exemple TensorFlow Lite .

La classification de texte est le processus d'attribution de balises ou de catégories au texte en fonction de son contenu. Il s'agit de l'une des tâches fondamentales du traitement du langage naturel (NLP) avec des applications étendues telles que l'analyse des sentiments, l'étiquetage des sujets, la détection du spam et la détection des intentions.

L'analyse des sentiments est l'interprétation et la classification des émotions (positives, négatives et neutres) dans les données textuelles à l'aide de techniques d'analyse de texte. L'analyse des sentiments permet aux entreprises d'identifier le sentiment des clients à l'égard des produits, des marques ou des services dans les conversations et les commentaires en ligne.

Ce didacticiel montre comment créer un modèle d'apprentissage automatique pour l'analyse des sentiments, en particulier pour classer le texte comme positif ou négatif. Il s'agit d'un exemple de classification binaire (ou à deux classes), un type de problème d'apprentissage automatique important et largement applicable.

Ce que vous apprendrez

  • Former un modèle d'analyse des sentiments TF Lite avec TF Lite Model Maker
  • Déployez des modèles TF Lite sur Firebase ML et accédez-y depuis votre application
  • Intégrez les modèles d'analyse des sentiments TF Lite à votre application à l'aide de la bibliothèque de tâches TF Lite

Ce dont vous aurez besoin

  • Dernière version d'Android Studio .
  • Exemple de code.
  • Un appareil de test avec Android 5.0+ et les services Google Play 9.8 ou version ultérieure, ou un émulateur avec les services Google Play 9.8 ou version ultérieure
  • Si vous utilisez un appareil, un câble de connexion.

Comment allez-vous utiliser ce tutoriel ?

Lisez-le uniquement Lisez-le et complétez les exercices

Comment évalueriez-vous votre expérience dans la création d’applications Android ?

Novice Intermédiaire Compétent

2. Obtenez l'exemple de code

Clonez le référentiel GitHub à partir de la ligne de commande.

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

Si git n'est pas installé, vous pouvez également télécharger l'exemple de projet à partir de sa page GitHub ou en cliquant sur ce lien .

3. Importez l'application de démarrage

Depuis Android Studio, sélectionnez le répertoire codelab-textclassification-android-master ( android_studio_folder.png ) à partir du téléchargement de l'exemple de code ( Fichier > Ouvrir > .../codelab-textclassification-android-master/start).

Le projet de démarrage devrait maintenant être ouvert dans Android Studio.

4. Exécutez l'application de démarrage

Maintenant que vous avez importé le projet dans Android Studio, vous êtes prêt à exécuter l'application pour la première fois. Connectez votre appareil Android et cliquez sur Exécuter ( exécuter.png )dans la barre d'outils Android Studio.

L'application devrait se lancer sur votre appareil. Il ne contient qu'une interface utilisateur simple qui facilite l'intégration et le test des modèles de classification de texte dans les étapes suivantes. À ce stade, si vous essayez de prédire les sentiments, l'application ne renverra que des résultats factices.

2fb4e69fafb2e3ed.png

5. Créer un projet de console Firebase

Ajouter Firebase au projet

  1. Accédez à la console Firebase .
  2. Sélectionnez Ajouter un projet .
  3. Sélectionnez ou entrez un nom de projet.
  4. Suivez les étapes de configuration restantes dans la console Firebase, puis cliquez sur Créer un projet (ou Ajouter Firebase, si vous utilisez un projet Google existant).

6. Ajoutez Firebase à l'application

  1. Depuis l'écran de présentation de votre nouveau projet, cliquez sur l'icône Android pour lancer le workflow de configuration.
  2. Saisissez le nom du package de l'atelier de programmation : org.tensorflow.lite.codelabs.textclassification

Ajoutez le fichier google-services.json à votre application

Après avoir ajouté le nom du package et sélectionné S'inscrire**, cliquez sur Télécharger google-services.json** pour obtenir votre fichier de configuration Firebase Android, puis copiez le fichier google-services.json dans le répertoire * app * de votre projet.

Ajoutez le plug-in des services Google à votre application

Suivez les instructions sur la console Firebase pour mettre à jour les fichiers build.gradle.kts pour ajouter Firebase à votre application.

Le plugin google-services utilise le fichier google-services.json pour configurer votre application afin qu'elle utilise Firebase.

Synchronisez votre projet avec les fichiers Gradle

Pour être sûr que toutes les dépendances sont disponibles pour votre application, vous devez à ce stade synchroniser votre projet avec les fichiers Gradle. Sélectionnez Fichier > Synchroniser le projet avec les fichiers Gradle dans la barre d'outils Android Studio.

7. Exécutez l'application avec Firebase

Maintenant que vous avez configuré le plugin google-services avec votre fichier JSON, vous êtes prêt à exécuter l'application avec Firebase. Connectez votre appareil Android et cliquez sur Exécuter ( exécuter.png )dans la barre d'outils Android Studio.

L'application devrait se lancer sur votre appareil. À ce stade, votre application devrait toujours être créée avec succès.

8. Former un modèle d'analyse des sentiments

Nous utiliserons TensorFlow Lite Model Maker pour entraîner un modèle de classification de texte afin de prédire le sentiment d'un texte donné.

Cette étape se présente sous la forme d'un notebook Python que vous pouvez ouvrir dans Google Colab. Vous pouvez choisir Runtime > Run all pour exécuter tout le notebook en même temps.

Ouvrir dans Colab

Une fois cette étape terminée, vous disposerez d'un modèle d'analyse des sentiments TensorFlow Lite prêt à être déployé sur une application mobile.

9. Déployer un modèle sur Firebase ML

Le déploiement d'un modèle sur Firebase ML est utile pour deux raisons principales :

  1. Nous pouvons garder la taille d'installation de l'application petite et télécharger le modèle uniquement si nécessaire
  2. Le modèle peut être mis à jour régulièrement et avec un cycle de publication différent de celui de l'ensemble de l'application

Le modèle peut être déployé via la console ou par programme, à l'aide du SDK d'administration Firebase. Dans cette étape, nous allons déployer via la console.

Tout d’abord, ouvrez la console Firebase et cliquez sur Machine Learning dans le panneau de navigation de gauche. Cliquez sur « Commencer » si vous ouvrez cette première fois. Accédez ensuite à « Personnalisé » et cliquez sur le bouton « Ajouter un modèle ».

Lorsque vous y êtes invité, nommez le modèle sentiment_analysis et téléchargez le fichier que vous avez téléchargé depuis Colab à l'étape précédente.

3c3c50e6ef12b3b.png

10. Télécharger le modèle depuis Firebase ML

Choisir quand télécharger le modèle distant de Firebase dans votre application peut être délicat car les modèles TFLite peuvent devenir relativement volumineux. Idéalement, nous voulons éviter de charger le modèle immédiatement au lancement de l'application, car si notre modèle est utilisé pour une seule fonctionnalité et que l'utilisateur n'utilise jamais cette fonctionnalité, nous aurons téléchargé une quantité importante de données sans raison. Nous pouvons également définir des options de téléchargement telles que la récupération des modèles uniquement lorsque vous êtes connecté au wifi. Si vous voulez vous assurer que le modèle est disponible même sans connexion réseau, il est important de le regrouper également sans l'application en tant que sauvegarde.

Par souci de simplicité, nous supprimerons le modèle fourni par défaut et téléchargerons toujours un modèle depuis Firebase lorsque l'application démarre pour la première fois. De cette façon, lorsque vous exécutez une analyse des sentiments, vous pouvez être sûr que l'inférence s'exécute avec le modèle fourni par Firebase.

Dans le fichier app/build.gradle.kts , ajoutez la dépendance Firebase Machine Learning.

app/build.gradle.kts

Retrouvez ce commentaire :

// TODO 1: Add Firebase ML dependency

Puis ajouter:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

Lorsque Android Studio vous demande de synchroniser votre projet, choisissez Synchroniser maintenant .

Ajoutons ensuite du code pour télécharger le modèle depuis Firebase.

MainActivity.java

Retrouvez ce commentaire :

// TODO 2: Implement a method to download TFLite model from Firebase

Puis ajouter:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

Ensuite, appelez la méthode downloadModel dans la méthode onCreate de l'activité.

MainActivity.java

Retrouvez ce commentaire :

// TODO 3: Call the method to download TFLite model

Puis ajouter:

downloadModel("sentiment_analysis");

11. Intégrez le modèle dans votre application

La bibliothèque de tâches Tensorflow Lite vous aide à intégrer des modèles TensorFlow Lite dans votre application avec seulement quelques lignes de code. Nous initialiserons une instance NLClassifier à l'aide du modèle TensorFlow Lite téléchargé depuis Firebase. Ensuite, nous l'utiliserons pour classer le texte saisi par les utilisateurs de l'application et afficher le résultat sur l'interface utilisateur.

Ajouter la dépendance

Accédez au fichier Gradle de l'application et ajoutez la bibliothèque de tâches TensorFlow Lite (texte) dans les dépendances de l'application.

app/build.gradle

Retrouvez ce commentaire :

// TODO 4: Add TFLite Task API (Text) dependency

Puis ajouter:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

Lorsque Android Studio vous demande de synchroniser votre projet, choisissez Synchroniser maintenant .

Initialiser un classificateur de texte

Ensuite, nous chargerons le modèle d'analyse des sentiments téléchargé depuis Firebase à l'aide du NLClassifier de la bibliothèque de tâches.

MainActivity.java

Déclarons une variable d'instance NLClassifier. Retrouvez ce commentaire :

// TODO 5: Define a NLClassifier variable

Puis ajouter:

private NLClassifier textClassifier;

Initialisez la variable textClassifier avec le modèle d'analyse des sentiments téléchargé depuis Firebase. Retrouvez ce commentaire :

// TODO 6: Initialize a TextClassifier with the downloaded model

Puis ajouter:

textClassifier = NLClassifier.createFromFile(model.getFile());

Classer le texte

Une fois l'instance textClassifier configurée, vous pouvez exécuter une analyse des sentiments avec un seul appel de méthode.

MainActivity.java

Retrouvez ce commentaire :

// TODO 7: Run sentiment analysis on the input text

Puis ajouter:

List<Category> results = textClassifier.classify(text);

Implémenter le post-traitement

Enfin, nous convertirons la sortie du modèle en un texte descriptif à afficher à l'écran.

MainActivity.java

Retrouvez ce commentaire :

// TODO 8: Convert the result to a human-readable text

Supprimez le code qui génère le texte de résultat factice :

String textToShow = "Dummy classification result.\n";

Puis ajouter:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

12. Exécutez l'application finale

Vous avez intégré le modèle d'analyse des sentiments à l'application, testons-le. Connectez votre appareil Android et cliquez sur Exécuter ( exécuter.png )dans la barre d'outils Android Studio.

L'application devrait être capable de prédire correctement le sentiment de la critique de film que vous saisissez.

img/text-classification-result.png

13. Améliorez l'application avec plus de fonctionnalités Firebase

En plus d'héberger vos modèles TFLite, Firebase fournit plusieurs autres fonctionnalités pour optimiser vos cas d'utilisation de machine learning :

  • Surveillance des performances Firebase pour mesurer la vitesse d'inférence de votre modèle exécuté sur l'appareil des utilisateurs.
  • Firebase Analytics pour mesurer les performances de votre modèle en production en mesurant la réaction des utilisateurs.
  • Firebase A/B Testing pour tester plusieurs versions de votre modèle
  • Vous souvenez-vous que nous avons formé deux versions de notre modèle TFLite plus tôt ? Les tests A/B sont un bon moyen de savoir quelle version est la plus performante en production !

Pour en savoir plus sur la manière d'exploiter ces fonctionnalités dans votre application, consultez les ateliers de programmation ci-dessous :

14. Félicitations !

Dans cet atelier de programmation, vous avez appris à entraîner un modèle TFLite d'analyse des sentiments et à le déployer sur votre application mobile à l'aide de Firebase. Pour en savoir plus sur TFLite et Firebase, consultez d'autres exemples TFLite et les guides de démarrage de Firebase.

Ce que nous avons couvert

  • TensorFlow Lite
  • Firebase ML

Prochaines étapes

  • Mesurez la vitesse d'inférence de votre modèle avec Firebase Performance Monitoring.
  • Déployez le modèle de Colab directement sur Firebase via l'API Firebase ML Model Management.
  • Ajoutez un mécanisme pour permettre aux utilisateurs de donner leur avis sur le résultat de la prédiction et utilisez Firebase Analytics pour suivre les commentaires des utilisateurs.
  • Testez A/B le modèle Average Word Vector et le modèle MobileBERT avec les tests A/B Firebase.

Apprendre encore plus

Avoir une question?

Signaler des problèmes