[レポート] MOB314: Amazon Pinpoint & Amazon Comprehendを使ったソーシャルメディアの感情解析 #reinvent
Perform Social Media Sentiment Analysis with Amazon Pinpoint & Amazon Comprehend
本日はre:Invent 2018のワークショップ「Perform Social Media Sentiment Analysis with Amazon Pinpoint & Amazon Comprehend」に参加してきました。
概要は以下の通りです。
In this workshop, we show you how to easily deploy an AWS solution that ingests all Tweets from any Twitter handle, uses Amazon Comprehend to generate a sentiment score, and then automatically engages customers with a dynamic, personalized message. The intended audience is developers and marketers who want to leverage AWS to create powerful user engagement scenarios. We highlight how quickly you can deploy a machine learning marketing solution. We cover Amazon Pinpoint, the AWS user engagement service, and Amazon Comprehend, the AWS natural language processing service that uses artificail intelligence and machine learning to find insights and relationships in text.
このワークショップの成果物
Amazon PinpointとAmazon Comprehendを使って、Facebookのフィード投稿を読み取ってWebプッシュを送るといったサンプルアプリを構築します。
アーキテクチャ
以下のアーキテクチャのサービスを構築します。
- FacebookにログインするWebアプリ
- Facebookのフィード投稿でAPI Gatrwayをフック
- API GatewayからLambdaをInvokeし、Comprehendで内容を解析
- 解析した内容でPinpointのEndpointをアップデート
- デイリーのキャンペーンなどにEndpoint情報を利用してWebプッシュ
ソースコード
本セッションのソースコードは以下よりcloneできます。READMEに手順が書いていますので、どなたでも試すことができます。
手順
手順が結構多いですが、あまり難しいことはありませんでした。
- リポジトリ(aws-samples/mob314-workshop)をclone
- リポジトリに移動
- node modulesをインストール
amplify configure
でIAM Userを作成amplify init
でCloudFormation Stackを構築- Firebaseのプロジェクトを作成、サーバーキーを取得
amplify add notifications
でプッシュ通知サービスを追加amplify push
でデプロイ、/src/aws-exports.js
のaws_mobile_analytics_app_id
を書き換え- こちらのリンクからCloudFormation Stackを作成
- Facebook DeveloperでAppを新規作成
/src/App.js
の<FacebookLogin appId="your_app_id_here"
を Facebook App Id に書き換え/public/firebase-messaging-sw.js
と/src/push-notification.js
のmessagingSenderId: 'your_sender_ID_here'
を書き換え- Windowsの場合はnpm scriptsを変更する(
set HTTPS=true
する) - Facebookアプリの「Facebook Login」を有効にし、Webを選択しSite URLを
localhost:3000
に設定する - Facebookアプリの「Webhook」を有効にする
- 「Webhook」の設定で「Page」をSucscribeし、Callback URLをCloudFormationのOutputsの
apiGatewayInvokeURL
を設定しVerify TokenにThisIsAToken
という文字列を設定する - 一覧から
feed
をSubscribeする - FacebookアプリのDashboard上部でPublicにする。プライバシーポリシーURLを
https://aws.amazon.com/privacy/
に、App Domainをlocalhost
に設定する - オレオレ証明書付きでGoogle Chromeを起動し
yarn start
でローカル起動する
オレオレ証明書付きでGoogle Chromeを起動するには、Macの場合以下のコマンドで可能です。
$ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:3000
動作結果
起動するとこのようなアプリが。ベルがなんとも言えません。
「LOGIN WITH FACEBOOK」でOAuth認証を行います。
あとはFacebookでフィードを投稿すると、WebhookでAPI Gatewayが呼ばれ、Webプッシュが届きます。
まとめ
CloudFormation Templateが作り込まれていたので簡単に試すことができました。別途、CloudFormation Templateの中身を読み解いていきたいと思います。