arrow_back

Analisi di sentiment ed entità con l'API Natural Language

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

Analisi di sentiment ed entità con l'API Natural Language

Lab 45 minuti universal_currency_alt 5 crediti show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP038

Laboratori autogestiti Google Cloud

Panoramica

L'API Cloud Natural Language consente di estrarre entità da un testo, analizzarne sentiment e sintassi e classificarlo in categorie.

In questo lab imparerai a utilizzare l'API Natural Language per analizzare entità, sentiment e sintassi.

Cosa imparerai a fare

  • Creazione di una richiesta API Natural Language e chiamata all'API con curl
  • Estrazione di entità ed esecuzione di analisi del sentiment sul testo con l'API Natural Language
  • Esecuzione di analisi linguistiche sul testo con l'API Natural Language
  • Creazione di una richiesta API Natural Language in una lingua diversa

Configurazione e requisiti

Prima di fare clic sul pulsante Avvia lab

Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Avvia lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.

Con questo lab pratico avrai la possibilità di completare le attività in prima persona, in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.

Per completare il lab, avrai bisogno di:

  • Accesso a un browser internet standard (Chrome è il browser consigliato).
Nota: utilizza una finestra del browser in incognito o privata per eseguire questo lab. Ciò evita eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
  • È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Nota: se hai già un account o un progetto Google Cloud personale, non utilizzarlo per questo lab per evitare addebiti aggiuntivi al tuo account.

Come avviare il lab e accedere alla console Google Cloud

  1. Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si apre una finestra popup per permetterti di selezionare il metodo di pagamento. A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:

    • Pulsante Apri console Google
    • Tempo rimanente
    • Credenziali temporanee da utilizzare per il lab
    • Altre informazioni per seguire questo lab, se necessario
  2. Fai clic su Apri console Google. Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.

    Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.

    Note: se visualizzi la finestra di dialogo Scegli un account, fai clic su Utilizza un altro account.
  3. Se necessario, copia il Nome utente dal riquadro Dettagli lab e incollalo nella finestra di dialogo di accesso. Fai clic su Avanti.

  4. Copia la Password dal riquadro Dettagli lab e incollala nella finestra di dialogo di benvenuto. Fai clic su Avanti.

    Importante: devi utilizzare le credenziali presenti nel riquadro di sinistra. Non utilizzare le tue credenziali Google Cloud Skills Boost. Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi.
  5. Fai clic nelle pagine successive:

    • Accetta i termini e le condizioni.
    • Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
    • Non registrarti per le prove gratuite.

Dopo qualche istante, la console Google Cloud si apre in questa scheda.

Nota: puoi visualizzare il menu con un elenco di prodotti e servizi Google Cloud facendo clic sul menu di navigazione in alto a sinistra. Icona menu di navigazione

Attività 1: crea una chiave API

Poiché utilizzerai curl per inviare una richiesta all'API Natural Language, devi generare una chiave API da passare nell'URL della richiesta.

  1. Per creare una chiave API, nella console Cloud, seleziona Menu di navigazione > API e servizi > Credenziali.

  2. Fai clic su Crea credenziali e seleziona Chiave API.

  3. Copia la chiave API generata e fai clic su Chiudi.

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Crea una chiave API

Per eseguire le operazioni successive, collegati all'istanza di cui è stato eseguito il provisioning per te tramite SSH.

  1. Fai clic su Menu di navigazione > Compute Engine. Dovrebbe comparire l'istanza di Linux di cui è stato eseguito il provisioning, linux-instance, nell'elenco Istanze VM.

  2. Fai clic sul pulsante SSH. Verrai indirizzato a una shell interattiva.

  3. Nella riga di comando, inserisci il comando seguente sostituendo <YOUR_API_KEY> con la chiave che hai appena copiato:

export API_KEY=<YOUR_API_KEY>

Attività 2: invia una richiesta di analisi delle entità

Il primo metodo dell'API Natural Language che utilizzi è analyzeEntities. Con questo metodo, l'API può estrarre entità (come persone, luoghi ed eventi) dal testo. Per provare l'analisi delle entità dell'API, utilizza la frase seguente:

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.

Crea la tua richiesta all'API Natural Language nel file request.json.

  1. Utilizza Nano (un editor di codice) per creare il file request.json:
nano request.json
  1. Digita o incolla il seguente codice in 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. Premi CTRL+X per uscire da Nano, quindi Y per salvare il file e INVIO per confermare.

Nella richiesta, stai indicando all'API Natural Language il testo inviato. I valori di tipo supportati sono PLAIN_TEXT o HTML. In content, passi il testo da inviare all'API Natural Language per l'analisi.

L'API Natural Language supporta anche l'invio di file archiviati in Cloud Storage per l'elaborazione del testo. Se vuoi inviare un file da Cloud Storage, devi sostituire content con gcsContentUri e assegnargli un valore pari all'URI del file di testo in Cloud Storage.

encodingType indica all'API il tipo di codifica del testo da utilizzare durante l'elaborazione del nostro testo. L'API lo utilizzerà per calcolare dove determinate entità compaiono nel nostro testo.

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Invia una richiesta di analisi delle entità

Attività 3: chiama l'API Natural Language

  1. Ora puoi passare all'API Natural Language il corpo della richiesta, insieme alla variabile di ambiente della chiave API salvata in precedenza, con il seguente comando curl (tutto in un'unica riga di comando):
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. Per verificare la risposta esegui:
cat result.json

L'inizio della risposta dovrebbe essere simile al seguente:

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

Per ogni entità nella risposta, ottieni i seguenti elementi: type dell'entità, URL di Wikipedia associato, se presente, salience e indici della posizione in cui l'entità compare nel testo. Il valore di salience è un numero compreso tra 0 e 1 e si riferisce alla centralità dell'entità rispetto al testo nel suo insieme.

L'API Natural Language può anche riconoscere stessa entità menzionata in modi diversi. Dai un'occhiata all'elenco mentions nella risposta: ​l'API è in grado di dire che "Joanne Rowling", "Rowling", "novelist" e "Robert Galbriath" puntano tutti alla stessa cosa.​

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Verifica la risposta dell'analisi delle entità

Attività 4: analisi del sentiment con l'API Natural Language

Oltre a estrarre entità, l'API Natural Language consente anche di eseguire l'analisi del sentiment su un blocco di testo. Questa richiesta JSON includerà gli stessi parametri della richiesta precedente, ma questa volta cambierà il testo per includere un elemento con un sentiment più forte.

  1. Utilizza Nano per sostituire il codice in request.json con quanto segue e, se vuoi, sostituisci content con il tuo testo:
{ "document":{ "type":"PLAIN_TEXT", "content":"Harry Potter è il miglior libro. Penso che dovrebbero leggerlo tutti." }, "encodingType": "UTF8" }
  1. Premi CTRL+X per uscire da Nano, quindi Y per salvare il file e INVIO per confermare.

  2. Dopodiché, invia la richiesta all'endpoint analyzeSentiment dell'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 tua risposta dovrebbe essere simile alla seguente:

{ "documentSentiment": { "magnitude": 1.9, "score": 0.9 }, "language": "en", "sentences": [ { "text": { "content": "Harry Potter è il miglior libro.", "beginOffset": 0 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } }, { "text": { "content": "Penso dovrebbero leggerlo tutti.", "beginOffset": 31 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } } ] } Nota: non preoccuparti se i tuoi punteggi differiscono leggermente rispetto all'output dell'esempio.

Tieni presente che ottieni due tipi di valori di sentiment: un sentiment per il documento nel suo insieme e un sentiment scomposto per frase. Il metodo sentiment restituisce due valori:

  • score - (punteggio) è un numero compreso tra -1,0 e 1,0 che indica quanto sia positiva o negativa l'affermazione.
  • magnitude - è un numero compreso tra 0 e infinito che rappresenta il peso del sentiment espresso nell'affermazione, indipendentemente dal fatto che sia positiva o negativa.

Blocchi di testo più lunghi con affermazioni molto pesanti hanno valori di magnitude più elevati. Lo score per la prima frase è positivo (0,7), mentre quello per la seconda è neutro (0,1).

Attività 5: analisi del sentiment relativo all'entità

Oltre a fornire dettagli sul sentiment dell'intero documento di testo, l'API Natural Language può anche scomporre il sentiment in base alle entità nel testo. Usa questa frase come esempio:

I liked the sushi but the service was terrible.

In questo caso, ottenere un punteggio relativo al sentiment per l'intera frase come hai fatto in precedenza potrebbe non essere così utile. Se si trattasse della recensione di un ristorante per cui esistono centinaia di recensioni, vorresti sapere esattamente quali cose sono piaciute e quali non sono piaciute alle persone che lo hanno recensito. Fortunatamente, l'API Natural Language dispone di un metodo che consente di ottenere il sentiment per ciascuna entità nel testo, chiamato analyzeEntitySentiment. Vediamo come funziona.

  1. Utilizza Nano per aggiornare request.json con la frase seguente:
{ "document":{ "type":"PLAIN_TEXT", "content":"I liked the sushi but the service was terrible." }, "encodingType": "UTF8" }
  1. Premi CTRL+X per uscire da Nano, quindi Y per salvare il file e INVIO per confermare.

  2. Quindi chiama l'endpoint analyzeEntitySentiment con il seguente comando curl:

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

Nella risposta ottieni due oggetti entità: uno per "sushi" e uno per "service" (servizio). Ecco la risposta JSON completa:

{ "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" }

Puoi notare che il punteggio restituito per "sushi" è un punteggio neutro pari a 0, mentre "service" ha ottenuto un punteggio di -0,7. Interessante! Potresti anche notare che vengono restituiti due oggetti sentiment per ciascuna entità. Se uno di questi termini venisse menzionato più di una volta, l'API restituirebbe valori score e magnitude per il sentiment diversi per ogni menzione, insieme a un sentiment aggregato per l'entità.

Nota: non preoccuparti se i tuoi punteggi differiscono leggermente rispetto all'output dell'esempio.

Attività 6: analisi della sintassi e delle parti del discorso

Utilizza l'analisi sintattica, un altro dei metodi dell'API Natural Language, per approfondire i dettagli linguistici del testo. analyzeSyntax estrae informazioni linguistiche, scomponendo il testo specificato in una serie di frasi e token (in genere, limiti di parole), per fornire ulteriori analisi su quei token. L'API indica la parte del discorso (sostantivo, verbo, aggettivo ecc.) di ogni parola nel testo e come quest'ultima si collega alle altre parole nella frase (ad esempio, se è la radice del verbo o un modificatore).

Prova con una frase semplice. Questa richiesta JSON sarà simile a quelle precedenti, con l'aggiunta di una chiave di funzionalità, che indica all'API di eseguire l'annotazione della sintassi.

  1. Utilizza Nano per sostituire il codice in request.json con quanto segue:
{ "document":{ "type":"PLAIN_TEXT", "content": "Joanne Rowling è una scrittrice, sceneggiatrice e produttrice cinematografica inglese." }, "encodingType": "UTF8" }
  1. Premi CTRL+X per uscire da Nano, quindi Y per salvare il file e INVIO per confermare.

  2. Quindi chiama il metodo analyzeSyntax dell'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 risposta dovrebbe restituire un oggetto come quello seguente per ogni token nella frase:

{ "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" },

Analizziamo la risposta:

  • partOfSpeech indica che "Joanne" è un sostantivo.
  • dependencyEdge include dati che puoi utilizzare per creare un albero di analisi delle dipendenze del testo. Essenzialmente, questo è un diagramma che mostra come le parole in una frase si relazionano tra loro. Un albero di analisi delle dipendenze per la frase precedente sarebbe simile a questo:

Albero di analisi delle dipendenze

Nota: puoi creare i tuoi alberi di analisi delle dipendenze nel browser con la demo di Natural Language disponibile nella guida Natural Language AI
  • headTokenIndex è l'indice del token che ha un arco che punta a "Joanne". Pensa a ciascun token nella frase come a una parola in un array.
  • headTokenIndex di 1 per "Joanne" si riferisce alla parola "Rowling", a cui è collegato nell'albero. L'etichetta NN (abbreviazione di modificatore del sostantivo composto) descrive il ruolo della parola nella frase. "Joanne" modifica "Rowling", il soggetto della frase.
  • lemma è la forma canonica della parola. Ad esempio, le parole run, runs, ran e running hanno tutte il lemma run. Il valore lemma è utile per tenere traccia delle occorrenze di una parola in una porzione di testo di grandi dimensioni nel tempo.

Attività 7: elaborazione del linguaggio naturale multilingue

L'API Natural Language supporta anche altre lingue diverse dall'inglese (l'elenco completo è disponibile nella guida Supporto delle lingue).

  1. Modifica il codice in request.json con una frase in giapponese:
{ "document":{ "type":"PLAIN_TEXT", "content":"日本のグーグルのオフィスは、東京の六本木ヒルズにあります" } }
  1. Premi CTRL+X per uscire da Nano, quindi Y per salvare il file e INVIO per confermare.

Nota che, anche se non hai incluso questa informazione, l'API è in grado di rilevare automaticamente la lingua!

  1. Quindi, invialo all'endpoint analyzeEntities:
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Ottieni la seguente risposta:

{ "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" }

Anche gli URL di Wikipedia puntano alle pagine in giapponese: fantastico!

Complimenti!

Hai imparato come eseguire l'analisi del testo con l'API Cloud Natural Language estraendo entità, analizzando il sentiment ed eseguendo l'annotazione della sintassi. Sei ora in grado di eseguire le seguenti attività:

  • Creazione di una richiesta API Natural Language e chiamata all'API con curl
  • Estrazione di entità ed esecuzione di analisi del sentiment sul testo con l'API Natural Language
  • Esecuzione di analisi linguistiche sul testo per creare alberi di analisi delle dipendenze
  • Creazione di una richiesta API Natural Language in giapponese

Completa la Quest

Questo self-paced lab fa parte delle Quest Intro to ML: Language Processing e Language, Speech, Text & Translation with Google Cloud APIs. Una Quest è una serie di lab collegati tra loro che formano un percorso di apprendimento. Il completamento di una Quest ti permette di ottenere un badge come riconoscimento dell'obiettivo raggiunto. Puoi rendere pubblici i tuoi badge inserendone i link nel tuo CV online o sui social media. Iscriviti a una delle Quest contenenti il lab e ricevi subito un riconoscimento per averlo completato. Scopri le altre Quest disponibili.

Segui il prossimo lab

Prova un altro lab sulle API per il machine learning, come Blocco note di Vertex AI Workbench: Qwik Start o uno di questi:

Passaggi successivi

  • Guarda i tutorial relativi all'API Natural Language nella documentazione.

Formazione e certificazione Google Cloud

… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.

Ultimo aggiornamento del manuale: 19 settembre 2023

Ultimo test del lab: 13 ottobre 2023

Copyright 2024 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.