クイックスタート: 感情分析とオピニオン マイニング

リファレンス ドキュメント | その他のサンプル | パッケージ (NuGet) | ライブラリのソース コード

このクイック スタートを使用して、.NET用クライアント ライブラリを使用して感情分析アプリケーションを作成します。 次の例では、テキスト メッセージ サンプルで表現されたセンチメントを識別し、アスペクトベースの感情分析を実行できる C# アプリケーションを作成します。

前提条件

設定

Azure リソースを作成する

以下のコード サンプルを使用するには、Azure リソースをデプロイする必要があります。 このリソースには、言語サービスに送信する API 呼び出しを認証するために使用するキーとエンドポイントが含まれます。

  1. Azure portal を使用して言語リソースを作成するには、次のリンクを使用します。 Azure サブスクリプションを使用してサインインする必要があります。

  2. 表示される [追加機能を選択する] スクリーンで、[続行] を選択 してリソースを作成します

    Azure portal の追加機能オプションを示すスクリーンショット。

  3. [言語の作成] スクリーンで、次の情報を入力します。

    詳細 説明
    サブスクリプション リソースが関連付けられるサブスクリプション アカウント。 ドロップダウン メニューから Azure サブスクリプションを選択します。
    リソース グループ リソース グループは、作成したリソースを保存するコンテナーです。 [新規作成] を選んで、新しいリソース グループを作成します。
    リージョン 言語リソースの場所。 別のリージョンを選択すると、物理的な場所によっては待機時間が生じる可能性がありますが、リソースのランタイムの可用性には影響しません。 このクイック スタートでは、近くの利用可能なリージョンを選択するか、米国東部を選択します。
    名前 言語リソースの名前。 この名前は、アプリケーションが API 要求の送信に使用するエンドポイント URL の作成にも使用されます。
    価格レベル 言語リソースの価格レベルFree F0 レベルを使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

    Azure portal でのリソースの作成の詳細を示すスクリーンショット。

  4. [責任ある AI の通知] チェックボックスがオンになっていることを確認します。

  5. ページの下部にある [確認および作成] を選択します。

  6. 表示されるスクリーンで、検証に合格し、情報を正しく入力したことを確認します。 [作成] を選択します。

キーとエンドポイントを取得する

次に、アプリケーションを API に接続するには、リソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。

  1. 言語リソースが正常にデプロイされたら、[次の手順][リソースに移動] ボタンをクリックします。

    リソースがデプロイされた後の次の手順を示すスクリーンショット。

  2. リソースのスクリーンで、左側のナビゲーション メニューの [キーとエンドポイント] を選択します。 以下の手順では、キーの 1 つとエンドポイントを使用します。

    リソースのキーとエンドポイント セクションを示すスクリーンショット。

環境変数を作成する

API 要求を送信するには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。

ヒント

キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、Azure AI サービスのセキュリティに関する記事を参照してください。

言語リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  1. LANGUAGE_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  2. LANGUAGE_ENDPOINT 環境変数を設定するには、your-endpoint をリソースのエンドポイントに置き換えます。
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Note

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

新しい .NET Core アプリを作成する

Visual Studio IDE を使用して新しい .NET Core コンソール アプリを作成します。 1 つの C# ソース ファイル (program.cs) を含んだ "Hello World" プロジェクトを作成します。

ソリューション エクスプローラーでソリューションを右クリックし、 [NuGet パッケージの管理] を選択して、クライアント ライブラリをインストールします。 パッケージ マネージャーが開いたら、 [参照] を選択して Azure.AI.TextAnalytics を検索します。 バージョン 5.2.0 を選択し、 [インストール] を選択します。 パッケージ マネージャー コンソールを使用してもかまいません。

コードの例

次のコードを program.cs ファイルにコピーし、コードを実行します。

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

namespace Example
{
    class Program
    {
        // This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
        static string languageKey = Environment.GetEnvironmentVariable("LANGUAGE_KEY");
        static string languageEndpoint = Environment.GetEnvironmentVariable("LANGUAGE_ENDPOINT");

        private static readonly AzureKeyCredential credentials = new AzureKeyCredential(languageKey);
        private static readonly Uri endpoint = new Uri(languageEndpoint);

        // Example method for detecting opinions text. 
        static void SentimentAnalysisWithOpinionMiningExample(TextAnalyticsClient client)
        {
            var documents = new List<string>
            {
                "The food and service were unacceptable. The concierge was nice, however."
            };

            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);
            SentimentAnalysisWithOpinionMiningExample(client);

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

    }
}

出力

Document sentiment: Mixed

    Positive score: 0.47
    Negative score: 0.52
    Neutral score: 0.00

    Text: "The food and service were unacceptable. "
    Sentence sentiment: Negative
    Sentence positive score: 0.00
    Sentence negative score: 0.99
    Sentence neutral score: 0.00

    Target: food, Value: Negative
    Target positive score: 0.00
    Target negative score: 1.00
            Related Assessment: unacceptable, Value: Negative
            Related Assessment positive score: 0.00
            Related Assessment negative score: 1.00
    Target: service, Value: Negative
    Target positive score: 0.00
    Target negative score: 1.00
            Related Assessment: unacceptable, Value: Negative
            Related Assessment positive score: 0.00
            Related Assessment negative score: 1.00
    Text: "The concierge was nice, however."
    Sentence sentiment: Positive
    Sentence positive score: 0.94
    Sentence negative score: 0.05
    Sentence neutral score: 0.01

    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

リソースをクリーンアップする

Azure AI サービス サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のコマンドを使用して、このクイックスタート用に作成した環境変数を削除します。

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

次の手順

リファレンス                 ドキュメント | その他の             サンプル | パッケージ (Maven) | ライブラリのソース コード

このクイック スタートを使用して、Java用クライアント ライブラリを使用して言語検出アプリケーションを作成します。 次の例では、テキスト メッセージ サンプルで表現されたセンチメントを識別し、アスペクトベースの感情分析を実行できる Javaアプリケーションを作成します。

前提条件

設定

Azure リソースを作成する

以下のコード サンプルを使用するには、Azure リソースをデプロイする必要があります。 このリソースには、言語サービスに送信する API 呼び出しを認証するために使用するキーとエンドポイントが含まれます。

  1. Azure portal を使用して言語リソースを作成するには、次のリンクを使用します。 Azure サブスクリプションを使用してサインインする必要があります。

  2. 表示される [追加機能を選択する] スクリーンで、[続行] を選択 してリソースを作成します

    Azure portal の追加機能オプションを示すスクリーンショット。

  3. [言語の作成] スクリーンで、次の情報を入力します。

    詳細 説明
    サブスクリプション リソースが関連付けられるサブスクリプション アカウント。 ドロップダウン メニューから Azure サブスクリプションを選択します。
    リソース グループ リソース グループは、作成したリソースを保存するコンテナーです。 [新規作成] を選んで、新しいリソース グループを作成します。
    リージョン 言語リソースの場所。 別のリージョンを選択すると、物理的な場所によっては待機時間が生じる可能性がありますが、リソースのランタイムの可用性には影響しません。 このクイック スタートでは、近くの利用可能なリージョンを選択するか、米国東部を選択します。
    名前 言語リソースの名前。 この名前は、アプリケーションが API 要求の送信に使用するエンドポイント URL の作成にも使用されます。
    価格レベル 言語リソースの価格レベルFree F0 レベルを使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

    Azure portal でのリソースの作成の詳細を示すスクリーンショット。

  4. [責任ある AI の通知] チェックボックスがオンになっていることを確認します。

  5. ページの下部にある [確認および作成] を選択します。

  6. 表示されるスクリーンで、検証に合格し、情報を正しく入力したことを確認します。 [作成] を選択します。

キーとエンドポイントを取得する

次に、アプリケーションを API に接続するには、リソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。

  1. 言語リソースが正常にデプロイされたら、[次の手順][リソースに移動] ボタンをクリックします。

    リソースがデプロイされた後の次の手順を示すスクリーンショット。

  2. リソースのスクリーンで、左側のナビゲーション メニューの [キーとエンドポイント] を選択します。 以下の手順では、キーの 1 つとエンドポイントを使用します。

    リソースのキーとエンドポイント セクションを示すスクリーンショット。

環境変数を作成する

API 要求を送信するには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。

ヒント

キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、Azure AI サービスのセキュリティに関する記事を参照してください。

言語リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  1. LANGUAGE_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  2. LANGUAGE_ENDPOINT 環境変数を設定するには、your-endpoint をリソースのエンドポイントに置き換えます。
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Note

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

クライアント ライブラリを追加する

好みの IDE または開発環境で Maven プロジェクトを作成します。 次に、自分のプロジェクトの pom.xml ファイルに次の依存関係を追加します。 その他のビルド ツールの実装構文はオンラインで確認できます。

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

コードの例

Example.java という名前で Java ファイルを作成します。 ファイルを開き、下のコードをコピーします。 次にコードを実行します。

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 {
    
    // This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
    private static String languageKey = System.getenv("LANGUAGE_KEY");
    private static String languageEndpoint = System.getenv("LANGUAGE_ENDPOINT");

    public static void main(String[] args) {
        TextAnalyticsClient client = authenticateClient(languageKey, languageEndpoint);
        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 detecting sentiment and opinions in text.
    static void sentimentAnalysisWithOpinionMiningExample(TextAnalyticsClient client)
    {
        // The document that needs be analyzed.
        String document = "The food and service were unacceptable. The concierge was nice, however.";

        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());
                }
            });
        });
    }
}

出力

Document = The food and service were unacceptable. The concierge was nice, however.
Recognized document sentiment: mixed, positive score: 0.470000, neutral score: 0.000000, negative score: 0.520000.
	Sentence sentiment: negative, positive score: 0.000000, neutral score: 0.000000, negative score: 0.990000.
		Target sentiment: negative, target text: food
			'negative' assessment sentiment because of "unacceptable". Is the assessment negated: false.
		Target sentiment: negative, target text: service
			'negative' assessment sentiment because of "unacceptable". Is the assessment negated: false.
	Sentence sentiment: positive, positive score: 0.940000, neutral score: 0.010000, negative score: 0.050000.
		Target sentiment: positive, target text: concierge
			'positive' assessment sentiment because of "nice". Is the assessment negated: false.

リソースをクリーンアップする

Azure AI サービス サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のコマンドを使用して、このクイックスタート用に作成した環境変数を削除します。

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

次の手順

リファレンス                 ドキュメント | その他の             サンプル | パッケージ (npm) | ライブラリのソース コード

このクイック スタートを使用して、Node.js用クライアント ライブラリを使用して言語検出アプリケーションを作成します。 次の例では、テキスト メッセージ サンプルで表現されたセンチメントを識別し、アスペクトベースの感情分析を実行できる Python アプリケーションを作成します。

前提条件

設定

Azure リソースを作成する

以下のコード サンプルを使用するには、Azure リソースをデプロイする必要があります。 このリソースには、言語サービスに送信する API 呼び出しを認証するために使用するキーとエンドポイントが含まれます。

  1. Azure portal を使用して言語リソースを作成するには、次のリンクを使用します。 Azure サブスクリプションを使用してサインインする必要があります。

  2. 表示される [追加機能を選択する] スクリーンで、[続行] を選択 してリソースを作成します

    Azure portal の追加機能オプションを示すスクリーンショット。

  3. [言語の作成] スクリーンで、次の情報を入力します。

    詳細 説明
    サブスクリプション リソースが関連付けられるサブスクリプション アカウント。 ドロップダウン メニューから Azure サブスクリプションを選択します。
    リソース グループ リソース グループは、作成したリソースを保存するコンテナーです。 [新規作成] を選んで、新しいリソース グループを作成します。
    リージョン 言語リソースの場所。 別のリージョンを選択すると、物理的な場所によっては待機時間が生じる可能性がありますが、リソースのランタイムの可用性には影響しません。 このクイック スタートでは、近くの利用可能なリージョンを選択するか、米国東部を選択します。
    名前 言語リソースの名前。 この名前は、アプリケーションが API 要求の送信に使用するエンドポイント URL の作成にも使用されます。
    価格レベル 言語リソースの価格レベルFree F0 レベルを使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

    Azure portal でのリソースの作成の詳細を示すスクリーンショット。

  4. [責任ある AI の通知] チェックボックスがオンになっていることを確認します。

  5. ページの下部にある [確認および作成] を選択します。

  6. 表示されるスクリーンで、検証に合格し、情報を正しく入力したことを確認します。 [作成] を選択します。

キーとエンドポイントを取得する

次に、アプリケーションを API に接続するには、リソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。

  1. 言語リソースが正常にデプロイされたら、[次の手順][リソースに移動] ボタンをクリックします。

    リソースがデプロイされた後の次の手順を示すスクリーンショット。

  2. リソースのスクリーンで、左側のナビゲーション メニューの [キーとエンドポイント] を選択します。 以下の手順では、キーの 1 つとエンドポイントを使用します。

    リソースのキーとエンドポイント セクションを示すスクリーンショット。

環境変数を作成する

API 要求を送信するには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。

ヒント

キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、Azure AI サービスのセキュリティに関する記事を参照してください。

言語リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  1. LANGUAGE_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  2. LANGUAGE_ENDPOINT 環境変数を設定するには、your-endpoint をリソースのエンドポイントに置き換えます。
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Note

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

新しい Node.js アプリケーションを作成する

コンソール ウィンドウ (cmd、PowerShell、Bash など) で、ご利用のアプリ用に新しいディレクトリを作成し、そこに移動します。

mkdir myapp 

cd myapp

npm init コマンドを実行し、package.json ファイルを使用して node アプリケーションを作成します。

npm init

クライアント ライブラリをインストールする

npmパッケージをインストールします:

npm install @azure/ai-language-text

コードの例

ファイルを開き、下のコードをコピーします。 次にコードを実行します。

"use strict";

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

// This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
const key = process.env.LANGUAGE_KEY;
const endpoint = process.env.LANGUAGE_ENDPOINT;


//an example document for sentiment analysis and opinion mining
const documents = [{
    text: "The food and service were unacceptable. The concierge was nice, however.",
    id: "0",
    language: "en"
  }];
  
async function main() {
  console.log("=== Sentiment analysis and opinion mining sample ===");

  const client = new TextAnalysisClient(endpoint, new AzureKeyCredential(key));

  const results = await client.analyze("SentimentAnalysis", documents, {
    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: ${documents[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}`);
    }
  }
}
  
main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

出力

=== Sentiment analysis and opinion mining sample ===
- Document 0
    Document text: The food and service were unacceptable. The concierge was nice, however.
    Overall Sentiment: mixed
    Sentiment confidence scores: { positive: 0.49, neutral: 0, negative: 0.5 }
    Sentences
    - Sentence sentiment: negative
      Confidence scores: { positive: 0, neutral: 0, negative: 1 }
      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
    - Sentence sentiment: positive
      Confidence scores: { positive: 0.98, neutral: 0.01, negative: 0.01 }
      Mined opinions
            - Target text: concierge
              Target sentiment: positive
              Target confidence scores: { positive: 1, negative: 0 }
              Target assessments
                    - Text: nice
                      Sentiment: positive

リソースをクリーンアップする

Azure AI サービス サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のコマンドを使用して、このクイックスタート用に作成した環境変数を削除します。

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

次の手順

リファレンス ドキュメント | その他のサンプル | パッケージ (PyPi) | ライブラリのソース コード

このクイック スタートを使用して、Python 用クライアント ライブラリを使用して言語検出アプリケーションを作成します。 次の例では、テキスト メッセージ サンプルで表現されたセンチメントを識別し、アスペクトベースの感情分析を実行できる Python アプリケーションを作成します。

前提条件

設定

Azure リソースを作成する

以下のコード サンプルを使用するには、Azure リソースをデプロイする必要があります。 このリソースには、言語サービスに送信する API 呼び出しを認証するために使用するキーとエンドポイントが含まれます。

  1. Azure portal を使用して言語リソースを作成するには、次のリンクを使用します。 Azure サブスクリプションを使用してサインインする必要があります。

  2. 表示される [追加機能を選択する] スクリーンで、[続行] を選択 してリソースを作成します

    Azure portal の追加機能オプションを示すスクリーンショット。

  3. [言語の作成] スクリーンで、次の情報を入力します。

    詳細 説明
    サブスクリプション リソースが関連付けられるサブスクリプション アカウント。 ドロップダウン メニューから Azure サブスクリプションを選択します。
    リソース グループ リソース グループは、作成したリソースを保存するコンテナーです。 [新規作成] を選んで、新しいリソース グループを作成します。
    リージョン 言語リソースの場所。 別のリージョンを選択すると、物理的な場所によっては待機時間が生じる可能性がありますが、リソースのランタイムの可用性には影響しません。 このクイック スタートでは、近くの利用可能なリージョンを選択するか、米国東部を選択します。
    名前 言語リソースの名前。 この名前は、アプリケーションが API 要求の送信に使用するエンドポイント URL の作成にも使用されます。
    価格レベル 言語リソースの価格レベルFree F0 レベルを使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

    Azure portal でのリソースの作成の詳細を示すスクリーンショット。

  4. [責任ある AI の通知] チェックボックスがオンになっていることを確認します。

  5. ページの下部にある [確認および作成] を選択します。

  6. 表示されるスクリーンで、検証に合格し、情報を正しく入力したことを確認します。 [作成] を選択します。

キーとエンドポイントを取得する

次に、アプリケーションを API に接続するには、リソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。

  1. 言語リソースが正常にデプロイされたら、[次の手順][リソースに移動] ボタンをクリックします。

    リソースがデプロイされた後の次の手順を示すスクリーンショット。

  2. リソースのスクリーンで、左側のナビゲーション メニューの [キーとエンドポイント] を選択します。 以下の手順では、キーの 1 つとエンドポイントを使用します。

    リソースのキーとエンドポイント セクションを示すスクリーンショット。

環境変数を作成する

API 要求を送信するには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。

ヒント

キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、Azure AI サービスのセキュリティに関する記事を参照してください。

言語リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  1. LANGUAGE_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  2. LANGUAGE_ENDPOINT 環境変数を設定するには、your-endpoint をリソースのエンドポイントに置き換えます。
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Note

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

クライアント ライブラリをインストールする

Python をインストールしたら、次を使用してクライアント ライブラリをインストールすることができます。

pip install azure-ai-textanalytics==5.2.0

コードの例

新しい Python ファイルを作成し、下のコードをコピーします。 次に、コードを実行します

# This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
language_key = os.environ.get('LANGUAGE_KEY')
language_endpoint = os.environ.get('LANGUAGE_ENDPOINT')

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(language_key)
    text_analytics_client = TextAnalyticsClient(
            endpoint=language_endpoint, 
            credential=ta_credential)
    return text_analytics_client

client = authenticate_client()

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

    documents = [
        "The food and service were unacceptable. The concierge was nice, however."
    ]

    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)

出力

Document Sentiment: mixed
Overall scores: positive=0.47; neutral=0.00; negative=0.52

Sentence: The food and service were unacceptable.
Sentence sentiment: negative
Sentence score:
Positive=0.00
Neutral=0.00
Negative=0.99

......'negative' target 'food'
......Target score:
......Positive=0.00
......Negative=1.00

......'negative' assessment 'unacceptable'
......Assessment score:
......Positive=0.00
......Negative=1.00

......'negative' target 'service'
......Target score:
......Positive=0.00
......Negative=1.00

......'negative' assessment 'unacceptable'
......Assessment score:
......Positive=0.00
......Negative=1.00



Sentence: The concierge was nice, however.
Sentence sentiment: positive
Sentence score:
Positive=0.94
Neutral=0.01
Negative=0.05

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

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

リソースをクリーンアップする

Azure AI サービス サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のコマンドを使用して、このクイックスタート用に作成した環境変数を削除します。

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

次の手順

リファレンス ドキュメント

REST API を使用して感情分析要求を送信するには、このクイック スタートを使用します。 次の例では、cURL を使用してテキスト メッセージサンプルで表現されたセンチメントを識別し、アスペクトベースの感情分析を実行します。

前提条件

設定

Azure リソースを作成する

以下のコード サンプルを使用するには、Azure リソースをデプロイする必要があります。 このリソースには、言語サービスに送信する API 呼び出しを認証するために使用するキーとエンドポイントが含まれます。

  1. Azure portal を使用して言語リソースを作成するには、次のリンクを使用します。 Azure サブスクリプションを使用してサインインする必要があります。

  2. 表示される [追加機能を選択する] スクリーンで、[続行] を選択 してリソースを作成します

    Azure portal の追加機能オプションを示すスクリーンショット。

  3. [言語の作成] スクリーンで、次の情報を入力します。

    詳細 説明
    サブスクリプション リソースが関連付けられるサブスクリプション アカウント。 ドロップダウン メニューから Azure サブスクリプションを選択します。
    リソース グループ リソース グループは、作成したリソースを保存するコンテナーです。 [新規作成] を選んで、新しいリソース グループを作成します。
    リージョン 言語リソースの場所。 別のリージョンを選択すると、物理的な場所によっては待機時間が生じる可能性がありますが、リソースのランタイムの可用性には影響しません。 このクイック スタートでは、近くの利用可能なリージョンを選択するか、米国東部を選択します。
    名前 言語リソースの名前。 この名前は、アプリケーションが API 要求の送信に使用するエンドポイント URL の作成にも使用されます。
    価格レベル 言語リソースの価格レベルFree F0 レベルを使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

    Azure portal でのリソースの作成の詳細を示すスクリーンショット。

  4. [責任ある AI の通知] チェックボックスがオンになっていることを確認します。

  5. ページの下部にある [確認および作成] を選択します。

  6. 表示されるスクリーンで、検証に合格し、情報を正しく入力したことを確認します。 [作成] を選択します。

キーとエンドポイントを取得する

次に、アプリケーションを API に接続するには、リソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。

  1. 言語リソースが正常にデプロイされたら、[次の手順][リソースに移動] ボタンをクリックします。

    リソースがデプロイされた後の次の手順を示すスクリーンショット。

  2. リソースのスクリーンで、左側のナビゲーション メニューの [キーとエンドポイント] を選択します。 以下の手順では、キーの 1 つとエンドポイントを使用します。

    リソースのキーとエンドポイント セクションを示すスクリーンショット。

環境変数を作成する

API 要求を送信するには、アプリケーションを認証する必要があります。 運用環境では、資格情報を安全に保存してアクセスできる方法を使用してください。 この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。

ヒント

キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、Azure AI サービスのセキュリティに関する記事を参照してください。

言語リソース キーの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  1. LANGUAGE_KEY 環境変数を設定するには、your-key をリソースのキーの 1 つに置き換えます。
  2. LANGUAGE_ENDPOINT 環境変数を設定するには、your-endpoint をリソースのエンドポイントに置き換えます。
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Note

現在実行中のコンソールで環境変数のみにアクセスする必要がある場合は、環境変数を setx の代わりに set に設定できます。

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

要求本文の例を使用して JSON ファイルを作成する

コード エディターで、test_sentiment_payload.json という名前の新しいファイルを作成し、次の JSON の例をコピーします。 この例の要求は、次の手順で API に送信されます。

{
	"kind": "SentimentAnalysis",
	"parameters": {
		"modelVersion": "latest",
		"opinionMining": "True"
	},
	"analysisInput":{
		"documents":[
			{
				"id":"1",
				"language":"en",
				"text": "The food and service were unacceptable. The concierge was nice, however."
			}
		]
	}
} 

test_sentiment_payload.json をコンピューターの任意の場所に保存します。 たとえば、デスクトップなどです。

感情分析とオピニオン マイニング API 要求を送信する

注意

下の例には、感情分析のオピニオン マイニング機能に対する要求が含まれています。これにより、テキスト内の対象 (名詞) に関連した評価 (形容詞) に関する詳細な情報が提供されます。

現在使用しているプログラムを使用して API 要求を送信するには、次のコマンドを使用します。 コマンドをターミナルにコピーして実行します。

パラメーター Description
-X POST <endpoint> API にアクセスするためのエンドポイントを指定します。
-H Content-Type: application/json JSON データを送信するためのコンテンツ タイプ。
-H "Ocp-Apim-Subscription-Key:<key> API にアクセスするためのキーを指定します。
-d <documents> 送信するドキュメントを含む JSON ファイル。

C:\Users\<myaccount>\Desktop\test_sentiment_payload.json は、前のステップで作成した JSON 要求ファイルの例の場所に置き換えます。

コマンド プロンプト

curl -X POST "%LANGUAGE_ENDPOINT%/language/:analyze-text?api-version=2023-04-15-preview" ^
-H "Content-Type: application/json" ^
-H "Ocp-Apim-Subscription-Key: %LANGUAGE_KEY%" ^
-d "@C:\Users\<myaccount>\Desktop\test_sentiment_payload.json"

PowerShell

curl.exe -X POST $env:LANGUAGE_ENDPOINT/language/:analyze-text?api-version=2023-04-15-preview `
-H "Content-Type: application/json" `
-H "Ocp-Apim-Subscription-Key: $env:LANGUAGE_KEY" `
-d "@C:\Users\<myaccount>\Desktop\test_sentiment_payload.json"

JSON 応答

{
	"kind": "SentimentAnalysisResults",
	"results": {
		"documents": [{
			"id": "1",
			"sentiment": "mixed",
			"confidenceScores": {
				"positive": 0.47,
				"neutral": 0.0,
				"negative": 0.52
			},
			"sentences": [{
				"sentiment": "negative",
				"confidenceScores": {
					"positive": 0.0,
					"neutral": 0.0,
					"negative": 0.99
				},
				"offset": 0,
				"length": 40,
				"text": "The food and service were unacceptable. ",
				"targets": [{
					"sentiment": "negative",
					"confidenceScores": {
						"positive": 0.0,
						"negative": 1.0
					},
					"offset": 4,
					"length": 4,
					"text": "food",
					"relations": [{
						"relationType": "assessment",
						"ref": "#/documents/0/sentences/0/assessments/0"
					}]
				}, {
					"sentiment": "negative",
					"confidenceScores": {
						"positive": 0.0,
						"negative": 1.0
					},
					"offset": 13,
					"length": 7,
					"text": "service",
					"relations": [{
						"relationType": "assessment",
						"ref": "#/documents/0/sentences/0/assessments/0"
					}]
				}],
				"assessments": [{
					"sentiment": "negative",
					"confidenceScores": {
						"positive": 0.0,
						"negative": 1.0
					},
					"offset": 26,
					"length": 12,
					"text": "unacceptable",
					"isNegated": false
				}]
			}, {
				"sentiment": "positive",
				"confidenceScores": {
					"positive": 0.94,
					"neutral": 0.01,
					"negative": 0.05
				},
				"offset": 40,
				"length": 32,
				"text": "The concierge was nice, however.",
				"targets": [{
					"sentiment": "positive",
					"confidenceScores": {
						"positive": 1.0,
						"negative": 0.0
					},
					"offset": 44,
					"length": 9,
					"text": "concierge",
					"relations": [{
						"relationType": "assessment",
						"ref": "#/documents/0/sentences/1/assessments/0"
					}]
				}],
				"assessments": [{
					"sentiment": "positive",
					"confidenceScores": {
						"positive": 1.0,
						"negative": 0.0
					},
					"offset": 58,
					"length": 4,
					"text": "nice",
					"isNegated": false
				}]
			}],
			"warnings": []
		}],
		"errors": [],
		"modelVersion": "2022-06-01"
	}
}

リソースをクリーンアップする

Azure AI サービス サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のコマンドを使用して、このクイックスタート用に作成した環境変数を削除します。

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

次の手順