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 aborder 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
Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.
Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.
Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.
Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.
Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.
Cliquez sur Ouvrir la console Google.
Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Activer Google Cloud Shell
Google 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.
Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.
Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".
Cliquez sur Continuer.
Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :
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.
Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project =
Exemple de résultat :
[core]
project = qwiklabs-gcp-44776a13dea667a6
Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.
Tâche 1 : Vérifier que l'API Cloud Natural Language est activée
Cliquez sur l'icône du menu de navigation () en haut à gauche de l'écran.
Sélectionnez API et services > API et services activés.
Cliquez sur + ACTIVER LES API ET LES SERVICES.
Saisissez ensuite language dans la zone de recherche. Cliquez sur API Cloud Natural Language.
Si l'API n'est pas activée, le bouton ACTIVER apparaît. Cliquez sur ACTIVER pour activer l'API Cloud Natural Language.
Lorsque l'API est activée, un bouton GÉRER apparaît sur la vignette API Cloud Natural Language.
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.
Pour créer une clé API, dans votre console, cliquez sur le menu de navigation > API et services > Identifiants.
Cliquez ensuite sur + CRÉER DES IDENTIFIANTS.
Dans le menu déroulant, sélectionnez Clé API :
Ensuite, copiez la clé que vous venez de générer. Cliquez sur FERMER.
Vous disposez désormais d'une clé API. Enregistrez sa valeur dans une variable d'environnement afin d'éviter de l'insérer à chaque requête.
Dans Cloud Shell, exécutez la commande ci-dessous. Veillez à remplacer <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 dans le Guide des catégories de contenu.
Nous allons commencer par classer un seul article, puis nous verrons comment utiliser cette méthode pour l'appliquer à un vaste corpus d'articles de presse. Pour commencer, prenons 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 bouillies.)
Dans votre environnement Cloud Shell, créez un fichier request.json à l'aide du code ci-dessous. Pour ce faire, vous pouvez utiliser l'éditeur de ligne de commande de votre choix (nano, vim ou emacs) ou l'éditeur de code Cloud Shell :
Créez un fichier intitulé request.json et ajoutez-y les lignes suivantes :
{
"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."
}
}
Vous pouvez maintenant envoyer ce texte à la méthode classifyText de l'API Natural Language à l'aide de la commande curl suivante :
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 vaste ensemble de données textuelles
La méthode classifyText peut nous 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 Google 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 :
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.
Dans la console Google Cloud, cliquez sur le menu de navigation () > BigQuery.
Cliquez sur OK dans la notification de bienvenue qui s'affiche lors du lancement de BigQuery.
Dans le panneau de gauche, cliquez sur l'icône Afficher les actions () à côté du nom de votre projet, puis sur Créer un ensemble de données.
Dans le champ ID de l'ensemble de données, saisissez news_classification_dataset.
Cliquez sur Créer l’ensemble de données.
Cliquez sur l'icône Afficher les actions à côté du nom de l'ensemble de données, puis sur Créer une table. Utilisez les paramètres suivants pour la nouvelle table :
Créez la table à partir d'une Table vide.
Nommez la table article_data.
Cliquez sur Ajouter un champ (+) sous Schéma, puis ajoutez les trois champs suivants :
article_text avec le type STRING,
category avec le type STRING et
confidence avec le type FLOAT.
Cliquez sur CRÉER LA 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.
Tâche 6 : Classer les données des articles de presse et stocker les résultats dans BigQuery
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.
Commencez par retourner dans Cloud Shell afin d'exporter le nom de votre projet Cloud comme variable d'environnement. Remplacez <your_project_name> par l'ID de projet GCP qui se trouve dans le panneau Détails concernant l'atelier :
export PROJECT=<your_project_name>
Exécutez ensuite les commandes suivantes dans Cloud Shell afin de créer un compte de service :
Vous êtes maintenant prêt à envoyer des données textuelles à l'API Natural Language.
Pour ce faire, é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.
Créez un fichier intitulé classify-text.py et copiez-y les éléments ci-dessous. Remplacez YOUR_PROJECT par l'ID de votre projet GCP.
Remarque : Conservez les guillemets simples pour l'ID de projet.
from google.cloud import storage, language_v1, bigquery
# Set up our GCS, NL, and BigQuery clients
storage_client = storage.Client()
nl_client = language_v1.LanguageServiceClient()
# TODO: replace YOUR_PROJECT with your project id below
bq_client = bigquery.Client(project='YOUR_PROJECT')
dataset_ref = bq_client.dataset('news_classification_dataset')
dataset = bigquery.Dataset(dataset_ref)
table_ref = dataset.table('article_data') # Update this if you used a different table name
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_v1.types.Document(
content=article,
type_='PLAIN_TEXT'
)
)
return response
rows_for_bq = []
files = storage_client.bucket('cloud-training-demos-text').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), str(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.
Exécutez le script suivant :
python3 classify-text.py
L'exécution du script prend environ deux minutes. Nous allons en profiter pour vous expliquer son rôle plus en détail.
Remarque : Si vous recevez un message d'erreur lors de l'exécution de python3 classify-text.py, il se peut que Cloud Shell soit déconnecté. Pour résoudre ce problème, exportez vos variables d'environnement en exécutant les commandes ci-dessous, puis exécutez de nouveau le script python3 classify-text.py.
export PROJECT= (GCP PROJECT ID)
export GOOGLE_APPLICATION_CREDENTIALS=key.json
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. Cette opération est répétée pour chaque fichier, puis les articles sont téléchargés en tant que chaînes et envoyés à l'API Natural Language via 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.
Dans BigQuery, accédez à la table article_data sous l'onglet Explorateur, puis cliquez sur REQUÊTE > Dans un nouvel onglet :
Modifiez les résultats dans le champ Sans titre en ajoutant un astérisque entre SELECT et FROM :
SELECT * FROM `news_classification_dataset.article_data`
Cliquez à présent sur EXÉCUTER.
Une fois la requête exécutée, vos données apparaissent. 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 de confiance 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.
Dans la console BigQuery, cliquez sur + Saisir une nouvelle requête.
Saisissez la requête suivante :
SELECT
category,
COUNT(*) c
FROM
`news_classification_dataset.article_data`
GROUP BY
category
ORDER BY
c DESC
Cliquez à présent sur Exécuter.
Les résultats de la requête doivent ressembler à ceci :
Si vous souhaitez trouver 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), saisissez la requête suivante :
SELECT * FROM `news_classification_dataset.article_data`
WHERE category = "/Arts & Entertainment/Music & Audio/Classical Music"
Pour trouver uniquement les articles dont le score de confiance généré par l'API Natural Language est supérieur à 90 %, exécutez la requête suivante :
SELECT
article_text,
category
FROM `news_classification_dataset.article_data`
WHERE cast(confidence as float64) > 0.9
Pour effectuer 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 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.
Points abordés
Créer une requête classifyText de l'API Natural Language 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
Copyright 2020 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.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.
Ce contenu n'est pas disponible pour le moment
Nous vous préviendrons par e-mail lorsqu'il sera disponible
Parfait !
Nous vous contacterons par e-mail s'il devient disponible
Un atelier à la fois
Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci
Utilisez la navigation privée pour effectuer l'atelier
Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
Dans cet atelier, vous allez apprendre à classer du texte en catégories à l'aide de l'API Natural Language.
Durée :
0 min de configuration
·
Accessible pendant 60 min
·
Terminé après 60 min