Tutorial sull'analisi del sentiment

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Pubblico

Questo tutorial è progettato per consentirti di iniziare rapidamente a esplorare e sviluppare applicazioni con l'API Google Cloud Natural Language. È progettato per chi ha familiarità con la programmazione di base, anche se non ha esperienza di programmazione sufficiente. Dopo aver seguito questo tutorial, dovresti poter utilizzare la documentazione di riferimento per creare le tue applicazioni di base.

Questo tutorial illustra un'applicazione API Natural Language utilizzando il codice Python. Lo scopo non è spiegare le librerie client Python, ma spiegare come effettuare chiamate all'API Natural Language. Le applicazioni in Java e Node.js sono sostanzialmente simili. Consulta l'API Natural Language Esempi per gli altri linguaggi (compreso questo esempio nel tutorial).

Prerequisiti

Questo tutorial ha diversi prerequisiti:

Analisi del sentiment dei documenti

Questo tutorial illustra un'applicazione API Basic Natural Language, che utilizza una richiesta analyzeSentiment, che esegue analisi del sentiment sul testo. L'analisi del sentiment tenta di determinare l'atteggiamento complessivo (positivo o negativo) ed è rappresentata da valori numerici score e magnitude. Per ulteriori informazioni su questi concetti, consulta le Nozioni di base su Natural Language.

Innanzitutto, mostriamo l'intero codice. Abbiamo rimosso la maggior parte dei commenti da questo codice per mostrare quanto è breve. Forniremo altri commenti man mano che esaminiamo il codice.

Per ulteriori informazioni sull'installazione e l'utilizzo della libreria client di Google Cloud Natural Language per Python, consulta la sezione Librerie client dell'API Natural Language.
"""Demonstrates how to make a simple call to the Natural Language API."""

import argparse

from google.cloud import language_v1

def print_result(annotations):
    score = annotations.document_sentiment.score
    magnitude = annotations.document_sentiment.magnitude

    for index, sentence in enumerate(annotations.sentences):
        sentence_sentiment = sentence.sentiment.score
        print(
            "Sentence {} has a sentiment score of {}".format(index, sentence_sentiment)
        )

    print(
        "Overall Sentiment: score of {} with magnitude of {}".format(score, magnitude)
    )
    return 0

def analyze(movie_review_filename):
    """Run a sentiment analysis request on text within a passed filename."""
    client = language_v1.LanguageServiceClient()

    with open(movie_review_filename, "r") as review_file:
        # Instantiates a plain text document.
        content = review_file.read()

    document = language_v1.Document(
        content=content, type_=language_v1.Document.Type.PLAIN_TEXT
    )
    annotations = client.analyze_sentiment(request={"document": document})

    # Print the results
    print_result(annotations)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
    )
    parser.add_argument(
        "movie_review_filename",
        help="The filename of the movie review you'd like to analyze.",
    )
    args = parser.parse_args()

    analyze(args.movie_review_filename)

Questa semplice applicazione esegue le attività seguenti:

  • Importa le librerie necessarie per eseguire l'applicazione
  • Prende un file di testo e lo passa alla funzione main()
  • Legge il file di testo e invia una richiesta al servizio
  • Analizza la risposta dal servizio e la mostra all'utente

Esamineremo questi passaggi più in dettaglio di seguito.

Importazione delle raccolte

Per ulteriori informazioni sull'installazione e l'utilizzo della libreria client di Google Cloud Natural Language per Python, consulta la sezione Librerie client dell'API Natural Language.
import argparse

from google.cloud import language_v1

Importiamo argparse, una libreria standard, per consentire all'applicazione di accettare nomi file di input come argomenti.

Per l'utilizzo dell'API Cloud Natural Language, vogliamo anche importare il modulo language dalla libreria google-cloud-language. Il modulo types contiene i corsi necessari per creare le richieste.

Esecuzione dell'applicazione

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
    )
    parser.add_argument(
        "movie_review_filename",
        help="The filename of the movie review you'd like to analyze.",
    )
    args = parser.parse_args()

    analyze(args.movie_review_filename)

In questo caso, analizziamo semplicemente l'argomento passato per il nome del file di testo e lo trasmettiamo alla funzione analyze().

Autenticazione nell'API

Prima di comunicare con il servizio API Natural Language, devi autenticare il servizio utilizzando le credenziali acquisite in precedenza. All'interno di un'applicazione, il modo più semplice per ottenere le credenziali è utilizzare le credenziali predefinite dell'applicazione (ADC). Per impostazione predefinita, ADC proverà a ottenere le credenziali dal file dell'ambiente GOOGLE_APPLICATION_CREDENTIALS, che deve essere impostato in modo da puntare al file della chiave JSON dell'account di servizio. Devi aver configurato l'account e l'ambiente di servizio per utilizzare l'ADC nella Guida rapida. Per ulteriori informazioni, consulta la sezione Configurare un account di servizio.

La libreria client di Google Cloud per Python utilizza automaticamente le credenziali predefinite dell'applicazione.

Effettuare la richiesta

Ora che il nostro servizio API Natural Language è pronto, possiamo accedere al servizio chiamando il metodo analyze_sentiment dell'istanza LanguageServiceClient.

La libreria client incapsula i dettagli delle richieste e delle risposte all'API. Consulta la documentazione relativa all'API Natural Language per informazioni complete sulla struttura specifica di questa richiesta.

Per ulteriori informazioni sull'installazione e l'utilizzo della libreria client di Google Cloud Natural Language per Python, consulta la sezione Librerie client dell'API Natural Language.
def analyze(movie_review_filename):
    """Run a sentiment analysis request on text within a passed filename."""
    client = language_v1.LanguageServiceClient()

    with open(movie_review_filename, "r") as review_file:
        # Instantiates a plain text document.
        content = review_file.read()

    document = language_v1.Document(
        content=content, type_=language_v1.Document.Type.PLAIN_TEXT
    )
    annotations = client.analyze_sentiment(request={"document": document})

    # Print the results
    print_result(annotations)

Questo snippet di codice esegue le attività seguenti:

  1. Crea un'istanza per un'istanza LanguageServiceClient come client.
  2. Legge il nome del file contenente i dati di testo in una variabile.
  3. Crea un'istanza di un oggetto Document con i contenuti del file.
  4. Chiama il metodo analyze_sentiment del client.

Analisi della risposta

def print_result(annotations):
    score = annotations.document_sentiment.score
    magnitude = annotations.document_sentiment.magnitude

    for index, sentence in enumerate(annotations.sentences):
        sentence_sentiment = sentence.sentiment.score
        print(
            "Sentence {} has a sentiment score of {}".format(index, sentence_sentiment)
        )

    print(
        "Overall Sentiment: score of {} with magnitude of {}".format(score, magnitude)
    )
    return 0

Esaminiamo la risposta per estrarre i valori di sentiment score per ogni frase e i valori score e magnitude complessivi per l'intera recensione e li mostriamo all'utente.

Esegui l'esempio

Per eseguire l'esempio, lo testeremo per una serie di recensioni (false) relative al film "Bladerunner".

  1. Scarica gli esempi da Google Cloud Storage:

    gsutil cp gs://cloud-samples-tests/natural-language/sentiment-samples.tgz .
    

    gsutil di solito viene installato come parte dell'interfaccia a riga di comando gcloud. Per installare la versione più recente di gcloud CLI, consulta la documentazione dell'interfaccia a riga di comando gcloud.

  2. Decomprimi gli esempi per ottenere la cartella "reviews":

    gunzip sentiment-samples.tgz
    tar -xvf sentiment-samples.tar
    
  3. Esegui la nostra analisi del sentiment su uno dei file specificati:

    python sentiment_analysis.py reviews/bladerunner-pos.txt
    Sentence 0 has a sentiment score of 0.8
    Sentence 1 has a sentiment score of 0.9
    Sentence 2 has a sentiment score of 0.8
    Sentence 3 has a sentiment score of 0.2
    Sentence 4 has a sentiment score of 0.1
    Sentence 5 has a sentiment score of 0.4
    Sentence 6 has a sentiment score of 0.3
    Sentence 7 has a sentiment score of 0.4
    Sentence 8 has a sentiment score of 0.2
    Sentence 9 has a sentiment score of 0.9
    Overall Sentiment: score of 0.5 with magnitude of 5.5
    

L'esempio sopra indicherebbe una recensione relativamente positiva (punteggio 0.5) e relativamente emotiva (magnitudo 5.5).

L'esecuzione di analisi su altri esempi dovrebbe produrre valori simili a quelli mostrati di seguito:

python sentiment_analysis.py reviews/bladerunner-neg.txt
...
Overall Sentiment: score of -0.6 with magnitude of 3.3

python sentiment_analysis.py reviews/bladerunner-mixed.txt
...
Overall Sentiment: score of 0 with magnitude of 4.7

python sentiment_analysis.py reviews/bladerunner-neutral.txt
...
Overall Sentiment: score of -0.1 with magnitude of 1.8

Tieni presente che le dimensioni sono tutte simili (indicando una quantità relativa uguale di sentimento emotivamente significativo), ad eccezione del caso "neutro", che indica una recensione con sentiment molto emotivo, positivo o negativo. Per ulteriori informazioni sui punteggi e sul livello di sentiment e su come interpretare questi valori, consulta la sezione Interpretazione dei valori di analisi del sentiment.

Se vuoi esplorare l'analisi del sentiment con più dati, Stanford ti fornisce un set di dati di recensioni film IMDB. Per recuperare queste recensioni di film:

  1. Scarica il set di dati per la revisione di film di grandi dimensioni.
  2. Decomprimi il file nella directory di lavoro. Le recensioni dei film sono divise in directory pos e neg nelle directory dati train e test, con ogni file di testo contenente una recensione film.
  3. Esegui lo strumento sentiment_analysis.py su qualsiasi file di testo della recensione di un film.

Complimenti! Hai eseguito le prime attività di deduzione utilizzando l'API Google Cloud Natural Language.