🎉

【Azure】Cognitive Service for Languageを使って感情分析をやってみた

2022/07/18に公開

Azure Cognitive Service for Languageを使って、自然言語処理/感情分析をやってみたので、備忘も兼ねて記録します。

以下のMicrosoftの公式ドキュメント(英語)を参考にしています。

https://docs.microsoft.com/ja-JP/python/api/overview/azure/ai-textanalytics-readme?view=azure-python-preview&preserve-view=true#extract-key-phrases

前提

Cognitive Serviceのリソースを作成したうえで、APIキー1とエンドポイントを取得しておく必要があります。

パッケージのインストール

pip install azure-ai-textanalytics --pre

準備

# ライブラリんインポート
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

# APIキーとエンドポイントの指定
credential = AzureKeyCredential("こちらにkey1をコピペします")
endpoint="こちらにエンドポイントをコピペします"

# インスタンス化
text_analytics_client = TextAnalyticsClient(endpoint, credential)

感情分析の実行

documents = [
    "「あぁ、しあわせ。」一番搾りを飲んだ方たちから、続々とうれしいの声があふれてきています",
    "東京都は18日、新型コロナウイルスの感染者を都内で新たに1万2696人確認したと発表した。",
    "インドが世界経済の先導役になると期待される一方、中国は人口減少が国力衰退に直結しかねない。"]

response = text_analytics_client.analyze_sentiment(documents, language="ja")
result = [doc for doc in response if not doc.is_error]

for doc in result:
    print(f"Overall sentiment: {doc.sentiment}")
    print(
        f"Scores: positive={doc.confidence_scores.positive}; "
        f"neutral={doc.confidence_scores.neutral}; "
        f"negative={doc.confidence_scores.negative}\n"
    )

出力結果

ちゃんと感情分析できているようです。

おまけ キーフレーズの抽出

入力テキストを決定づけるキーフレーズの抽出も簡単に実装できます。
さきほどと同じ文章で実行してみます。

documents = [
    "「あぁ、しあわせ。」一番搾りを飲んだ方たちから、続々とうれしいの声があふれてきています",
    "東京都は18日、新型コロナウイルスの感染者を都内で新たに1万2696人確認したと発表した。",
    "インドが世界経済の先導役になると期待される一方、中国は人口減少が国力衰退に直結しかねない。",
]

response = text_analytics_client.extract_key_phrases(documents, language="ja")
result = [doc for doc in response if not doc.is_error]

for doc in result:
    print(doc.key_phrases)

出力結果

最初の文章はイマイチですが、それ以外はちゃんとできているようです。

さいごに

Azureには自然言語処理をUI(ノーコード)でできるLanguage Studioというサービスもあって、こちらでも同じように試してみたのですが、結果はイマイチでした。
API形式で実装するのが良さそうです。

Discussion