Accedi a oltre 700 lab e corsi

Utilizzare l'API Natural Language per classificare il testo non strutturato

Lab 1 ora universal_currency_alt 5 crediti show_chart Avanzati
info Questo lab potrebbe incorporare strumenti di AI a supporto del tuo apprendimento.
Accedi a oltre 700 lab e corsi

Panoramica

L'API Cloud Natural Language consente di estrarre entità da un testo, analizzarne sentiment e sintassi e classificarlo in categorie. In questo lab ci concentreremo sulla classificazione del testo. Utilizzando un database di oltre 700 categorie, questa funzionalità API semplifica la classificazione di un grande set di dati di testo.

Cosa imparerai a fare

  • Creare una richiesta API Natural Language e chiamare l'API con curl
  • Usare la funzionalità di classificazione del testo dell'API Natural Language
  • Usare la classificazione del testo per comprendere un set di dati di articoli

Che cosa ti serve

  • Un progetto Google Cloud
  • Un browser, ad esempio Chrome o Firefox

Configurazione e requisiti

Configurazione del lab

Per ciascun lab, riceverai un nuovo progetto Google Cloud e un insieme di risorse per un periodo di tempo limitato senza alcun costo aggiuntivo.

  1. Accedi a Qwiklabs utilizzando una finestra di navigazione in incognito.

  2. Tieni presente la durata dell'accesso al lab (ad esempio, 1:15:00) e assicurati di finire entro quell'intervallo di tempo.
    Non è disponibile una funzionalità di pausa. Se necessario, puoi riavviare il lab ma dovrai ricominciare dall'inizio.

  3. Quando è tutto pronto, fai clic su Inizia lab.

  4. Annota le tue credenziali del lab (Nome utente e Password). Le userai per accedere a Google Cloud Console.

  5. Fai clic su Apri console Google.

  6. Fai clic su Utilizza un altro account e copia/incolla le credenziali per questo lab nei prompt.
    Se utilizzi altre credenziali, compariranno errori oppure ti verranno addebitati dei costi.

  7. Accetta i termini e salta la pagina di ripristino delle risorse.

Attiva Google Cloud Shell

Google Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud.

Google Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.

  1. Nella barra degli strumenti in alto a destra della console Cloud, fai clic sul pulsante Apri Cloud Shell.

    Icona Cloud Shell in evidenza

  2. Fai clic su Continua.

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. Ad esempio:

ID progetto evidenziato nel terminale Cloud Shell

gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento.

  • Puoi visualizzare il nome dell'account attivo con questo comando:
gcloud auth list

Output:

Credentialed accounts: - @.com (active)

Output di esempio:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puoi elencare l'ID progetto con questo comando:
gcloud config list project

Output:

[core] project =

Output di esempio:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: la documentazione completa di gcloud è disponibile nella guida Panoramica dell'interfaccia a riga di comando gcloud .

Attività 1: verifica che l'API Cloud Natural Language sia abilitata

  1. Fai clic sull'icona Menu di navigazione (Icona menu di navigazione) in alto a sinistra nella schermata.

  2. Seleziona API e servizi > API e servizi abilitati.

  3. Fai clic su + ABILITA API E SERVIZI.

  4. Cerca language nella casella di ricerca. Fai clic su API Cloud Natural Language.

  5. Se l'API non è abilitata, sarà visualizzato il pulsante ABILITA. Fai clic su ABILITA per abilitare l'API Cloud Natural Language.

Quando l'API è abilitata, il pulsante GESTISCI compare nel riquadro API Cloud Natural Language.

Attività 2: crea una chiave API

Poiché utilizzi 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 fai clic su Menu di navigazione > API e servizi > Credenziali.

  2. Poi fai clic su + CREA CREDENZIALI.

  3. Seleziona Chiave API dal menu a discesa:

  4. Copia la chiave appena generata e fai clic su CHIUDI.

Ora che hai una chiave API, salvala come variabile di ambiente per evitare di doverne inserirne il valore in ogni richiesta.

  1. Esegui il codice in basso in Cloud Shell. Assicurati di sostituire <your_api_key> con la chiave che hai copiato:
export API_KEY=<YOUR_API_KEY>

Attività 3: classifica un articolo

Utilizza il metodo classifyText dell'API Natural Language per ordinare i dati di testo in categorie con una singola chiamata API. Questo metodo restituisce un elenco di categorie di contenuti applicabili a un documento di testo. Queste categorie variano per specificità, da quelle più ampie come /Computer ed elettronica a quelle molto specifiche come /Computer ed elettronica/Programmazione/Java (linguaggio di programmazione). La guida alle categorie di contenuti contiene un elenco completo delle oltre 700 categorie disponibili.

Inizieremo classificando un singolo articolo e poi vedremo come utilizzare questo metodo per dare un senso a un ampio corpus di notizie. Per iniziare, prendiamo il titolo e la descrizione da un articolo nella sezione dedicata alla gastronomia del New York:

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.

  1. Nell'ambiente Cloud Shell, crea un file request.json con il codice riportato di seguito. Puoi creare il file utilizzando uno dei tuoi editor di riga di comando preferiti (nano, vim, emacs) oppure utilizzare l'editor di codice Cloud Shell:

Pulsante Apri editor di Cloud Shell

  1. Crea un nuovo file denominato request.json e aggiungi quanto segue:
{ "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." } }
  1. Ora puoi inviare questo testo al metodo classifyText dell'all'API Natural Language con il seguente comando curl:
curl "https://language.googleapis.com/v1/documents:classifyText?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Guarda la risposta:

Output:

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

L'API ha restituito due categorie per questo testo:

  • /Food & Drink/Cooking & Recipes (/Cibi e bevande/Cucina e ricette)
  • /Food & Drink/Food/Meat & Seafood (/Cibi e bevande/Cibi/Carne e Pesce)

Il testo non menziona esplicitamente che si tratta di una ricetta e nemmeno che contenga frutti di mare, ma l'API è in grado di classificarla. Classificare un singolo articolo è interessante, ma per capire davvero la potenza di questa funzionalità classificheremo molti dati di testo.

Attività 4: classifica un set di dati di testo di grandi dimensioni

Per vedere in che modo il metodo classifyText può aiutarci a comprendere un set di dati con moltissimo testo, useremo questo set di dati pubblico di articoli della BBC. Il set di dati è composto da 2.225 articoli in cinque aree tematiche (affari, intrattenimento, politica, sport, tecnologia) dal 2004 al 2005. Un subset di questi articoli si trova in un bucket pubblico di Google Cloud Storage. Ogni articolo è un file .txt.

Per esaminare i dati e inviarli all'API Natural Language, scriverai uno script Python per leggere ogni file di testo da Cloud Storage, inviarlo al metodo classifyText e archiviare i risultati in una tabella BigQuery. BigQuery è lo strumento di big data warehouse di Google Cloud. Consente di archiviare e analizzare facilmente set di dati di grandi dimensioni.

  • Per vedere il tipo di testo con cui lavorerai, esegui questo comando per visualizzare un singolo articolo:

    gcloud storage cat gs://cloud-training-demos-text/bbc_dataset/entertainment/001.txt

Adesso devi creare una tabella BigQuery per i dati.

Attività 5: crea una tabella BigQuery per i dati di testo categorizzati

Prima di inviare il testo all'API Natural Language, è necessario un posto in cui archiviare il testo e la categoria per ciascun articolo.

  1. Nella console Google Cloud, fai clic su Menu di navigazione (Icona menu di navigazione) > BigQuery.

  2. Fai clic su Fine nel messaggio di benvenuto visualizzato quando viene avviato BigQuery.

  3. Nel riquadro di sinistra, fai clic sull'icona Visualizza azioni (Icona Visualizza azioni) accanto al nome del progetto, poi fai clic su Crea set di dati.

  4. Per ID set di dati, digita news_classification_dataset

  5. Fai clic su Crea set di dati.

  6. Fai clic sull'icona Visualizza azioni accanto al nome del set di dati, poi fai clic su Crea tabella. Utilizza le seguenti impostazioni per la nuova tabella:

  • Crea tabella da: Tabella vuota
  • Assegna alla tabella il nome article_data
  • Fai clic su Aggiungi campo (+) in Schema, poi aggiungi questi tre campi: article_text con tipo STRINGA, category con tipo STRINGA e confidence con tipo IN VIRGOLA MOBILE.
  1. Fai clic su CREA TABELLA.

La tabella adesso è vuota. Nel passaggio successivo leggerai gli articoli da Cloud Storage, li invierai all'API Natural Language in modo da classificarli e archivierai il risultato in BigQuery.

Attività 6: classifica i dati degli articoli e archivia i risultati in BigQuery

Prima di scrivere uno script per inviare i dati degli articoli all'API Natural Language, devi creare un account di servizio. Verrà utilizzato per eseguire l'autenticazione all'API Natural Language e a BigQuery da uno script Python.

  1. Innanzitutto, torna in Cloud Shell ed esporta il nome del progetto Cloud come variabile di ambiente. Sostituisci <your_project_name> con l'ID progetto Google Cloud presente nel riquadro Dettagli lab del lab.
export PROJECT=<your_project_name>
  1. Poi esegui questi comandi da Cloud Shell per creare un account di servizio:
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

Ora è tutto pronto per inviare i dati di testo all'API Natural Language.

Per farlo, scrivi uno script Python utilizzando il modulo Python per Google Cloud. Puoi ottenere lo stesso risultato utilizzando un altro linguaggio. Esistono molte librerie client di Cloud diverse.

  1. Crea un file chiamato classify-text.py e copia al suo interno quanto riportato di seguito. Sostituisci YOUR_PROJECT con l'ID progetto Google Cloud.
Nota: non rimuovere gli apici intorno al valore dell'ID progetto. 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 == []

Ora è tutto pronto per iniziare a classificare gli articoli e importarli in BigQuery.

  1. Esegui questo script:
python3 classify-text.py

Il completamento dello script richiede circa due minuti. Mentre è in esecuzione, vediamo cosa sta succedendo.

Nota: se ricevi un messaggio di errore durante l'esecuzione di python3 classify-text.py, è possibile che Cloud Shell sia disconnesso. Per risolvere questo problema, esporta le variabili di ambiente eseguendo i comandi seguenti, poi esegui di nuovo il comando python3 classify-text.py.

  • export PROJECT= (GCP PROJECT ID)
  • export GOOGLE_APPLICATION_CREDENTIALS=key.json

Stiamo usando la libreria client Python di Google Cloud per accedere a Cloud Storage, all'API Natural Language e a BigQuery. Per prima cosa viene creato un client per ogni servizio, poi vengono creati i riferimenti alla tabella BigQuery. files è un riferimento a ogni file del set di dati della BBC nel bucket pubblico. Eseguiamo l'iterazione attraverso questi file, scarichiamo gli articoli come stringhe e inviamo ogni articolo all'API Natural Language nella funzione classify_text. Per tutti gli articoli in cui l'API Natural Language restituisce una categoria, l'articolo e i dati della relativa categoria vengono salvati in un elenco rows_for_bq. Una volta completata la classificazione di ciascun articolo, i dati vengono inseriti in BigQuery utilizzando insert_rows().

Nota: l'API Natural Language può restituire più di una categoria per un documento, ma per questo lab archivierai solo la prima categoria restituita, così da semplificare le cose.

Al termine dell'esecuzione dello script, occorre verificare che i dati dell'articolo siano stati salvati in BigQuery.

  1. In BigQuery, vai alla tabella article_data nella scheda BigQuery e fai clic su QUERY > In una nuova scheda:

Tabella article_data

  1. Modifica i risultati nella casella Senza titolo, aggiungendo un asterisco tra SELECT e FROM:
SELECT * FROM `news_classification_dataset.article_data`
  1. Ora fai clic su ESEGUI.

I dati verranno visualizzati quando la query verrà completata. Scorri verso destra per vedere la colonna della categoria.

La colonna della categoria ha il nome della prima categoria restituita dall'API Natural Language per l'articolo e la confidenza è un valore compreso tra 0 e 1 che indica quanto è sicura l'API di aver classificato correttamente l'articolo. Nel passaggio successivo imparerai a eseguire query più complesse sui dati.

Attività 7: analizza i dati degli articoli categorizzati in BigQuery

Controlla anzitutto quali categorie erano quelle più comuni nel set di dati.

  1. Nella console BigQuery, fai clic su + Crea nuova query.

  2. Inserisci la seguente query:

SELECT category, COUNT(*) c FROM `news_classification_dataset.article_data` GROUP BY category ORDER BY c DESC
  1. Ora fai clic su Esegui.

I risultati della query dovrebbero essere simili a questi:

Immagine results.png della query di BQ

  1. Per trovare l'articolo restituito per una categoria più insolita, ad esempio /Arts & Entertainment/Music & Audio/Classical Music (/Arte e intrattenimento/Musica e audio/Musica classica), potresti eseguire questa query:
SELECT * FROM `news_classification_dataset.article_data` WHERE category = "/Arts & Entertainment/Music & Audio/Classical Music"
  1. Per ottenere solo gli articoli in cui l'API Natural Language ha restituito un punteggio di confidenza superiore al 90%, esegui questa query:
SELECT article_text, category FROM `news_classification_dataset.article_data` WHERE cast(confidence as float64) > 0.9

Per eseguire altre query sui dati, esplora la documentazione di BigQuery. BigQuery si integra anche con vari strumenti di visualizzazione. Per creare visualizzazioni dei dati degli articoli categorizzati, consulta la guida rapida di Data Studio per BigQuery.

Complimenti!

Hai imparato a usare il metodo di classificazione del testo dell'API Natural Language per classificare gli articoli. Hai iniziato classificando un articolo e poi hai imparato a classificare e analizzare un set di dati di articoli di grandi dimensioni utilizzando l'API NL con BigQuery.

Argomenti trattati

  • Creazione di una richiesta classifyText dell'API Natural Language e chiamata dell'API con curl
  • Uso del modulo Python di Google Cloud per analizzare un set di dati di articoli molto grande
  • Importazione e analisi dei dati in BigQuery

Copyright 2020 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.

Prima di iniziare

  1. I lab creano un progetto e risorse Google Cloud per un periodo di tempo prestabilito
  2. I lab hanno un limite di tempo e non possono essere messi in pausa. Se termini il lab, dovrai ricominciare dall'inizio.
  3. In alto a sinistra dello schermo, fai clic su Inizia il lab per iniziare

Utilizza la navigazione privata

  1. Copia il nome utente e la password forniti per il lab
  2. Fai clic su Apri console in modalità privata

Accedi alla console

  1. Accedi utilizzando le tue credenziali del lab. L'utilizzo di altre credenziali potrebbe causare errori oppure l'addebito di costi.
  2. Accetta i termini e salta la pagina di ripristino delle risorse
  3. Non fare clic su Termina lab a meno che tu non abbia terminato il lab o non voglia riavviarlo, perché il tuo lavoro verrà eliminato e il progetto verrà rimosso

Questi contenuti non sono al momento disponibili

Ti invieremo una notifica via email quando sarà disponibile

Bene.

Ti contatteremo via email non appena sarà disponibile

Un lab alla volta

Conferma per terminare tutti i lab esistenti e iniziare questo

Utilizza la navigazione privata per eseguire il lab

Utilizza una finestra del browser in incognito o privata per eseguire questo lab. In questo modo eviterai eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.