arrow_back

Classer du texte en catégories avec l'API Natural Language

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Classer du texte en catégories avec l'API Natural Language

Lab 1 heure universal_currency_alt 5 crédits show_chart Intermédiaire
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP063

Google Cloud – Ateliers adaptés au rythme de chacun

Aperçu

L'API Cloud Natural Language vous permet d'extraire des entités à partir de texte, d'effectuer des analyses des sentiments et de la syntaxe, ainsi que de classer du texte selon des catégories. Dans cet atelier, nous allons nous concentrer sur la classification de texte. Grâce à une base de données riche de plus de 700 catégories, cette fonctionnalité de l'API permet de classer facilement de vastes ensembles de données de texte.

Objectifs de l'atelier

  • Créer une requête d'API Natural Language et appeler l'API avec curl
  • Utiliser la fonctionnalité de classification de texte de l'API Natural Language
  • Utiliser la classification de texte pour comprendre un ensemble de données issu d'articles de presse

Avant de commencer l'atelier

Avant de cliquer sur le bouton "Démarrer l'atelier"

Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.

Pour réaliser cet atelier :

  • vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
Remarque : Ouvrez une fenêtre de navigateur en mode incognito/navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le temporaire étudiant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier afin d'éviter que des frais supplémentaires ne vous soient facturés.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :

    • Le bouton Ouvrir la console Google
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google. L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue Se connecter. Cliquez sur Suivant.

  4. Copiez le mot de passe inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue de bienvenue. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis dans le panneau de gauche. Ne saisissez pas vos identifiants Google Cloud Skills Boost. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  5. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas aux essais offerts.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Vous pouvez afficher le menu qui contient la liste des produits et services Google Cloud en cliquant sur le menu de navigation en haut à gauche. Icône du menu de navigation

Activer Cloud Shell

Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.

  1. Cliquez sur Activer Cloud Shell Icône Activer Cloud Shell en haut de la console Google Cloud.

Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

  2. Vous devez à présent obtenir le résultat suivant :

Résultat :

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = <ID_Projet>

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Activer l'API Cloud Natural Language

  1. Développez le menu de navigation (Icône du menu de navigation) en haut à gauche de l'écran.

  2. Sélectionnez API et services > API et services activés.

  1. Cliquez sur Activer les API et les services.
  1. Saisissez ensuite language dans la zone de recherche.

  2. Cliquez sur API Cloud Natural Language :

Si l'API n'est pas activée, le bouton Activer apparaît.

  1. Cliquez sur Activer pour activer l'API Cloud Natural Language.

Une fois que l'API est activée, Google Cloud affiche les informations suivantes :

Détails de l&#39;API, avec deux boutons : &quot;Gérer&quot; et &quot;Essayer cette API&quot;, ainsi que la coche d&#39;activation de l&#39;API

Tâche 2 : Créer une clé API

Étant donné que vous utilisez curl pour envoyer une requête à l'API Natural Language, vous devez générer une clé API afin de transmettre l'URL de la requête.

  1. Pour créer une clé API, dans votre console, cliquez sur le menu de navigation > API et services > Identifiants.

  2. Cliquez ensuite sur Créer des identifiants.

  3. Dans le menu déroulant, sélectionnez Clé API.

  4. Ensuite, copiez la clé que vous venez de générer, puis cliquez sur Fermer.

Cliquez sur Vérifier ma progression pour valider l'objectif.

Créer une clé API

Vous disposez désormais d'une clé API. Enregistrez sa valeur en tant que variable d'environnement afin d'éviter de l'insérer à chaque requête.

Pour poursuivre, connectez-vous à l'instance configurée pour vous via SSH.

  1. Ouvrez le menu de navigation et sélectionnez Compute Engine > Instances de VM. Vous devez voir une instance linux-instance provisionnée.
  1. Cliquez sur le bouton SSH. Vous êtes redirigé vers un shell interactif.

  2. Dans la ligne de commande, saisissez la commande suivante, en remplaçant <YOUR_API_KEY> par la clé que vous venez de copier :

export API_KEY=<YOUR_API_KEY>

Tâche 3 : Classer un article de presse

Grâce à la méthode "classifyText" de l'API Natural Language, vous pouvez classer des données de texte par catégorie grâce à un seul appel d'API. Vous obtenez ainsi une liste de catégories de contenu qui s'appliquent à un document texte.

Ces catégories sont plus ou moins spécifiques. Elles concernent aussi bien des thèmes généraux, comme /Computers & Electronics (/Informatique et électronique), que des sujets très spécifiques : /Computers & Electronics/Programming/Java (Programming Language) (/Informatique et électronique/Programmation/Java [langage de programmation]). La liste complète des catégories (plus de 700) est disponible sur la page Catégories de contenu.

Vous allez commencer par classer un seul article, puis vous verrez comment utiliser cette méthode pour analyser un vaste corpus d'articles de presse.

  1. Pour commencer, prenez le titre et la description d'un article du New York Times paru dans la rubrique gastronomie :

A Smoky Lobster Salad With a Tapa Twist. This spin on the Spanish pulpo a la gallega skips the octopus, but keeps the sea salt, olive oil, pimentón and boiled potatoes. (Salade de homard fumé façon tapas. Pour cette version revisitée de la recette espagnole du poulpe à la galicienne, pas de poulpe, mais nous gardons l'esprit de la recette avec le sel de mer, l'huile d'olive, le paprika et les pommes de terre vapeur.)

  1. Créez un fichier nommé request.json et ajoutez-y le code ci-dessous. Vous pouvez créer le fichier à l'aide de l'éditeur de ligne de commande de votre choix (nano, vim ou emacs).
{ "document":{ "type":"PLAIN_TEXT", "content":"A Smoky Lobster Salad With a Tapa Twist. This spin on the Spanish pulpo a la gallega skips the octopus, but keeps the sea salt, olive oil, pimentón and boiled potatoes." } } Créer une requête pour classer un article de presse
  1. Vous pouvez maintenant envoyer ce texte à la méthode classifyText de l'API Natural Language à l'aide de la commande curl suivante :
curl "https://language.googleapis.com/v1/documents:classifyText?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Examinez la réponse.

{ categories: [ { name: '/Food & Drink/Cooking & Recipes', confidence: 0.85 }, { name: '/Food & Drink/Food/Meat & Seafood', confidence: 0.63 } ] }

Vous avez créé une requête API Speech, puis appelé cette API.

  1. Exécutez la commande suivante pour enregistrer la réponse dans le fichier result.json :
curl "https://language.googleapis.com/v1/documents:classifyText?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json > result.json Vérifier la réponse de l'analyse d'entités

L'API renvoie deux catégories pour ce texte :

  • /Food & Drink/Cooking & Recipes
  • /Food & Drink/Food/Meat & Seafood

Bien que le texte ne mentionne pas clairement qu'il s'agit d'une recette à base de fruits de mer, l'API est capable de le classer. Nous venons de classer un premier article. Pour prendre toute la mesure de cette fonctionnalité, classons maintenant d'importants volumes de données textuelles.

Tâche 4 : Classer un grand ensemble de données textuelles

La méthode classifyText peut vous aider à analyser des ensembles de données contenant beaucoup de texte. Vous allez l'utiliser sur cet ensemble de données public composé d'articles de presse publiés par la BBC. L'ensemble de données comprend 2 225 articles portant sur cinq thèmes (économie, divertissement, politique, sport et technologie) parus en 2004 et 2005. Un sous-ensemble de ces articles se trouve dans un bucket public Cloud Storage. Les articles se présentent sous forme de fichier .txt.

Afin d'examiner les données et de les envoyer à l'API Natural Language, vous devez écrire un script Python permettant de lire chaque fichier texte à partir de Cloud Storage. Vous devez ensuite les envoyer au point de terminaison classifyText, puis stocker les résultats dans une table BigQuery. BigQuery est l'outil d'entrepôt big data de Google Cloud. Grâce à lui, vous pouvez stocker et analyser facilement de vastes ensembles de données.

  • Pour visualiser le type de texte avec lequel vous allez travailler, exécutez la commande ci-dessous qui permet d'afficher un article (gsutil fournit une interface de ligne de commande pour Cloud Storage) :
gsutil cat gs://spls/gsp063/bbc_dataset/entertainment/001.txt

Vous allez maintenant créer une table BigQuery pour vos données.

Tâche 5 : Créer une table BigQuery pour les données textuelles catégorisées

Avant d'envoyer le texte à l'API Natural Language, vous devez disposer d'un emplacement pour stocker le texte et les catégories associés à chaque article.

  1. Accédez au menu de navigation > BigQuery dans la console.

  2. Cliquez sur OK.

  3. Pour créer un ensemble de données, cliquez sur l'icône Afficher les actions à côté de l'ID de votre projet, puis sélectionnez Créer un ensemble de données :

Option &quot;Créer un ensemble de données&quot; mise en évidence dans le menu &quot;Afficher les actions&quot;

  1. Nommez l'ensemble de données news_classification_dataset, puis cliquez sur Créer un ensemble de données.

  2. Pour créer une table, cliquez sur l'icône Afficher les actions à côté de news_classification_dataset, puis sélectionnez Créer une table.

  1. Utilisez les paramètres suivants pour la nouvelle table :
  • Créez la table à partir d'une table vide.
  • Nommez la table article_data.
  1. Sous "Schéma", cliquez sur Ajouter un champ et ajoutez les trois champs suivants :
Nom du champ Type Mode
article_text STRING NULLABLE
category STRING NULLABLE
confidence FLOAT NULLABLE

Liste des champs dans la section &quot;Schéma&quot; de la page &quot;Créer une table&quot; : &quot;article-text&quot;, &quot;category&quot; et &quot;confidence&quot;

  1. Cliquez sur Créer une table.

Pour le moment, la table est vide. Lors de la prochaine étape, vous allez lire les articles à partir de Cloud Storage, les envoyer à l'API Natural Language pour qu'ils soient classés, et stocker les résultats dans BigQuery.

Cliquez sur Vérifier ma progression pour valider l'objectif.

Créer un ensemble de données et une table pour les données textuelles catégorisées

Tâche 6 : Classer les données des articles de presse et stocker le résultat dans BigQuery

Pour poursuivre, connectez-vous à Cloud Shell. Cliquez sur Continuer si vous y êtes invité.

Avant d'écrire un script permettant d'envoyer les données de presse à l'API Natural Language, vous devez créer un compte de service. Il vous permettra de vous authentifier auprès de l'API Natural Language et de BigQuery à partir d'un script Python.

  1. Exportez l'ID de votre projet en tant que variable d'environnement :
export PROJECT={{{project_0.project_id | Project ID}}}
  1. Exécutez les commandes suivantes pour créer un compte de service :
gcloud iam service-accounts create my-account --display-name my-account gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:my-account@$PROJECT.iam.gserviceaccount.com --role=roles/bigquery.admin gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:my-account@$PROJECT.iam.gserviceaccount.com --role=roles/serviceusage.serviceUsageConsumer gcloud iam service-accounts keys create key.json --iam-account=my-account@$PROJECT.iam.gserviceaccount.com export GOOGLE_APPLICATION_CREDENTIALS=key.json

Vous êtes maintenant prêt à envoyer des données textuelles à l'API Natural Language.

  1. Écrivez un script Python à l'aide du module Python pour Google Cloud.

Vous pouvez réaliser cette opération dans le langage de votre choix, car plusieurs bibliothèques clientes cloud sont disponibles.

  1. Créez un fichier nommé classify-text.py et copiez-y le code ci-dessous. Vous pouvez créer le fichier à l'aide de l'éditeur de ligne de commande de votre choix (nano, vim ou emacs).
from google.cloud import storage, language, bigquery # Set up your GCS, NL, and BigQuery clients storage_client = storage.Client() nl_client = language.LanguageServiceClient() bq_client = bigquery.Client(project='{{{project_0.project_id | Project ID}}}') dataset_ref = bq_client.dataset('news_classification_dataset') dataset = bigquery.Dataset(dataset_ref) table_ref = dataset.table('article_data') table = bq_client.get_table(table_ref) # Send article text to the NL API's classifyText method def classify_text(article): response = nl_client.classify_text( document=language.Document( content=article, type_=language.Document.Type.PLAIN_TEXT ) ) return response rows_for_bq = [] files = storage_client.bucket('qwiklabs-test-bucket-gsp063').list_blobs() print("Got article files from GCS, sending them to the NL API (this will take ~2 minutes)...") # Send files to the NL API and save the result to send to BigQuery for file in files: if file.name.endswith('txt'): article_text = file.download_as_bytes() nl_response = classify_text(article_text) if len(nl_response.categories) > 0: rows_for_bq.append((str(article_text), nl_response.categories[0].name, nl_response.categories[0].confidence)) print("Writing NL API article data to BigQuery...") # Write article text + category data to BQ errors = bq_client.insert_rows(table, rows_for_bq) assert errors == []

Vous êtes désormais prêt à classer les articles et à les importer dans BigQuery.

  1. Exécutez le script suivant :
python3 classify-text.py

L'exécution du script prend environ deux minutes. Nous allons en profiter pour examiner son rôle plus en détail.

Nous utilisons la bibliothèque cliente Python Google Cloud pour accéder à Cloud Storage, à l'API Natural Language et à BigQuery. Tout d'abord, un client est créé pour chaque service, puis des références à la table BigQuery sont générées. L'élément files fait référence à chacun des fichiers de l'ensemble de données BBC du bucket public. Les fichiers sont examinés, les articles sont téléchargés sous forme de chaînes, puis chaque chaîne est envoyée à l'API Natural Language dans la fonction classify_text. Lorsque l'API Natural Language renvoie une catégorie pour un article, ces données (article et catégorie) sont enregistrées dans la liste rows_for_bq. Au terme du classement des articles, les données sont insérées dans BigQuery à l'aide de insert_rows().

Remarque : L'API Natural Language peut renvoyer plusieurs catégories pour un document, mais pour plus de simplicité, vous ne stockerez que la première catégorie dans cet atelier.

Une fois le script exécuté, vérifiez que les données des articles ont bien été enregistrées dans BigQuery.

  1. Dans BigQuery, accédez à la table article_data dans l'onglet "Explorateur", puis cliquez sur Requête > Dans un nouvel onglet pour interroger la table :

Option &quot;Dans un nouvel onglet&quot; mise en évidence dans le menu déroulant &quot;Requête&quot;

  1. Modifiez les résultats dans le champ Requête non enregistrée en ajoutant un astérisque entre SELECT et FROM :
SELECT * FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data`
  1. Cliquez à présent sur Exécuter.

Une fois la requête exécutée, vos données apparaissent.

  1. Faites-les défiler vers la droite pour afficher la colonne "category".

La colonne "category" contient le nom de la première catégorie renvoyée par l'API Natural Language pour l'article. L'indicateur confidence est traduit par une valeur entre 0 et 1. Il permet de déterminer le degré de confiance de l'API quant à la classification correcte de l'article.

Lors de la prochaine étape, vous allez apprendre à effectuer des requêtes plus complexes sur les données.

Tâche 7 : Analyser des données d'articles de presse catégorisées dans BigQuery

Commencez par rechercher les catégories les plus courantes dans l'ensemble de données.

  1. Dans la console BigQuery, cliquez sur + Saisir une nouvelle requête.

  2. Saisissez la requête suivante :

SELECT category, COUNT(*) c FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` GROUP BY category ORDER BY c DESC
  1. Cliquez à présent sur Exécuter.

Les résultats de la requête doivent ressembler à ceci :

Résultats de la requête, où plusieurs catégories sont indiquées, comme /News/Politics (/Actualités/Politique) et /Business & Industrial (/Entreprise et industrie)

Si vous souhaitez connaître les articles appartenant à une catégorie plus précise, telle que /Arts & Entertainment/Music & Audio/Classical Music (/Arts et divertissement/Musique et audio/Musique classique), vous pouvez saisir la requête suivante :

SELECT * FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` WHERE category = "/Arts & Entertainment/Music & Audio/Classical Music"

De la même façon, vous pouvez demander uniquement les articles dont le score de confiance généré par l'API Natural Language est supérieur à 90 % :

SELECT article_text, category FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` WHERE cast(confidence as float64) > 0.9

Pour exécuter davantage de requêtes sur vos données, consultez la documentation BigQuery. BigQuery comprend également plusieurs outils de visualisation. Pour créer des visualisations de vos données d'articles de presse catégorisées, consultez le document Démarrage rapide de Data Studio pour BigQuery.

Félicitations !

Vous avez appris comment utiliser la méthode de classification de texte de l'API Natural Language afin de catégoriser des articles de presse. Vous avez commencé par catégoriser un premier article, puis vous avez appris à classer et analyser un vaste ensemble de données de presse à l'aide de l'API Natural Language et de BigQuery.

Sujets abordés

  • Créer une requête API Natural Language classifyText et appeler l'API avec curl
  • Utiliser le module Python de Google Cloud afin d'analyser un vaste ensemble de données de presse
  • Importer et analyser des données dans BigQuery

Terminer votre quête

Cet atelier d'auto-formation fait partie des quêtes Machine Learning APIs, Data Engineering et Language, Speech, Text, & Translation with Google Cloud APIs. Une quête est une série d'ateliers associés qui constituent un parcours de formation. Si vous terminez une quête, vous obtenez un badge attestant de votre réussite. Vous pouvez rendre publics les badges que vous recevez et ajouter leur lien dans votre CV en ligne ou sur vos comptes de réseaux sociaux. Inscrivez-vous à n'importe quelle quête contenant cet atelier pour obtenir immédiatement les crédits associés. Découvrez toutes les quêtes disponibles dans le catalogue Google Cloud Skills Boost.

Atelier suivant

Continuez votre quête avec l'atelier Prédire les achats des visiteurs avec un modèle de classification dans BQML ou essayez l'un des ateliers suivants :

Étapes suivantes et informations supplémentaires

Formations et certifications Google Cloud

Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.

Dernière mise à jour du manuel : 20 septembre 2023

Dernier test de l'atelier : 13 octobre 2023

Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.