4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon ComprehendとLambdaを利用した感情分析APIを作成する

Last updated at Posted at 2022-10-10

はじめに

  • AWSを利用してのテキスト分析が何か出来ないか?と思い、調べていたところ、Amazon Comprehendの存在を知りました。
  • POSTリクエストで「特定の文書」を送ると、文書内の感情分析を行うAPIを作成してみた記事です。
  • とりあえずAPIを作って動かしてみたい方向けです。

comprehend-lambda.png

感情分析とは?

  • Amazon Comprehendではドキュメントの感情を4つの値から判断します。
  • 「Positive(肯定的)」「Negative(否定的)」「Mixed(混合)」「Neutral(ニュートラル)」の4つの値が結果として返ってきます。

例えばAmazon Comprehendのコンソール上からInput textに適当な値を入れて「Analyze」を押すと、
image.png

Sentimentとして以下の結果が返ってきます。
image.png

少し文言を変えてみると、Positiveの信頼度の数値が増えていることが分かります。
image.png

Comprehend全般についてはこちらの記事がとても参考になりました。

早速APIを作成してみる

Comprehendの感情分析の大まかな内容が分かりましたので、早速Lambda関数を作成していきます。

今回は名前通りEmotionalAnalysisAPIと名付けました。
image.png

新規ロールEmotionalAnalysisAPIRoleを作成します。
image.png

お試し作成なので認証タイプはNONEとします。
image.png

関数作成後、ロールにComprehendFullAccessポリシーをアタッチします。
image.png

以下のコードを記載します。

import json
import boto3

def lambda_handler(event, context):
    comprehend = boto3.client(service_name='comprehend', region_name='ap-northeast-1')
    data = json.loads(event.get("body"))
    return json.dumps(comprehend.detect_sentiment(Text=data["Text"], LanguageCode='ja'), sort_keys=True, indent=4)

POSTリクエストでエンドポイントに対してAPIコール。
image.png

画面右側がAPIの返却値です。先程のコンソールでの操作と同様に、文書内の感情分析の結果をJSON形式で返却してくれます。

※VSCodeの拡張機能REST ClientでAPIの動作確認をしています。

参考文献

https://docs.aws.amazon.com/ja_jp/comprehend/latest/dg/API_DetectSentiment.html

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/comprehend.html#Comprehend.Client.detect_sentiment

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?