Analisi del sentiment

L'analisi del sentiment esamina il testo specificato e identifica l'opinione emotivo prevalente all'interno del testo, in particolare per stabilire l'atteggiamento di uno scrittore come positivo, negativo o neutro. L'analisi del sentiment viene eseguita con il metodo analyzeSentiment. Per informazioni sulle lingue supportate dall'API Natural Language, consulta la pagina Supporto delle lingue. Per informazioni su come interpretare i valori di sentiment score e magnitude inclusi nell'analisi, consulta Interpretazione dei valori di analisi del sentiment.

Questa sezione illustra alcuni modi per rilevare il sentiment in un documento. Devi inviare una richiesta separata per ciascun documento.

Analisi del sentiment in una stringa

Ecco un esempio di analisi del sentiment su una stringa di testo inviata direttamente all'API Natural Language:

Protocollo

Per analizzare il sentiment in un documento, effettua una richiesta POST al metodo REST documents:analyzeSentiment e fornisci il corpo della richiesta appropriato, come mostrato nell'esempio seguente.

L'esempio utilizza il comando gcloud auth application-default print-access-token per ottenere un token di accesso per un account di servizio configurato per il progetto utilizzando gcloud CLI di Google Cloud Platform. Per istruzioni sull'installazione di gcloud CLI, sulla configurazione di un progetto con un account di servizio, consulta la Guida rapida.

curl -X POST \
     -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
     -H "Content-Type: application/json; charset=utf-8" \
     --data "{
  'encodingType': 'UTF8',
  'document': {
    'type': 'PLAIN_TEXT',
    'content': 'Enjoy your vacation!'
  }
}" "https://language.googleapis.com/v2/documents:analyzeSentiment"

Se non specifichi document.language_code, la lingua verrà rilevata automaticamente. Per informazioni sulle lingue supportate dall'API Natural Language, consulta la pagina Supporto delle lingue. Consulta la documentazione di riferimento di Document per saperne di più sulla configurazione del corpo della richiesta.

Se la richiesta ha esito positivo, il server restituisce un codice di stato HTTP 200 OK e la risposta in formato JSON:

{
  "documentSentiment": {
    "magnitude": 0.8,
    "score": 0.8
  },
  "language": "en",
  "sentences": [
    {
      "text": {
        "content": "Enjoy your vacation!",
        "beginOffset": 0
      },
      "sentiment": {
        "magnitude": 0.8,
        "score": 0.8
      }
    }
  ]
}

documentSentiment.score indica un sentiment positivo con un valore maggiore di zero e un sentiment negativo con un valore inferiore a zero.

gcloud

Per informazioni dettagliate, consulta il comando analyze-sentiment.

Per eseguire l'analisi del sentiment, utilizza gcloud CLI e il flag --content per identificare i contenuti da analizzare:

gcloud ml language analyze-sentiment --content="Enjoy your vacation!"

Se la richiesta ha esito positivo, il server restituisce una risposta in formato JSON:

{
  "documentSentiment": {
    "magnitude": 0.8,
    "score": 0.8
  },
  "language": "en",
  "sentences": [
    {
      "text": {
        "content": "Enjoy your vacation!",
        "beginOffset": 0
      },
      "sentiment": {
        "magnitude": 0.8,
        "score": 0.8
      }
    }
  ]
}

documentSentiment.score indica un sentiment positivo con un valore maggiore di zero e un sentiment negativo con un valore inferiore a zero.

Go

Per scoprire come installare e utilizzare la libreria client per Natural Language, consulta Librerie client di Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Natural Language Go.

Per eseguire l'autenticazione in Natural Language, imposta Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"

	language "cloud.google.com/go/language/apiv2"
	"cloud.google.com/go/language/apiv2/languagepb"
)

// analyzeSentiment sends a string of text to the Cloud Natural Language API to
// assess the sentiment of the text.
func analyzeSentiment(w io.Writer, text string) error {
	ctx := context.Background()

	// Initialize client.
	client, err := language.NewClient(ctx)
	if err != nil {
		return err
	}
	defer client.Close()

	resp, err := client.AnalyzeSentiment(ctx, &languagepb.AnalyzeSentimentRequest{
		Document: &languagepb.Document{
			Source: &languagepb.Document_Content{
				Content: text,
			},
			Type: languagepb.Document_PLAIN_TEXT,
		},
		EncodingType: languagepb.EncodingType_UTF8,
	})

	if err != nil {
		return fmt.Errorf("AnalyzeSentiment: %w", err)
	}
	fmt.Fprintf(w, "Response: %q\n", resp)

	return nil
}

Java

Per scoprire come installare e utilizzare la libreria client per Natural Language, consulta Librerie client di Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Natural Language Java.

Per eseguire l'autenticazione in Natural Language, imposta Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

// Instantiate the Language client com.google.cloud.language.v2.LanguageServiceClient
try (LanguageServiceClient language = LanguageServiceClient.create()) {
  Document doc = Document.newBuilder().setContent(text).setType(Type.PLAIN_TEXT).build();
  AnalyzeSentimentResponse response = language.analyzeSentiment(doc);
  Sentiment sentiment = response.getDocumentSentiment();
  if (sentiment == null) {
    System.out.println("No sentiment found");
  } else {
    System.out.printf("Sentiment magnitude: %.3f\n", sentiment.getMagnitude());
    System.out.printf("Sentiment score: %.3f\n", sentiment.getScore());
  }
  return sentiment;
}

Python

Per scoprire come installare e utilizzare la libreria client per Natural Language, consulta Librerie client di Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Natural Language Python.

Per eseguire l'autenticazione in Natural Language, imposta Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import language_v2

def sample_analyze_sentiment(text_content: str = "I am so happy and joyful.") -> None:
    """
    Analyzes Sentiment in a string.

    Args:
      text_content: The text content to analyze.
    """

    client = language_v2.LanguageServiceClient()

    # text_content = 'I am so happy and joyful.'

    # Available types: PLAIN_TEXT, HTML
    document_type_in_plain_text = language_v2.Document.Type.PLAIN_TEXT

    # Optional. If not specified, the language is automatically detected.
    # For list of supported languages:
    # https://cloud.google.com/natural-language/docs/languages
    language_code = "en"
    document = {
        "content": text_content,
        "type_": document_type_in_plain_text,
        "language_code": language_code,
    }

    # Available values: NONE, UTF8, UTF16, UTF32
    # See https://cloud.google.com/natural-language/docs/reference/rest/v2/EncodingType.
    encoding_type = language_v2.EncodingType.UTF8

    response = client.analyze_sentiment(
        request={"document": document, "encoding_type": encoding_type}
    )
    # Get overall sentiment of the input document
    print(f"Document sentiment score: {response.document_sentiment.score}")
    print(f"Document sentiment magnitude: {response.document_sentiment.magnitude}")
    # Get sentiment for all sentences in the document
    for sentence in response.sentences:
        print(f"Sentence text: {sentence.text.content}")
        print(f"Sentence sentiment score: {sentence.sentiment.score}")
        print(f"Sentence sentiment magnitude: {sentence.sentiment.magnitude}")

    # Get the language of the text, which will be the same as
    # the language specified in the request or, if not specified,
    # the automatically-detected language.
    print(f"Language of the text: {response.language_code}")

Linguaggi aggiuntivi

C#: segui le istruzioni di configurazione di C# nella pagina delle librerie client e poi consulta la documentazione di riferimento sul linguaggio naturale per .NET.

PHP: segui le istruzioni per la configurazione dei file PHP nella pagina delle librerie client e consulta la documentazione di riferimento di Natural Language per PHP.

Ruby: segui le istruzioni per la configurazione di Ruby nella pagina delle librerie client e poi visita la documentazione di riferimento di Natural Language per Ruby.

analisi del sentiment da Cloud Storage

Per comodità, l'API Natural Language può eseguire l'analisi del sentiment direttamente su un file situato in Cloud Storage, senza dover inviare i contenuti del file nel corpo della richiesta.

Ecco un esempio di analisi del sentiment su un file situato in Cloud Storage.

Protocollo

Per analizzare il sentiment di un documento archiviato in Cloud Storage, effettua una richiesta POST al metodo REST documents:analyzeSentiment e fornisci il corpo della richiesta appropriato con il percorso del documento, come mostrato nell'esempio seguente.

curl -X POST \
     -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
     -H "Content-Type: application/json; charset=utf-8" \
     --data "{
  'document':{
    'type':'PLAIN_TEXT',
    'gcsContentUri':'gs://<bucket-name>/<object-name>'
  }
}" "https://language.googleapis.com/v2/documents:analyzeSentiment"

Se non specifichi document.language_code, la lingua verrà rilevata automaticamente. Per informazioni sulle lingue supportate dall'API Natural Language, consulta la pagina Supporto delle lingue. Consulta la documentazione di riferimento di Document per saperne di più sulla configurazione del corpo della richiesta.

Se la richiesta ha esito positivo, il server restituisce un codice di stato HTTP 200 OK e la risposta in formato JSON:

{
  "documentSentiment": {
    "magnitude": 0.8,
    "score": 0.8
  },
  "language_code": "en",
  "sentences": [
    {
      "text": {
        "content": "Enjoy your vacation!",
        "beginOffset": 0
      },
      "sentiment": {
        "magnitude": 0.8,
        "score": 0.8
      }
    }
  ]
}

documentSentiment.score indica un sentiment positivo con un valore maggiore di zero e un sentiment negativo con un valore inferiore a zero.

gcloud

Per informazioni dettagliate, consulta il comando analyze-sentiment.

Per eseguire l'analisi del sentiment su un file in Cloud Storage, utilizza lo strumento a riga di comando gcloud e il flag --content-file per identificare il percorso del file che include i contenuti da analizzare:

gcloud ml language analyze-sentiment --content-file=gs://YOUR_BUCKET_NAME/YOUR_FILE_NAME

Se la richiesta ha esito positivo, il server restituisce una risposta in formato JSON:

{
  "documentSentiment": {
    "magnitude": 0.8,
    "score": 0.8
  },
  "language": "en",
  "sentences": [
    {
      "text": {
        "content": "Enjoy your vacation!",
        "beginOffset": 0
      },
      "sentiment": {
        "magnitude": 0.8,
        "score": 0.8
      }
    }
  ]
}

documentSentiment.score indica un sentiment positivo con un valore maggiore di zero e un sentiment negativo con un valore inferiore a zero.

Go

Per scoprire come installare e utilizzare la libreria client per Natural Language, consulta Librerie client di Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Natural Language Go.

Per eseguire l'autenticazione in Natural Language, imposta Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


func analyzeSentimentFromGCS(ctx context.Context, gcsURI string) (*languagepb.AnalyzeSentimentResponse, error) {
	return client.AnalyzeSentiment(ctx, &languagepb.AnalyzeSentimentRequest{
		Document: &languagepb.Document{
			Source: &languagepb.Document_GcsContentUri{
				GcsContentUri: gcsURI,
			},
			Type: languagepb.Document_PLAIN_TEXT,
		},
	})
}

Java

Per scoprire come installare e utilizzare la libreria client per Natural Language, consulta Librerie client di Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Natural Language Java.

Per eseguire l'autenticazione in Natural Language, imposta Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

// Instantiate the Language client com.google.cloud.language.v2.LanguageServiceClient
try (LanguageServiceClient language = LanguageServiceClient.create()) {
  Document doc =
      Document.newBuilder().setGcsContentUri(gcsUri).setType(Type.PLAIN_TEXT).build();
  AnalyzeSentimentResponse response = language.analyzeSentiment(doc);
  Sentiment sentiment = response.getDocumentSentiment();
  if (sentiment == null) {
    System.out.println("No sentiment found");
  } else {
    System.out.printf("Sentiment magnitude : %.3f\n", sentiment.getMagnitude());
    System.out.printf("Sentiment score : %.3f\n", sentiment.getScore());
  }
  return sentiment;
}

Node.js

Per scoprire come installare e utilizzare la libreria client per Natural Language, consulta Librerie client di Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Natural Language Node.js.

Per eseguire l'autenticazione in Natural Language, imposta Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

// Imports the Google Cloud client library
const language = require('@google-cloud/language').v2;

// Creates a client
const client = new language.LanguageServiceClient();

/**
 * TODO(developer): Uncomment the following lines to run this code
 */
// const bucketName = 'Your bucket name, e.g. my-bucket';
// const fileName = 'Your file name, e.g. my-file.txt';

// Prepares a document, representing a text file in Cloud Storage
const document = {
  gcsContentUri: `gs://${bucketName}/${fileName}`,
  type: 'PLAIN_TEXT',
};

// Detects the sentiment of the document
const [result] = await client.analyzeSentiment({document});

const sentiment = result.documentSentiment;
console.log('Document sentiment:');
console.log(`  Score: ${sentiment.score}`);
console.log(`  Magnitude: ${sentiment.magnitude}`);

const sentences = result.sentences;
sentences.forEach(sentence => {
  console.log(`Sentence: ${sentence.text.content}`);
  console.log(`  Score: ${sentence.sentiment.score}`);
  console.log(`  Magnitude: ${sentence.sentiment.magnitude}`);
});

Python

Per scoprire come installare e utilizzare la libreria client per Natural Language, consulta Librerie client di Natural Language. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Natural Language Python.

Per eseguire l'autenticazione in Natural Language, imposta Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import language_v2

def sample_analyze_sentiment(
    gcs_content_uri: str = "gs://cloud-samples-data/language/sentiment-positive.txt",
) -> None:
    """
    Analyzes Sentiment in text file stored in Cloud Storage.

    Args:
      gcs_content_uri: Google Cloud Storage URI where the file content is located.
        e.g. gs://[Your Bucket]/[Path to File]
    """

    client = language_v2.LanguageServiceClient()

    # Available types: PLAIN_TEXT, HTML
    document_type_in_plain_text = language_v2.Document.Type.PLAIN_TEXT

    # Optional. If not specified, the language is automatically detected.
    # For list of supported languages:
    # https://cloud.google.com/natural-language/docs/languages
    language_code = "en"
    document = {
        "gcs_content_uri": gcs_content_uri,
        "type_": document_type_in_plain_text,
        "language_code": language_code,
    }

    # Available values: NONE, UTF8, UTF16, UTF32
    # See https://cloud.google.com/natural-language/docs/reference/rest/v2/EncodingType.
    encoding_type = language_v2.EncodingType.UTF8

    response = client.analyze_sentiment(
        request={"document": document, "encoding_type": encoding_type}
    )
    # Get overall sentiment of the input document
    print(f"Document sentiment score: {response.document_sentiment.score}")
    print(f"Document sentiment magnitude: {response.document_sentiment.magnitude}")
    # Get sentiment for all sentences in the document
    for sentence in response.sentences:
        print(f"Sentence text: {sentence.text.content}")
        print(f"Sentence sentiment score: {sentence.sentiment.score}")
        print(f"Sentence sentiment magnitude: {sentence.sentiment.magnitude}")

    # Get the language of the text, which will be the same as
    # the language specified in the request or, if not specified,
    # the automatically-detected language.
    print(f"Language of the text: {response.language_code}")

Linguaggi aggiuntivi

C#: segui le istruzioni di configurazione di C# nella pagina delle librerie client e poi consulta la documentazione di riferimento sul linguaggio naturale per .NET.

PHP: segui le istruzioni per la configurazione dei file PHP nella pagina delle librerie client e consulta la documentazione di riferimento di Natural Language per PHP.

Ruby: segui le istruzioni per la configurazione di Ruby nella pagina delle librerie client e poi visita la documentazione di riferimento di Natural Language per Ruby.