Ajouter la classification de texte sur l'appareil à votre application avec TensorFlow Lite et Firebase – Atelier de programmation Android

1. Présentation

text-classification-result.png

Bienvenue dans l'atelier de programmation "Classification de texte avec TensorFlow Lite et Firebase". Dans cet atelier de programmation, vous allez apprendre à 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 de TensorFlow Lite.

La classification de texte consiste à attribuer des balises ou des catégories à un texte en fonction de son contenu. Il s'agit de l'une des tâches fondamentales du traitement du langage naturel (TLN) avec de vastes applications telles que l'analyse des sentiments, l'étiquetage de sujets, la détection de spam et la détection d'intents.

L'analyse des sentiments consiste à interpréter et à classer les é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 l'opinion des clients sur les produits, les marques ou les services dans les conversations et les commentaires en ligne.

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

Points abordés

  • Entraîner des modèles d'analyse des sentiments TF Lite avec TF Lite Model Maker
  • Déployez des modèles TF Lite dans Firebase ML et accédez-y depuis votre application
  • Intégrer des modèles d'analyse des sentiments TF Lite à votre application à l'aide de la bibliothèque de tâches TF Lite

Prérequis

  • La dernière version d'Android Studio
  • Exemple de code
  • Un appareil de test équipé d'Android 5.0 ou version ultérieure et des 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 ?

Je vais le lire uniquement Je vais le lire et effectuer les exercices

Comment évalueriez-vous votre expérience en matière de création d'applications Android ?

Débutant Intermédiaire Expert

2. Obtenir l'exemple de code

Clonez le dépôt 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 depuis sa page GitHub ou en cliquant sur ce lien.

3. Importer l'application de démarrage

Dans Android Studio, sélectionnez le répertoire codelab-textclassification-android-master (dossier_android_studio.png) à partir de l'exemple de code téléchargé (File > Open > .../codelab-textclassification-android-master/start).

Le projet de démarrage devrait maintenant s'ouvrir dans Android Studio.

4. Exécuter 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, puis cliquez sur Run (Exécuter) exécuter.png dans la barre d'outils d'Android Studio.

L'application doit 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 dans la console Firebase

Ajouter Firebase au projet

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

6. Ajouter Firebase à l'application

  1. Sur l'écran "Vue d'ensemble" 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

Ajouter le fichier google-services.json à votre application

Après avoir ajouté le nom du package et sélectionné "Register"** (Enregistrer), cliquez sur "Download google-services.json"** (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.

Ajouter le plug-in google-services à votre application

Suivez les instructions de la console Firebase en mettant à jour les fichiers build.gradle.kts pour ajouter Firebase à votre application.

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

Synchroniser votre projet avec des fichiers Gradle

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

7. Exécuter l'application avec Firebase

Maintenant que vous avez configuré le plug-in google-services avec votre fichier JSON, vous pouvez exécuter l'application avec Firebase. Connectez votre appareil Android, puis cliquez sur Run (Exécuter) exécuter.png dans la barre d'outils d'Android Studio.

L'application devrait se lancer sur votre appareil. À ce stade, votre application devrait toujours se compiler correctement.

8. Entraîner un modèle d'analyse des sentiments

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

Cette étape est présentée sous la forme d'un notebook Python que vous pouvez ouvrir dans Google Colab. Vous pouvez choisir Environnement d'exécution > Exécuter tout pour exécuter l'intégralité du notebook en une seule fois.

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 dans Firebase ML

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

  1. Nous pouvons limiter la taille d'installation de l'application et ne télécharger le modèle que 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'application entière.

Le modèle peut être déployé via la console ou de façon automatisée à l'aide du SDK Firebase Admin. Au cours de cette étape, nous allons procéder au déploiement 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 l'ouvrez pour la première fois. Accédez ensuite à "Personnalisé", puis cliquez sur le bouton "Ajouter un modèle".

Lorsque vous y êtes invité, nommez le modèle sentiment_analysis et importez 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

Il peut être difficile de choisir quand télécharger le modèle distant depuis Firebase dans votre application, car les modèles TFLite peuvent devenir relativement volumineux. Idéalement, nous souhaitons éviter de charger le modèle immédiatement au démarrage de l'application. En effet, si notre modèle n'est utilisé que pour une seule fonctionnalité et que l'utilisateur ne l'utilise jamais, 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 l'extraction des modèles uniquement lorsque vous êtes connecté au Wi-Fi. Pour vous assurer que le modèle est disponible même sans connexion réseau, il est important de le regrouper sans l'application, en tant que sauvegarde.

Par souci de simplicité, nous allons supprimer le modèle groupé par défaut et télécharger systématiquement un modèle depuis Firebase lorsque l'application démarre pour la première fois. Ainsi, lorsque vous exécutez l'analyse du sentiment, 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

Rechercher ce commentaire:

// TODO 1: Add Firebase ML dependency

Ajoutez ensuite:

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

Lorsqu'Android Studio vous demande de synchroniser votre projet, sélectionnez Sync Now (Synchroniser).

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

MainActivity.java

Rechercher ce commentaire:

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

Ajoutez ensuite :

  /** 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();

                      }
              );

}

Appelez ensuite la méthode downloadModel dans la méthode onCreate de l'activité.

MainActivity.java

Rechercher ce commentaire:

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

Ajoutez ensuite:

downloadModel("sentiment_analysis");

11. Intégrer 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 en seulement quelques lignes de code. Nous allons initialiser une instance NLClassifier à l'aide du modèle TensorFlow Lite téléchargé depuis Firebase. Nous l'utiliserons ensuite pour classer le texte saisi par les utilisateurs de l'application et afficher le résultat dans 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 (Text) dans les dépendances de l'application.

app/build.gradle

Recherchez ce commentaire :

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

Ajoutez ensuite:

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

Lorsqu'Android Studio vous demande de synchroniser votre projet, sélectionnez Sync Now (Synchroniser).

Initialiser un classificateur de texte

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

MainActivity.java

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

// TODO 5: Define a NLClassifier variable

Ajoutez ensuite :

private NLClassifier textClassifier;

Initialisez la variable textClassifier avec le modèle d'analyse du sentiment téléchargé depuis Firebase. Rechercher ce commentaire:

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

Ajoutez ensuite:

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

Classer du 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

Rechercher ce commentaire:

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

Ajoutez ensuite:

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

Implémenter le post-traitement

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

MainActivity.java

Recherchez ce commentaire :

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

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

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

Ajoutez ensuite :

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écuter l'application finale

Vous avez intégré le modèle d'analyse des sentiments à l'application. Nous allons donc le tester. Connectez votre appareil Android, puis cliquez sur Run (Exécuter) (execute.png) dans la barre d'outils d'Android Studio.

L'application doit pouvoir prédire correctement le sentiment de la critique de film que vous saisissez.

img/text-classification-result.png

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

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

  • Firebase Performance Monitoring 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 vous souvenez que nous avons entraîné deux versions de notre modèle TFLite précédemment ? Les tests A/B sont un bon moyen d'identifier la version la plus performante en production.

Pour découvrir comment 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 dans 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 Firebase.

Points abordés

  • TensorFlow Lite
  • Firebase ML

Étapes suivantes

  • Mesurez la vitesse d'inférence de votre modèle avec Firebase Performance Monitoring.
  • Déployez le modèle directement dans Firebase depuis Colab via l'API Firebase ML Model Management.
  • Ajoutez un mécanisme permettant aux utilisateurs d'envoyer des commentaires sur le résultat de la prédiction et utilisez Firebase Analytics pour suivre leurs commentaires.
  • Effectuez des tests A/B sur le modèle de vecteur de mot moyen et le modèle MobileBERT avec Firebase A/B Testing.

En savoir plus

Vous avez une question ?

Signaler des problèmes