Menganalisis Sentimen

Analisis Sentimen memeriksa teks tertentu dan mengidentifikasi pendapat emosional yang berlaku dalam teks, terutama untuk menentukan sikap penulis sebagai positif, negatif, atau netral. Analisis sentimen dilakukan melalui metode analyzeSentiment. Untuk mengetahui informasi tentang bahasa yang didukung Natural Language API, lihat Dukungan Bahasa. Untuk mengetahui informasi cara menafsirkan nilai sentimen score dan magnitude yang disertakan dalam analisis, baca artikel Menafsirkan nilai analisis sentimen.

Bagian ini menunjukkan beberapa cara untuk mendeteksi sentimen dalam dokumen. Anda harus mengirimkan permintaan terpisah untuk setiap dokumen.

Menganalisis Sentimen dalam String

Berikut adalah contoh pelaksanaan analisis sentimen pada string teks yang dikirim langsung ke Natural Language API:

Protokol

Untuk menganalisis sentimen dalam dokumen, buat permintaan POST ke metode REST documents:analyzeSentiment dan berikan isi permintaan yang sesuai seperti yang ditunjukkan dalam contoh berikut.

Contoh ini menggunakan perintah gcloud auth application-default print-access-token untuk mendapatkan token akses untuk akun layanan yang disiapkan untuk project menggunakan gcloud CLI Google Cloud Platform. Untuk mengetahui petunjuk cara menginstal gcloud CLI, lihat Panduan Memulai untuk menyiapkan project dengan akun layanan.

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"

Jika Anda tidak menentukan document.language_code, bahasa akan otomatis terdeteksi. Untuk mengetahui informasi tentang bahasa yang didukung Natural Language API, lihat Dukungan Bahasa. Lihat dokumentasi referensi Document untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi isi permintaan.

Jika permintaan berhasil, server akan menampilkan kode status HTTP 200 OK dan respons dalam format 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 menunjukkan sentimen positif dengan nilai lebih besar dari nol, dan sentimen negatif dengan nilai kurang dari nol.

gcloud

Lihat perintah analyze-sentiment untuk detail selengkapnya.

Untuk menjalankan analisis sentimen, gunakan gcloud CLI dan gunakan flag --content untuk mengidentifikasi konten yang akan dianalisis:

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

Jika permintaan berhasil, server akan menampilkan respons dalam format 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 menunjukkan sentimen positif dengan nilai lebih besar dari nol, dan sentimen negatif dengan nilai kurang dari nol.

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Natural Language, lihat library klien Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Natural Language.

Untuk mengautentikasi ke Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Natural Language, lihat library klien Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Natural Language.

Untuk mengautentikasi ke Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

// 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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Natural Language, lihat library klien Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Natural Language.

Untuk mengautentikasi ke Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Bahasa tambahan

C#: Ikuti Petunjuk penyiapan C# di halaman library klien lalu buka Dokumentasi referensi Natural Language untuk .NET.

PHP: Ikuti petunjuk penyiapan PHP di halaman library klien lalu buka Dokumentasi referensi Natural Language untuk PHP.

Ruby: Ikuti petunjuk penyiapan Ruby di halaman library klien, lalu buka Dokumentasi referensi Natural Language untuk Ruby.

Menganalisis Sentimen dari Cloud Storage

Untuk memudahkan Anda, Natural Language API dapat menjalankan analisis sentimen secara langsung pada file yang berada di Cloud Storage, tanpa perlu mengirimkan isi file ke isi permintaan Anda.

Berikut contoh pelaksanaan analisis sentimen pada file yang berada di Cloud Storage.

Protokol

Untuk menganalisis sentimen dari dokumen yang disimpan di Cloud Storage, buat permintaan POST ke metode REST documents:analyzeSentiment dan berikan isi permintaan yang sesuai dengan jalur ke dokumen seperti yang ditunjukkan pada contoh berikut.

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"

Jika Anda tidak menentukan document.language_code, bahasa akan otomatis terdeteksi. Untuk mengetahui informasi tentang bahasa yang didukung Natural Language API, lihat Dukungan Bahasa. Lihat dokumentasi referensi Document untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi isi permintaan.

Jika permintaan berhasil, server akan menampilkan kode status HTTP 200 OK dan respons dalam format 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 menunjukkan sentimen positif dengan nilai lebih besar dari nol, dan sentimen negatif dengan nilai kurang dari nol.

gcloud

Lihat perintah analyze-sentiment untuk detail selengkapnya.

Untuk melakukan analisis sentimen pada file di Cloud Storage, gunakan alat command line gcloud dan gunakan flag --content-file untuk mengidentifikasi jalur file yang berisi konten yang akan dianalisis:

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

Jika permintaan berhasil, server akan menampilkan respons dalam format 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 menunjukkan sentimen positif dengan nilai lebih besar dari nol, dan sentimen negatif dengan nilai kurang dari nol.

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Natural Language, lihat library klien Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Natural Language.

Untuk mengautentikasi ke Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Natural Language, lihat library klien Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Natural Language.

Untuk mengautentikasi ke Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

// 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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Natural Language, lihat library klien Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Natural Language.

Untuk mengautentikasi ke Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

// 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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Natural Language, lihat library klien Natural Language. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Natural Language.

Untuk mengautentikasi ke Natural Language, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Bahasa tambahan

C#: Ikuti Petunjuk penyiapan C# di halaman library klien lalu buka Dokumentasi referensi Natural Language untuk .NET.

PHP: Ikuti petunjuk penyiapan PHP di halaman library klien lalu buka Dokumentasi referensi Natural Language untuk PHP.

Ruby: Ikuti petunjuk penyiapan Ruby di halaman library klien, lalu buka Dokumentasi referensi Natural Language untuk Ruby.