Mulai Cepat: Analisis sentimen dan Penambangan Pendapat

Dokumentasi referensi | Sampel tambahan | Paket (NuGet) | Kode sumber pustaka

Gunakan mulai cepat ini untuk membuat aplikasi analisis sentimen dengan pustaka klien untuk .NET. Dalam contoh berikut, Anda akan membuat aplikasi C# yang dapat mengidentifikasi sentimen yang dinyatakan dalam sampel teks, serta melakukan analisis sentimen berbasis aspek.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • IDE Visual Studio
  • Setelah Anda memiliki langganan Azure, buat sumber daya Bahasa di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Setelah disebarkan, klik Buka sumber daya.
    • Anda akan memerlukan kunci dan titik akhir dari referensi yang Anda buat untuk menyambungkan aplikasi Anda ke API. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
    • Anda dapat menggunakan tingkat harga gratis (Free F0) untuk mencoba layanan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
  • Untuk menggunakan fitur Analisis, Anda memerlukan sumber daya Bahasa dengan tingkat harga standar (S).

Persiapan

Buat aplikasi .NET Core baru

Menggunakan Ide Visual Studio, buat aplikasi konsol .NET Core baru. Ini akan membuat proyek "Halo Dunia" dengan satu file sumber C#: program.cs.

Pasang pustaka klien dengan mengeklik kanan solusi proyek di Penjelajah Solusi, lalu pilih Kelola Paket NuGet. Di manajer paket yang terbuka pilih Telusuri dan cari Azure.AI.TextAnalytics. Pilih versi 5.1.0, lalu Pasang. Anda juga dapat menggunakan Package Manager Console.

Contoh kode

Salin kode berikut ke dalam file program.cs Anda. Jangan lupa untuk mengganti variabel key dengan kunci untuk referensi Anda dan ganti variabel endpoint dengan titik akhir untuk referensi Anda.

Penting

Pergi ke portal Microsoft Azure. Jika sumber daya bahasa yang Anda buat di bagian Prasyarat berhasil disebarkan, klik tombol Buka Referensi di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir dengan membuka halaman Kunci dan Titik Akhir sumber daya, di bagian Manajemen Sumber Daya.

Ingatlah untuk menghapus kunci dari kode Anda setelah selesai, dan jangan pernah memposting kode secara publik. Untuk produksi, pertimbangkan untuk menggunakan cara menyimpan dan mengakses info masuk Anda dengan aman. Misalnya, Brankas kunci Azure.

using Azure;
using System;
using Azure.AI.TextAnalytics;
using System.Collections.Generic;

namespace Example
{
    class Program
    {
        private static readonly AzureKeyCredential credentials = new AzureKeyCredential("replace-with-your-key-here");
        private static readonly Uri endpoint = new Uri("replace-with-your-endpoint-here");
        
        // Example method for detecting sentiment from text. 
        static void SentimentAnalysisExample(TextAnalyticsClient client)
        {
            string inputText = "I had the best day of my life. I wish you were there with me.";
            DocumentSentiment documentSentiment = client.AnalyzeSentiment(inputText);
            Console.WriteLine($"Document sentiment: {documentSentiment.Sentiment}\n");
        
            foreach (var sentence in documentSentiment.Sentences)
            {
                Console.WriteLine($"\tText: \"{sentence.Text}\"");
                Console.WriteLine($"\tSentence sentiment: {sentence.Sentiment}");
                Console.WriteLine($"\tPositive score: {sentence.ConfidenceScores.Positive:0.00}");
                Console.WriteLine($"\tNegative score: {sentence.ConfidenceScores.Negative:0.00}");
                Console.WriteLine($"\tNeutral score: {sentence.ConfidenceScores.Neutral:0.00}\n");
            }
        }

        // Example method for detecting opinions text. 
        static void SentimentAnalysisWithOpinionMiningExample(TextAnalyticsClient client)
        {
            var documents = new List<string>
            {
                "The food and service were unacceptable, but the concierge were nice."
            };
        
            AnalyzeSentimentResultCollection reviews = client.AnalyzeSentimentBatch(documents, options: new AnalyzeSentimentOptions()
            {
                IncludeOpinionMining = true
            });
        
            foreach (AnalyzeSentimentResult review in reviews)
            {
                Console.WriteLine($"Document sentiment: {review.DocumentSentiment.Sentiment}\n");
                Console.WriteLine($"\tPositive score: {review.DocumentSentiment.ConfidenceScores.Positive:0.00}");
                Console.WriteLine($"\tNegative score: {review.DocumentSentiment.ConfidenceScores.Negative:0.00}");
                Console.WriteLine($"\tNeutral score: {review.DocumentSentiment.ConfidenceScores.Neutral:0.00}\n");
                foreach (SentenceSentiment sentence in review.DocumentSentiment.Sentences)
                {
                    Console.WriteLine($"\tText: \"{sentence.Text}\"");
                    Console.WriteLine($"\tSentence sentiment: {sentence.Sentiment}");
                    Console.WriteLine($"\tSentence positive score: {sentence.ConfidenceScores.Positive:0.00}");
                    Console.WriteLine($"\tSentence negative score: {sentence.ConfidenceScores.Negative:0.00}");
                    Console.WriteLine($"\tSentence neutral score: {sentence.ConfidenceScores.Neutral:0.00}\n");
        
                    foreach (SentenceOpinion sentenceOpinion in sentence.Opinions)
                    {
                        Console.WriteLine($"\tTarget: {sentenceOpinion.Target.Text}, Value: {sentenceOpinion.Target.Sentiment}");
                        Console.WriteLine($"\tTarget positive score: {sentenceOpinion.Target.ConfidenceScores.Positive:0.00}");
                        Console.WriteLine($"\tTarget negative score: {sentenceOpinion.Target.ConfidenceScores.Negative:0.00}");
                        foreach (AssessmentSentiment assessment in sentenceOpinion.Assessments)
                        {
                            Console.WriteLine($"\t\tRelated Assessment: {assessment.Text}, Value: {assessment.Sentiment}");
                            Console.WriteLine($"\t\tRelated Assessment positive score: {assessment.ConfidenceScores.Positive:0.00}");
                            Console.WriteLine($"\t\tRelated Assessment negative score: {assessment.ConfidenceScores.Negative:0.00}");
                        }
                    }
                }
                Console.WriteLine($"\n");
            }
        }

        static void Main(string[] args)
        {
            var client = new TextAnalyticsClient(endpoint, credentials);
            SentimentAnalysisExample(client);
            SentimentAnalysisWithOpinionMiningExample(client);

            Console.Write("Press any key to exit.");
            Console.ReadKey();
        }

    }
}

Output

Document sentiment: Positive

        Text: "I had the best day of my life."
        Sentence sentiment: Positive
        Positive score: 1.00
        Negative score: 0.00
        Neutral score: 0.00

        Text: "I wish you were there with me."
        Sentence sentiment: Neutral
        Positive score: 0.21
        Negative score: 0.02
        Neutral score: 0.77

Document sentiment: Positive

        Positive score: 0.84
        Negative score: 0.16
        Neutral score: 0.00

        Text: "The food and service were unacceptable, but the concierge were nice."
        Sentence sentiment: Positive
        Sentence positive score: 0.84
        Sentence negative score: 0.16
        Sentence neutral score: 0.00

        Target: food, Value: Negative
        Target positive score: 0.01
        Target negative score: 0.99
                Related Assessment: unacceptable, Value: Negative
                Related Assessment positive score: 0.01
                Related Assessment negative score: 0.99
        Target: service, Value: Negative
        Target positive score: 0.01
        Target negative score: 0.99
                Related Assessment: unacceptable, Value: Negative
                Related Assessment positive score: 0.01
                Related Assessment negative score: 0.99
        Target: concierge, Value: Positive
        Target positive score: 1.00
        Target negative score: 0.00
                Related Assessment: nice, Value: Positive
                Related Assessment positive score: 1.00
                Related Assessment negative score: 0.00

Press any key to exit.

Dokumentasi referensi | Sampel tambahan | Paket (Maven) | Kode sumber pustaka

Gunakan mulai cepat ini untuk membuat aplikasi analisis sentimen dengan pustaka klien untuk Java. Dalam contoh berikut, Anda akan membuat aplikasi Java yang dapat mengidentifikasi sentimen yang dinyatakan dalam sampel teks, serta melakukan analisis sentimen berbasis aspek.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Java Development Kit (JDK) versi 8 atau lebih tinggi
  • Setelah Anda memiliki langganan Azure, buat sumber daya Bahasa di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Setelah disebarkan, klik Buka sumber daya.
    • Anda akan memerlukan kunci dan titik akhir dari referensi yang Anda buat untuk menyambungkan aplikasi Anda ke API. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
    • Anda dapat menggunakan tingkat harga gratis (Free F0) untuk mencoba layanan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
  • Untuk menggunakan fitur Analisis, Anda memerlukan sumber daya Bahasa dengan tingkat harga standar (S).

Persiapan

Tambahkan pustaka klien

Buat proyek Maven di IDE atau lingkungan pengembangan pilihan Anda. Kemudian, tambahkan dependensi berikut ke file pom.xml proyek Anda. Anda dapat menemukan sintaks implementasi untuk alat build online lainnya.

<dependencies>
     <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-ai-textanalytics</artifactId>
        <version>5.1.9</version>
    </dependency>
</dependencies>

Contoh kode

Buat file Java bernama Example.java. Buka file dan salin kode di bawah ini. Jangan lupa untuk mengganti variabel key dengan kunci untuk referensi Anda dan ganti variabel endpoint dengan titik akhir untuk referensi Anda.

Penting

Pergi ke portal Microsoft Azure. Jika sumber daya bahasa yang Anda buat di bagian Prasyarat berhasil disebarkan, klik tombol Buka Referensi di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir dengan membuka halaman Kunci dan Titik Akhir sumber daya, di bagian Manajemen Sumber Daya.

Ingatlah untuk menghapus kunci dari kode Anda setelah selesai, dan jangan pernah memposting kode secara publik. Untuk produksi, pertimbangkan untuk menggunakan cara menyimpan dan mengakses info masuk Anda dengan aman. Misalnya, Brankas kunci Azure.

import com.azure.core.credential.AzureKeyCredential;
import com.azure.ai.textanalytics.models.*;
import com.azure.ai.textanalytics.TextAnalyticsClientBuilder;
import com.azure.ai.textanalytics.TextAnalyticsClient;

public class Example {

    private static String KEY = "replace-with-your-key-here";
    private static String ENDPOINT = "replace-with-your-endpoint-here";

    public static void main(String[] args) {
        TextAnalyticsClient client = authenticateClient(KEY, ENDPOINT);
        sentimentAnalysisExample(client);
        sentimentAnalysisWithOpinionMiningExample(client);
    }
    // Method to authenticate the client object with your key and endpoint.
    static TextAnalyticsClient authenticateClient(String key, String endpoint) {
        return new TextAnalyticsClientBuilder()
                .credential(new AzureKeyCredential(key))
                .endpoint(endpoint)
                .buildClient();
    }
    // Example method for sentiment in text.
    static void sentimentAnalysisExample(TextAnalyticsClient client)
    {
        // The text that need be analyzed.
        String text = "I had the best day of my life. I wish you were there with me.";

        DocumentSentiment documentSentiment = client.analyzeSentiment(text);
        System.out.printf(
                "Recognized document sentiment: %s, positive score: %s, neutral score: %s, negative score: %s.%n",
                documentSentiment.getSentiment(),
                documentSentiment.getConfidenceScores().getPositive(),
                documentSentiment.getConfidenceScores().getNeutral(),
                documentSentiment.getConfidenceScores().getNegative());

        for (SentenceSentiment sentenceSentiment : documentSentiment.getSentences()) {
            System.out.printf(
                    "Recognized sentence sentiment: %s, positive score: %s, neutral score: %s, negative score: %s.%n",
                    sentenceSentiment.getSentiment(),
                    sentenceSentiment.getConfidenceScores().getPositive(),
                    sentenceSentiment.getConfidenceScores().getNeutral(),
                    sentenceSentiment.getConfidenceScores().getNegative());
        }
    }
    // Example method for detecting opinions in text.
    static void sentimentAnalysisWithOpinionMiningExample(TextAnalyticsClient client)
    {
        // The document that needs be analyzed.
        String document = "Bad atmosphere. Not close to plenty of restaurants, hotels, and transit! Staff are not friendly and helpful.";

        System.out.printf("Document = %s%n", document);

        AnalyzeSentimentOptions options = new AnalyzeSentimentOptions().setIncludeOpinionMining(true);
        final DocumentSentiment documentSentiment = client.analyzeSentiment(document, "en", options);
        SentimentConfidenceScores scores = documentSentiment.getConfidenceScores();
        System.out.printf(
                "Recognized document sentiment: %s, positive score: %f, neutral score: %f, negative score: %f.%n",
                documentSentiment.getSentiment(), scores.getPositive(), scores.getNeutral(), scores.getNegative());


        documentSentiment.getSentences().forEach(sentenceSentiment -> {
            SentimentConfidenceScores sentenceScores = sentenceSentiment.getConfidenceScores();
            System.out.printf("\tSentence sentiment: %s, positive score: %f, neutral score: %f, negative score: %f.%n",
                    sentenceSentiment.getSentiment(), sentenceScores.getPositive(), sentenceScores.getNeutral(), sentenceScores.getNegative());
            sentenceSentiment.getOpinions().forEach(opinion -> {
                TargetSentiment targetSentiment = opinion.getTarget();
                System.out.printf("\t\tTarget sentiment: %s, target text: %s%n", targetSentiment.getSentiment(),
                        targetSentiment.getText());
                for (AssessmentSentiment assessmentSentiment : opinion.getAssessments()) {
                    System.out.printf("\t\t\t'%s' assessment sentiment because of \"%s\". Is the assessment negated: %s.%n",
                            assessmentSentiment.getSentiment(), assessmentSentiment.getText(), assessmentSentiment.isNegated());
                }
            });
        });
    }
}

Output

Recognized document sentiment: positive, positive score: 0.99, neutral score: 0.0, negative score: 0.0.
Recognized sentence sentiment: positive, positive score: 0.99, neutral score: 0.0, negative score: 0.0.
Recognized sentence sentiment: neutral, positive score: 0.25, neutral score: 0.72, negative score: 0.03.

Document = Bad atmosphere. Not close to plenty of restaurants, hotels, and transit! Staff are not friendly and helpful.
Recognized document sentiment: negative, positive score: 0.050000, neutral score: 0.030000, negative score: 0.920000.
	Sentence sentiment: negative, positive score: 0.010000, neutral score: 0.000000, negative score: 0.990000.
		Target sentiment: negative, target text: atmosphere
			'negative' assessment sentiment because of "Bad". Is the assessment negated: false.
	Sentence sentiment: negative, positive score: 0.140000, neutral score: 0.080000, negative score: 0.780000.
	Sentence sentiment: negative, positive score: 0.010000, neutral score: 0.000000, negative score: 0.990000.
		Target sentiment: negative, target text: Staff
			'negative' assessment sentiment because of "friendly". Is the assessment negated: true.
			'negative' assessment sentiment because of "helpful". Is the assessment negated: true.

Dokumentasi referensi | Sampel tambahan | Paket (npm) | Kode sumber pustaka

Gunakan mulai cepat ini untuk membuat aplikasi analisis sentimen dengan pustaka klien untuk Node.js. Dalam contoh berikut, Anda akan membuat aplikasi JavaScript yang dapat mengidentifikasi sentimen yang dinyatakan dalam sampel teks, serta melakukan analisis sentimen berbasis aspek.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Versi terbaru Node.js.
  • Setelah Anda memiliki langganan Azure, buat sumber daya Bahasa di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Setelah disebarkan, klik Buka sumber daya.
    • Anda akan memerlukan kunci dan titik akhir dari referensi yang Anda buat untuk menyambungkan aplikasi Anda ke API. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
    • Anda dapat menggunakan tingkat harga gratis (Free F0) untuk mencoba layanan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
  • Untuk menggunakan fitur Analisis, Anda memerlukan sumber daya Bahasa dengan tingkat harga standar (S).

Persiapan

Buat aplikasi Node.js baru

Di jendela konsol (seperti cmd, PowerShell, atau Bash), buat direktori baru untuk aplikasi Anda, dan arahkan ke sana.

mkdir myapp 

cd myapp

Jalankan perintah npm init untuk membuat aplikasi node dengan file package.json.

npm init

Memasang pustaka klien

Instal paket npm:

npm install @azure/ai-text-analytics@5.1.0

Contoh kode

Buka file dan salin kode di bawah ini. Jangan lupa untuk mengganti variabel key dengan kunci untuk referensi Anda dan ganti variabel endpoint dengan titik akhir untuk referensi Anda.

Penting

Pergi ke portal Microsoft Azure. Jika sumber daya bahasa yang Anda buat di bagian Prasyarat berhasil disebarkan, klik tombol Buka Referensi di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir dengan membuka halaman Kunci dan Titik Akhir sumber daya, di bagian Manajemen Sumber Daya.

Ingatlah untuk menghapus kunci dari kode Anda setelah selesai, dan jangan pernah memposting kode secara publik. Untuk produksi, pertimbangkan untuk menggunakan cara menyimpan dan mengakses info masuk Anda dengan aman. Misalnya, Brankas kunci Azure.

"use strict";

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");
const key = '<paste-your-key-here>';
const endpoint = '<paste-your-endpoint-here>';
// Authenticate the client with your key and endpoint.
const textAnalyticsClient = new TextAnalyticsClient(endpoint,  new AzureKeyCredential(key));

// Example method for detecting sentiment in text.
async function sentimentAnalysis(client){

    const sentimentInput = [
        "I had the best day of my life. I wish you were there with me."
    ];
    const sentimentResult = await client.analyzeSentiment(sentimentInput);

    sentimentResult.forEach(document => {
        console.log(`ID: ${document.id}`);
        console.log(`\tDocument Sentiment: ${document.sentiment}`);
        console.log(`\tDocument Scores:`);
        console.log(`\t\tPositive: ${document.confidenceScores.positive.toFixed(2)} \tNegative: ${document.confidenceScores.negative.toFixed(2)} \tNeutral: ${document.confidenceScores.neutral.toFixed(2)}`);
        console.log(`\tSentences Sentiment(${document.sentences.length}):`);
        document.sentences.forEach(sentence => {
            console.log(`\t\tSentence sentiment: ${sentence.sentiment}`)
            console.log(`\t\tSentences Scores:`);
            console.log(`\t\tPositive: ${sentence.confidenceScores.positive.toFixed(2)} \tNegative: ${sentence.confidenceScores.negative.toFixed(2)} \tNeutral: ${sentence.confidenceScores.neutral.toFixed(2)}`);
        });
    });
}
sentimentAnalysis(textAnalyticsClient)

// Example method for detecting opinions in text.
async function sentimentAnalysisWithOpinionMining(client){

  const sentimentInput = [
    {
      text: "The food and service were unacceptable, but the concierge were nice",
      id: "0",
      language: "en"
    }
  ];
  const results = await client.analyzeSentiment(sentimentInput, { includeOpinionMining: true });

  for (let i = 0; i < results.length; i++) {
    const result = results[i];
    console.log(`- Document ${result.id}`);
    if (!result.error) {
      console.log(`\tDocument text: ${sentimentInput[i].text}`);
      console.log(`\tOverall Sentiment: ${result.sentiment}`);
      console.log("\tSentiment confidence scores:", result.confidenceScores);
      console.log("\tSentences");
      for (const { sentiment, confidenceScores, opinions } of result.sentences) {
        console.log(`\t- Sentence sentiment: ${sentiment}`);
        console.log("\t  Confidence scores:", confidenceScores);
        console.log("\t  Mined opinions");
        for (const { target, assessments } of opinions) {
          console.log(`\t\t- Target text: ${target.text}`);
          console.log(`\t\t  Target sentiment: ${target.sentiment}`);
          console.log("\t\t  Target confidence scores:", target.confidenceScores);
          console.log("\t\t  Target assessments");
          for (const { text, sentiment } of assessments) {
            console.log(`\t\t\t- Text: ${text}`);
            console.log(`\t\t\t  Sentiment: ${sentiment}`);
          }
        }
      }
    } else {
      console.error(`\tError: ${result.error}`);
    }
  }
}
sentimentAnalysisWithOpinionMining(textAnalyticsClient);

Output

ID: 0
        Document Sentiment: positive
        Document Scores:
                Positive: 1.00  Negative: 0.00  Neutral: 0.00
        Sentences Sentiment(2):
                Sentence sentiment: positive
                Sentences Scores:
                Positive: 1.00  Negative: 0.00  Neutral: 0.00
                Sentence sentiment: neutral
                Sentences Scores:
                Positive: 0.21  Negative: 0.02  Neutral: 0.77

- Document 0
        Document text: The food and service were unacceptable, but the concierge were nice
        Overall Sentiment: positive
        Sentiment confidence scores: { positive: 0.84, neutral: 0, negative: 0.16 }
        Sentences
        - Sentence sentiment: positive
          Confidence scores: { positive: 0.84, neutral: 0, negative: 0.16 }
          Mined opinions
                - Target text: food
                  Target sentiment: negative
                  Target confidence scores: { positive: 0.01, negative: 0.99 }
                  Target assessments
                        - Text: unacceptable
                          Sentiment: negative
                - Target text: service
                  Target sentiment: negative
                  Target confidence scores: { positive: 0.01, negative: 0.99 }
                  Target assessments
                        - Text: unacceptable
                          Sentiment: negative
                - Target text: concierge
                  Target sentiment: positive
                  Target confidence scores: { positive: 1, negative: 0 }
                  Target assessments
                        - Text: nice
                          Sentiment: positive

Dokumentasi referensi | Sampel tambahan | Paket (PiPy) | Kode sumber pustaka

Gunakan mulai cepat ini untuk membuat aplikasi analisis sentimen dengan pustaka klien untuk Python. Dalam contoh berikut, Anda akan membuat aplikasi Python yang dapat mengidentifikasi sentimen yang dinyatakan dalam sampel teks, serta melakukan analisis sentimen berbasis aspek.

Prasyarat

  • Langganan Azure - Membuat langganan gratis
  • Python 3.x
  • Setelah Anda memiliki langganan Azure, buat sumber daya Bahasa di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Setelah disebarkan, klik Buka sumber daya.
    • Anda akan memerlukan kunci dan titik akhir dari referensi yang Anda buat untuk menyambungkan aplikasi Anda ke API. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
    • Anda dapat menggunakan tingkat harga gratis (Free F0) untuk mencoba layanan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
  • Untuk menggunakan fitur Analisis, Anda memerlukan sumber daya Bahasa dengan tingkat harga standar (S).

Persiapan

Memasang pustaka klien

Setelah memasang Python, Anda dapat memasang pustaka klien dengan:

pip install azure-ai-textanalytics==5.1.0

Contoh kode

Buat file Python baru dan salin kode di bawah ini. Jangan lupa untuk mengganti variabel key dengan kunci untuk referensi Anda dan ganti variabel endpoint dengan titik akhir untuk referensi Anda.

Penting

Pergi ke portal Microsoft Azure. Jika sumber daya bahasa yang Anda buat di bagian Prasyarat berhasil disebarkan, klik tombol Buka Referensi di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir dengan membuka halaman Kunci dan Titik Akhir sumber daya, di bagian Manajemen Sumber Daya.

Ingatlah untuk menghapus kunci dari kode Anda setelah selesai, dan jangan pernah memposting kode secara publik. Untuk produksi, pertimbangkan untuk menggunakan cara menyimpan dan mengakses info masuk Anda dengan aman. Misalnya, Brankas kunci Azure.

key = "paste-your-key-here"
endpoint = "paste-your-endpoint-here"

from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential

# Authenticate the client using your key and endpoint 
def authenticate_client():
    ta_credential = AzureKeyCredential(key)
    text_analytics_client = TextAnalyticsClient(
            endpoint=endpoint, 
            credential=ta_credential)
    return text_analytics_client

client = authenticate_client()

# Example function for detecting sentiment in text
def sentiment_analysis_example(client):

    documents = ["I had the best day of my life. I wish you were there with me."]
    response = client.analyze_sentiment(documents=documents)[0]
    print("Document Sentiment: {}".format(response.sentiment))
    print("Overall scores: positive={0:.2f}; neutral={1:.2f}; negative={2:.2f} \n".format(
        response.confidence_scores.positive,
        response.confidence_scores.neutral,
        response.confidence_scores.negative,
    ))
    for idx, sentence in enumerate(response.sentences):
        print("Sentence: {}".format(sentence.text))
        print("Sentence {} sentiment: {}".format(idx+1, sentence.sentiment))
        print("Sentence score:\nPositive={0:.2f}\nNeutral={1:.2f}\nNegative={2:.2f}\n".format(
            sentence.confidence_scores.positive,
            sentence.confidence_scores.neutral,
            sentence.confidence_scores.negative,
        ))
          
sentiment_analysis_example(client)

# Example method for detecting opinions in text 
def sentiment_analysis_with_opinion_mining_example(client):

    documents = [
        "The food and service were unacceptable, but the concierge were nice"
    ]

    result = client.analyze_sentiment(documents, show_opinion_mining=True)
    doc_result = [doc for doc in result if not doc.is_error]

    positive_reviews = [doc for doc in doc_result if doc.sentiment == "positive"]
    negative_reviews = [doc for doc in doc_result if doc.sentiment == "negative"]

    positive_mined_opinions = []
    mixed_mined_opinions = []
    negative_mined_opinions = []

    for document in doc_result:
        print("Document Sentiment: {}".format(document.sentiment))
        print("Overall scores: positive={0:.2f}; neutral={1:.2f}; negative={2:.2f} \n".format(
            document.confidence_scores.positive,
            document.confidence_scores.neutral,
            document.confidence_scores.negative,
        ))
        for sentence in document.sentences:
            print("Sentence: {}".format(sentence.text))
            print("Sentence sentiment: {}".format(sentence.sentiment))
            print("Sentence score:\nPositive={0:.2f}\nNeutral={1:.2f}\nNegative={2:.2f}\n".format(
                sentence.confidence_scores.positive,
                sentence.confidence_scores.neutral,
                sentence.confidence_scores.negative,
            ))
            for mined_opinion in sentence.mined_opinions:
                target = mined_opinion.target
                print("......'{}' target '{}'".format(target.sentiment, target.text))
                print("......Target score:\n......Positive={0:.2f}\n......Negative={1:.2f}\n".format(
                    target.confidence_scores.positive,
                    target.confidence_scores.negative,
                ))
                for assessment in mined_opinion.assessments:
                    print("......'{}' assessment '{}'".format(assessment.sentiment, assessment.text))
                    print("......Assessment score:\n......Positive={0:.2f}\n......Negative={1:.2f}\n".format(
                        assessment.confidence_scores.positive,
                        assessment.confidence_scores.negative,
                    ))
            print("\n")
        print("\n")
          
sentiment_analysis_with_opinion_mining_example(client)

Output

Document Sentiment: positive
Overall scores: positive=1.00; neutral=0.00; negative=0.00 

Sentence: I had the best day of my life.
Sentence 1 sentiment: positive
Sentence score:
Positive=1.00
Neutral=0.00
Negative=0.00

Sentence: I wish you were there with me.
Sentence 2 sentiment: neutral
Sentence score:
Positive=0.21
Neutral=0.77
Negative=0.02

Document Sentiment: positive
Overall scores: positive=0.84; neutral=0.00; negative=0.16

Sentence: The food and service were unacceptable, but the concierge were nice
Sentence sentiment: positive
Sentence score:
Positive=0.84
Neutral=0.00
Negative=0.16

......'negative' target 'food'
......Target score:
......Positive=0.01
......Negative=0.99

......'negative' assessment 'unacceptable'
......Assessment score:
......Positive=0.01
......Negative=0.99

......'negative' target 'service'
......Target score:
......Positive=0.01
......Negative=0.99

......'negative' assessment 'unacceptable'
......Assessment score:
......Positive=0.01
......Negative=0.99

......'positive' target 'concierge'
......Target score:
......Positive=1.00
......Negative=0.00

......'positive' assessment 'nice'
......Assessment score:
......Positive=1.00
......Negative=0.00

Dokumentasi rujukan

Gunakan mulai cepat ini untuk mengirim permintaan analisis sentimen menggunakan REST API. Dalam contoh berikut, Anda akan menggunakan cURL untuk mengidentifikasi sentimen yang dinyatakan dalam sampel teks, serta melakukan analisis sentimen berbasis aspek.

Prasyarat

  • Versi cURL saat ini.
  • Setelah Anda memiliki langganan Azure, buat sumber daya Bahasa di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Setelah disebarkan, klik Buka sumber daya.
    • Anda akan memerlukan kunci dan titik akhir dari referensi yang Anda buat untuk menyambungkan aplikasi Anda ke API. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
    • Anda dapat menggunakan tingkat harga gratis (Free F0) untuk mencoba layanan, dan kemudian meningkatkannya ke tingkat berbayar untuk produksi.

Catatan

  • Contoh BASH berikut menggunakan \ karakter kelanjutan baris. Jika konsol atau terminal Anda menggunakan karakter kelanjutan baris yang berbeda, silakan gunakan karakter tersebut.
  • Anda dapat menemukan sampel spesifik bahasa di GitHub.
  • Buka portal Microsoft Azure, lalu cari kunci dan titik akhir untuk Sumber daya bahasa yang Anda buat di prasyarat. Kunci dan titik akhir berada di halaman kunci dan titik akhir sumber daya, di bagian manajemen sumber daya. Kemudian ganti string di dalam kode berikut dengan kunci dan titik akhir Anda. Untuk memanggil API, Anda memerlukan informasi berikut:
parameter Deskripsi
-X POST <endpoint> Menentukan titik akhir Anda untuk mengakses API.
-H Content-Type: application/json Jenis konten untuk mengirim data JSON.
-H "Ocp-Apim-Subscription-Key:<key> Menentukan kunci untuk mengakses API.
-d <documents> JSON berisi dokumen yang ingin Anda kirim.

Perintah cURL berikut dijalankan dari shell BASH. Edit perintah berikut ini dengan nama sumber daya, kunci sumber daya, dan nilai JSON milik Anda.

Analisis sentimen dan penggalian opini

  1. Salin perintah ke editor teks.
  2. JIka diperlukan, buat perubahan berikut dalam perintah:
    1. Ganti nilai <your-text-analytics-key-here> dengan kunci Anda.
    2. Ganti bagian pertama URL permintaan (<your-text-analytics-endpoint-here>) dengan URL titik akhir Anda sendiri.
  3. Buka jendela wantian perintah.
  4. Tempelkan perintah dari editor teks ke jendela perintah, lalu jalankan perintah.

Catatan

Contoh di bawah ini mencakup permintaan untuk fitur Penggalian Opini dari Analisis Sentimen menggunakan parameter opinionMining=true, yang memberikan informasi terperinci tentang penilaian (kata sifat) yang terkait dengan target (kata benda) dalam teks.

curl -i -X POST <your-language-resource-endpoint>/language/:analyze-text?api-version=2022-05-01 \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>" \
-d \
'
{
    "kind": "SentimentAnalysis",
    "parameters": {
        "modelVersion": "latest",
        "opinionMining": "True"
    },
    "analysisInput":{
        "documents":[
            {
                "id":"1",
                "language":"en",
                "text": "The customer service here is really good."
            }
        ]
    }
}
'

Respons JSON

{
	"kind": "SentimentAnalysisResults",
	"results": {
		"documents": [{
			"id": "1",
			"sentiment": "positive",
			"confidenceScores": {
				"positive": 1.0,
				"neutral": 0.0,
				"negative": 0.0
			},
			"sentences": [{
				"sentiment": "positive",
				"confidenceScores": {
					"positive": 1.0,
					"neutral": 0.0,
					"negative": 0.0
				},
				"offset": 0,
				"length": 41,
				"text": "The customer service here is really good.",
				"targets": [{
					"sentiment": "positive",
					"confidenceScores": {
						"positive": 1.0,
						"negative": 0.0
					},
					"offset": 4,
					"length": 16,
					"text": "customer service",
					"relations": [{
						"relationType": "assessment",
						"ref": "#/documents/0/sentences/0/assessments/0"
					}]
				}],
				"assessments": [{
					"sentiment": "positive",
					"confidenceScores": {
						"positive": 1.0,
						"negative": 0.0
					},
					"offset": 36,
					"length": 4,
					"text": "good",
					"isNegated": false
				}]
			}],
			"warnings": []
		}],
		"errors": [],
		"modelVersion": "2021-10-01"
	}
}

Membersihkan sumber daya

Jika ingin membersihkan dan menghapus langganan Cognitive Services, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya.

Langkah berikutnya