[レポート] MOB314: Amazon Pinpoint & Amazon Comprehendを使ったソーシャルメディアの感情解析 #reinvent

2018.11.27

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に手順が書いていますので、どなたでも試すことができます。

手順

手順が結構多いですが、あまり難しいことはありませんでした。

  1. リポジトリ(aws-samples/mob314-workshop)をclone
  2. リポジトリに移動
  3. node modulesをインストール
  4. amplify configure でIAM Userを作成
  5. amplify init でCloudFormation Stackを構築
  6. Firebaseのプロジェクトを作成、サーバーキーを取得
  7. amplify add notifications でプッシュ通知サービスを追加
  8. amplify push でデプロイ、/src/aws-exports.jsaws_mobile_analytics_app_id を書き換え
  9. こちらのリンクからCloudFormation Stackを作成
  10. Facebook DeveloperでAppを新規作成
  11. /src/App.js<FacebookLogin appId="your_app_id_here" を Facebook App Id に書き換え
  12. /public/firebase-messaging-sw.js/src/push-notification.jsmessagingSenderId: 'your_sender_ID_here' を書き換え
  13. Windowsの場合はnpm scriptsを変更する(set HTTPS=true する)
  14. Facebookアプリの「Facebook Login」を有効にし、Webを選択しSite URLを localhost:3000 に設定する
  15. Facebookアプリの「Webhook」を有効にする
  16. 「Webhook」の設定で「Page」をSucscribeし、Callback URLをCloudFormationのOutputsの apiGatewayInvokeURL を設定しVerify Tokenに ThisIsAToken という文字列を設定する
  17. 一覧から feed をSubscribeする
  18. FacebookアプリのDashboard上部でPublicにする。プライバシーポリシーURLを https://aws.amazon.com/privacy/ に、App Domainを localhost に設定する
  19. オレオレ証明書付きで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の中身を読み解いていきたいと思います。