はじめに
- AWSを利用してのテキスト分析が何か出来ないか?と思い、調べていたところ、Amazon Comprehendの存在を知りました。
- POSTリクエストで「特定の文書」を送ると、文書内の感情分析を行うAPIを作成してみた記事です。
- とりあえずAPIを作って動かしてみたい方向けです。
感情分析とは?
- Amazon Comprehendではドキュメントの感情を4つの値から判断します。
- 「Positive(肯定的)」「Negative(否定的)」「Mixed(混合)」「Neutral(ニュートラル)」の4つの値が結果として返ってきます。
例えばAmazon Comprehendのコンソール上からInput textに適当な値を入れて「Analyze」を押すと、
少し文言を変えてみると、Positive
の信頼度の数値が増えていることが分かります。
Comprehend全般についてはこちらの記事がとても参考になりました。
早速APIを作成してみる
Comprehendの感情分析の大まかな内容が分かりましたので、早速Lambda関数を作成していきます。
今回は名前通りEmotionalAnalysisAPIと名付けました。
新規ロールEmotionalAnalysisAPIRole
を作成します。
関数作成後、ロールにComprehendFullAccess
ポリシーをアタッチします。
以下のコードを記載します。
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)
画面右側がAPIの返却値です。先程のコンソールでの操作と同様に、文書内の感情分析の結果をJSON形式で返却してくれます。
※VSCodeの拡張機能REST Client
でAPIの動作確認をしています。
参考文献
https://docs.aws.amazon.com/ja_jp/comprehend/latest/dg/API_DetectSentiment.html