arrow_back

Analyse des entités et des sentiments 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

Analyse des entités et des sentiments avec l'API Natural Language

Lab 45 minutes 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

GSP038

Google Cloud – Ateliers adaptés au rythme de chacun

Présentation

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, vous allez découvrir comment utiliser l'API Natural Language pour analyser les entités, les sentiments et la syntaxe d'un texte.

Points abordés

  • Créer une requête pour l'API Natural Language et appeler l'API avec curl
  • Extraire les entités et exécuter l'analyse des sentiments sur une chaîne de texte avec l'API Natural Language
  • Effectuer l'analyse linguistique d'un texte avec l'API Natural Language
  • Créer une requête pour l'API Natural Language dans une autre langue

Préparation

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

Tâche 1 : 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 la console Cloud, accédez au menu de navigation > API et services > Identifiants.

  2. Cliquez sur Créer des identifiants et sélectionnez Clé API.

  3. Copiez la clé API et cliquez sur Fermer.

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

Créer une clé API

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

  1. Accédez au menu de navigation > Compute Engine. L'instance Linux provisionnée, linux-instance, doit s'afficher dans la liste Instances de VM.

  2. Cliquez sur le bouton SSH. Vous êtes redirigé vers un shell interactif.

  3. 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 2 : Créer une requête d'analyse d'entités

analyzeEntities sera la première méthode de l'API Natural Language que vous utiliserez. Grâce à cette méthode, l'API peut extraire des entités (telles que des personnes, des lieux et des événements) d'un texte. Pour tester l'analyse des entités de l'API, utilisez la phrase suivante :

Joanne Rowling, who writes under the pen names J. K. Rowling and Robert Galbraith, is a British novelist and screenwriter who wrote the Harry Potter fantasy series.

Construisez votre requête pour l'API Natural Language dans un fichier request.json.

  1. Utilisez l'éditeur de code nano pour créer le fichier request.json :
nano request.json
  1. Saisissez ou collez le code suivant dans le fichier request.json :
{ "document":{ "type":"PLAIN_TEXT", "content":"Joanne Rowling, who writes under the pen names J. K. Rowling and Robert Galbraith, is a British novelist and screenwriter who wrote the Harry Potter fantasy series." }, "encodingType":"UTF8" }
  1. Appuyez sur Ctrl+X pour quitter nano, sur Y pour enregistrer le fichier, puis sur Entrée pour confirmer.

Dans la requête, vous donnez à l'API Natural Language des informations sur le texte que vous envoyez. Les valeurs de type acceptées sont PLAIN_TEXT ou HTML. Vous indiquez dans "content" la chaîne de texte à envoyer à l'API Natural Language pour analyse.

L'API Natural Language permet également l'envoi de fichiers stockés dans Cloud Storage pour le traitement de texte. Pour envoyer un fichier à partir de Cloud Storage, remplacez content par gcsContentUri et transmettez la valeur de l'URI du fichier texte dans Cloud Storage.

encodingType indique à l'API le type d'encodage de texte à utiliser lors du traitement du texte. L'API l'utilisera pour calculer l'emplacement d'entités spécifiques dans le texte.

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

Envoyer une requête d'analyse d'entités

Tâche 3 : Appeler l'API Natural Language

  1. Vous pouvez maintenant transmettre à l'API Natural Language le corps de votre requête, ainsi que la variable d'environnement de la clé API que vous avez sauvegardée précédemment, en exécutant la commande curl suivante (dans une seule ligne de commande) :
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json > result.json
  1. Pour lire la réponse, exécutez ce qui suit :
cat result.json

Le début de la réponse doit se présenter comme suit :

"content": "Joanne Rowling", "beginOffset": 0 }, "type": "PROPER" }, { "text": { "content": "Rowling", "beginOffset": 53 }, "type": "PROPER" }, { "text": { "content": "novelist", "beginOffset": 96 }, "type": "COMMON" }, { "text": { "content": "Robert Galbraith", "beginOffset": 65 }, "type": "PROPER" } ] }, ... ] }

Pour chaque entité de la réponse, vous obtenez le type, l'URL Wikipédia associée (le cas échéant), l'élément salience (saillance) et l'index des endroits où elle apparaît dans le texte. La saillance correspond à un chiffre compris dans la plage [0,1] qui se rapporte à la centralité de l'entité par rapport au texte dans son ensemble.

L'API Natural Language est également en mesure de reconnaître une même entité évoquée sous différentes formes. Observez la liste mentions de la réponse : ​l'API est capable de dire que "Joanne Rowling", "Rowling", "novelist" et "Robert Galbriath" font tous référence à une même entité.​

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

Vérifier la réponse de l'analyse d'entités

Tâche 4 : Analyser des sentiments avec l'API Natural Language

Outre l'extraction d'entités, l'API Natural Language permet d'effectuer une analyse des sentiments dans une chaîne de texte. La requête JSON suivante comportera les mêmes paramètres que la requête ci-dessus, mais cette fois, vous modifierez le texte pour y inclure des éléments liés à des sentiments "plus forts".

  1. Utilisez nano pour remplacer le code dans le fichier request.json par ce qui suit. Vous pouvez aussi remplacer le contenu de content ci-dessous par votre propre texte :
{ "document":{ "type":"PLAIN_TEXT", "content":"Harry Potter is the best book. I think everyone should read it." }, "encodingType": "UTF8" }
  1. Appuyez sur Ctrl+X pour quitter nano, sur Y pour enregistrer le fichier, puis sur Entrée pour confirmer.

  2. Vous allez ensuite envoyer la requête au point de terminaison analyzeSentiment de l'API :

curl "https://language.googleapis.com/v1/documents:analyzeSentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

La réponse doit se présenter comme suit :

{ "documentSentiment": { "magnitude": 1.9, "score": 0.9 }, "language": "en", "sentences": [ { "text": { "content": "Harry Potter is the best book.", "beginOffset": 0 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } }, { "text": { "content": "I think everyone should read it.", "beginOffset": 31 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } } ] } Remarque : Ne vous inquiétez pas si vos scores diffèrent légèrement de l'exemple de résultat.

Comme vous pouvez le remarquer, vous obtenez deux types de valeurs de sentiment : les sentiments pour le document dans son ensemble, et les sentiments exprimés dans chaque phrase. La méthode d'analyse des sentiments renvoie deux valeurs :

  • score : il s'agit d'un nombre compris entre -1,0 et 1,0 qui indique le degré de positivité ou de négativité de la phrase.
  • magnitude : il s'agit d'un nombre compris entre 0 et l'infini représentant l'intensité des sentiments exprimés dans la déclaration, sans tenir compte de son aspect positif ou négatif.

Les longues chaînes de texte exprimant des sentiments intenses ont des valeurs de magnitude plus élevées. Le score de la première phrase est positif (0,7), tandis que celui de la deuxième est neutre (0,1).

Tâche 5 : Analyser les sentiments par entité

En plus de fournir des informations sur les sentiments exprimés dans l'ensemble du document texte, l'API Natural Language est également capable d'isoler les sentiments par entité dans la chaîne de texte. Utilisez cette phrase comme exemple :

I liked the sushi but the service was terrible.

Ici, il ne sera peut-être pas utile de calculer le score de l'analyse des sentiments de l'ensemble de la phrase, comme nous l'avons fait plus haut. Imaginez qu'il s'agisse d'une critique de restaurant parmi des centaines d'autres : vous allez plutôt chercher à extraire des informations précises concernant les points positifs et négatifs soulevés par les clients. Il se trouve que l'API Natural Language dispose d'une méthode appelée analyzeEntitySentiment, qui permet d'obtenir un sentiment pour chaque entité de la chaîne de texte. Voyons comment elle fonctionne.

  1. Utilisez nano pour ajouter la phrase ci-dessous dans le fichier request.json :
{ "document":{ "type":"PLAIN_TEXT", "content":"I liked the sushi but the service was terrible." }, "encodingType": "UTF8" }
  1. Appuyez sur Ctrl+X pour quitter nano, sur Y pour enregistrer le fichier, puis sur Entrée pour confirmer.

  2. Envoyez ensuite une requête au point de terminaison analyzeEntitySentiment avec la commande curl suivante :

curl "https://language.googleapis.com/v1/documents:analyzeEntitySentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Vous recevez une réponse comportant deux objets d'entités, un pour "sushi" et l'autre pour "service". Voici la réponse JSON complète :

{ "entities": [ { "name": "sushi", "type": "CONSUMER_GOOD", "metadata": {}, "salience": 0.51064336, "mentions": [ { "text": { "content": "sushi", "beginOffset": 12 }, "type": "COMMON", "sentiment": { "magnitude": 0, "score": 0 } } ], "sentiment": { "magnitude": 0, "score": 0 } }, { "name": "service", "type": "OTHER", "metadata": {}, "salience": 0.48935664, "mentions": [ { "text": { "content": "service", "beginOffset": 26 }, "type": "COMMON", "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "language": "en" }

Vous pouvez voir que le score attribué à "sushi" est un score neutre de 0, tandis que celui attribué à "service" est de -0,7. C'est parfait ! Vous remarquerez également que deux objets de sentiment ont été attribués à chaque entité. Si l'un de ces deux termes avait été mentionné à plus d'une reprise, l'API aurait renvoyé un score de sentiment et de magnitude distinct pour chaque occurrence, ainsi qu'un sentiment global pour l'entité.

Remarque : Ne vous inquiétez pas si vos scores diffèrent légèrement de l'exemple de résultat.

Tâche 6 : Analyser la syntaxe et les classes de mots

Utilisez l'analyse syntaxique, une autre méthode de l'API Natural Language, pour obtenir des informations linguistiques plus détaillées sur le texte. La méthode analyzeSyntax extrait les informations linguistiques en divisant le texte donné en une série de phrases et de jetons (qui correspondent généralement aux mots), afin de fournir une analyse approfondie de ces jetons. L'API nous indique la classe de chaque mot du texte (nom, verbe, adjectif, etc.) et sa fonction dans la phrase (s'agit du verbe principal, d'un modificateur ?).

Essayez avec une phrase simple. Cette requête JSON sera similaire aux requêtes déjà envoyées, avec une caractéristique clé supplémentaire. Elle indiquera à l'API que vous souhaitez effectuer une annotation syntaxique.

  1. Utilisez nano pour remplacer le code du fichier request.json par ce qui suit :
{ "document":{ "type":"PLAIN_TEXT", "content": "Joanne Rowling is a British novelist, screenwriter and film producer." }, "encodingType": "UTF8" }
  1. Appuyez sur Ctrl+X pour quitter nano, sur Y pour enregistrer le fichier, puis sur Entrée pour confirmer.

  2. Appelez ensuite la méthode analyzeSyntax de l'API :

curl "https://language.googleapis.com/v1/documents:analyzeSyntax?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

La réponse devrait renvoyer un objet semblable à l'exemple ci-dessous pour chaque jeton dans la phrase :

{ "text": { "content": "is", "beginOffset": 15 }, "partOfSpeech": { "tag": "VERB", "aspect": "ASPECT_UNKNOWN", "case": "CASE_UNKNOWN", "form": "FORM_UNKNOWN", "gender": "GENDER_UNKNOWN", "mood": "INDICATIVE", "number": "SINGULAR", "person": "THIRD", "proper": "PROPER_UNKNOWN", "reciprocity": "RECIPROCITY_UNKNOWN", "tense": "PRESENT", "voice": "VOICE_UNKNOWN" }, "dependencyEdge": { "headTokenIndex": 2, "label": "ROOT" }, "lemma": "be" },

Analysons cette réponse plus en détail :

  • partOfSpeech indique que "Joanne" est un nom.
  • dependencyEdge comporte des données que vous pourrez utiliser pour créer l'arbre syntaxique de dépendance du texte. Il s'agit pour l'essentiel d'un diagramme montrant les relations entre les termes dans le texte. L'arbre syntaxique de dépendance de la phrase ci-dessus ressemblerait à ceci :

Arbre syntaxique de dépendance

Remarque : Pour créer un arbre syntaxique de dépendance dans votre navigateur, vous pouvez utiliser la démo Natural Language disponible dans le guide de l'IA Natural Language
  • headTokenIndex correspond à l'index de l'élément dont l'arc pointe vers "Joanne". Considérez chaque élément de la phrase comme un mot dans un tableau.
  • L'index headTokenIndex de valeur 1 pour "Joanne" se rapporte au terme "Rowling", auquel il est relié au sein de l'arbre syntaxique. L'étiquette NN (abréviation de "noun compound modifier", ou modificateur de mot composé) décrit le rôle du terme dans la phrase. "Joanne" modifie "Rowling," le sujet de la phrase.
  • lemma correspond à la forme canonique d'un mot. Par exemple, les mots vouloir, voulu, voulait et veux ont tous un lemme identique : vouloir. La valeur du lemme est utile pour comptabiliser au fur et à mesure les occurrences d'un mot dans une longue chaîne de texte.

Tâche 7 : Traitement multilingue de Natural Language

L'API Natural Language accepte également d'autres langues que l'anglais (la liste complète est disponible dans le guide d'assistance de Natural Language).

  1. Ajoutez une phrase en japonais au code du fichier request.json :
{ "document":{ "type":"PLAIN_TEXT", "content":"日本のグーグルのオフィスは、東京の六本木ヒルズにあります" } }
  1. Appuyez sur Ctrl+X pour quitter nano, sur Y pour enregistrer le fichier, puis sur Entrée pour confirmer.

Vous remarquerez que vous n'avez pas à préciser à l'API la langue que vous utilisez, car elle la détecte automatiquement.

  1. Vous l'envoyez ensuite au point de terminaison analyzeEntities :
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Et vous obtenez la réponse suivante :

{ "entities": [ { "name": "日本", "type": "LOCATION", "metadata": { "mid": "/m/03_3d", "wikipedia_url": "https://en.wikipedia.org/wiki/Japan" }, "salience": 0.23854347, "mentions": [ { "text": { "content": "日本", "beginOffset": 0 }, "type": "PROPER" } ] }, { "name": "グーグル", "type": "ORGANIZATION", "metadata": { "mid": "/m/045c7b", "wikipedia_url": "https://en.wikipedia.org/wiki/Google" }, "salience": 0.21155767, "mentions": [ { "text": { "content": "グーグル", "beginOffset": 9 }, "type": "PROPER" } ] }, ... ] "language": "ja" }

Les URL vous redirigent vers les pages Wikipédia en japonais. Tout simplement.

Félicitations !

Vous avez appris à effectuer une analyse de texte avec l'API Cloud Natural Language en extrayant des entités, en analysant des sentiments et en réalisant des annotations syntaxiques. Vous devez avoir :

  • créé une requête pour l'API Natural Language et appelé l'API avec curl ;
  • extrait les entités et exécuté l'analyse des sentiments sur une chaîne de texte avec l'API Natural Language ;
  • effectué des analyses linguistiques sur des chaînes de texte pour créer des arbres syntaxiques de dépendance ;
  • créé une requête pour l'API Natural Language en japonais.

Terminer votre quête

Cet atelier d'auto-formation fait partie des quêtes Intro to ML: Language Processing 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 les autres quêtes disponibles.

Atelier suivant

Essayez un autre atelier sur les API de machine learning, tel que Notebook Vertex AI Workbench : Qwik Start, ou consultez ces suggestions :

Étapes suivantes

  • Consulter les tutoriels de l'API Natural Language dans la documentation.

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 : 19 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.