Menganalisis Sentimen

Analisis Sentimen memeriksa teks yang diberikan dan mengidentifikasi sentimen 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 oleh Natural Language API, lihat Dukungan Bahasa. Untuk mengetahui informasi tentang cara menafsirkan nilai sentimen score dan magnitude yang disertakan dalam analisis, lihat Menafsirkan nilai analisis sentimen.

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

Menganalisis Sentimen dalam String

Berikut adalah contoh cara melakukan 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 petunjuk tentang cara menginstal gcloud CLI, menyiapkan project dengan akun layanan, lihat Panduan Memulai.

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 dideteksi. Untuk mengetahui informasi tentang bahasa yang didukung oleh 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 mengetahui detail selengkapnya.

Untuk melakukan 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 Go API Natural Language.

Untuk melakukan autentikasi 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 Java API Natural Language.

Untuk melakukan autentikasi 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 Python API Natural Language.

Untuk melakukan autentikasi 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 kunjungi Dokumentasi referensi Natural Language untuk .NET.

PHP: Ikuti Petunjuk penyiapan PHP di halaman library klien, lalu kunjungi Dokumentasi referensi Natural Language untuk PHP.

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

Menganalisis Sentimen dari Cloud Storage

Untuk memudahkan Anda, Natural Language API dapat melakukan analisis sentimen secara langsung pada file yang terletak di Cloud Storage, tanpa perlu mengirimkan konten file dalam isi permintaan Anda.

Berikut adalah contoh cara melakukan analisis sentimen pada file yang terletak 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 dalam 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 dideteksi. Untuk mengetahui informasi tentang bahasa yang didukung oleh 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 mengetahui 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 Go API Natural Language.

Untuk melakukan autentikasi 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 Java API Natural Language.

Untuk melakukan autentikasi 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 Node.js API Natural Language.

Untuk melakukan autentikasi 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 Python API Natural Language.

Untuk melakukan autentikasi 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 kunjungi Dokumentasi referensi Natural Language untuk .NET.

PHP: Ikuti Petunjuk penyiapan PHP di halaman library klien, lalu kunjungi Dokumentasi referensi Natural Language untuk PHP.

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