サービスを運営するときにSNSなどの投稿の感情分析(ネガティブ・ポジティブ)ができれば便利だなと思うのですが、コードが書けない人間からすると実現は難しいかなぁと…。
以前、「Twitterのポジティブな内容のツイートをslackに通知する」というLogic Flowを作成したことがありますが、このときは顔文字を判定してネガティブかポジティブを判定しました。
これは顔文字が入っていないツイートは対象外なので「投稿した文章の感情分析をやる方法」でいい方法ないかな?とLogic Appsを眺めていたらCognitive Services Text Analyticsコネクターがあるのを思い出し。
今回はCognitive Services Text Analytics(センチメント)を使い、ノンコーディングでツイート内容の感情分析して、一覧をGoogleスプレッドシートに書き出すLogic Flowを作成してみました。
今回やること
図解するとこのような感じ。
現時点では「Cognitive Services Text Analytics」は日本語に対応していません。(この部分は後述します)
なのでCognitive Services Text Analytics(センチメント)は使えないかなと思ったんですけど、Microsoft Translatorコネクターで翻訳すればいけるのでは?と思って試してみたらそこそこうまくいきました。
Googleスプレッドシートを新規作成
今回は、事前にこのような項目のGoogleスプレッドシートを新規作成しておきます。
新規でCognitive Services accountを作成
まずは感情分析を行う「Cognitive Services」の準備をします。
Azureポータル画面の左側の「+」クリック → 「Intelligence + analytics」をクリック → 「Cognitive Services」をクリック。
赤枠内に入力していきます。
API typeは「Text Analytics API」を選択。現時点ではリージョンは「米国西部」のみになっています。
また、1リージョン1つまでFreeが作れるようなので、今回はFreeを選びました。
デプロイが完了したらメニューから「Key」をクリックし、「ACCOUNT NAME」と「KEY1」の情報を控えておきます。
これはLogic Appsで呼び出すときに利用します。
ここまでで「Cognitive Services」の準備はおしまい!
Logic Appsを作成する
全体のLogic Flowはこんな感じ。今回もリージョンは「米国中北部」で作成しました。
トリガーの作成
今回はText AnalyticsコネクターとMicrosoft Translatorコネクターの動作を確認したかったため、日本語以外の言語も投稿されているハッシュタグ(#logicapp)を検索する、というLogic Flowを作成しています。
トリガー部分は特定の言葉を含むツイートが投稿されるたびに実行したい場合は「新しいツイートが投稿されたら」を使ってください。
ツイート内容の言語を検出する
現時点では「Cognitive Services Text Analytics」は日本語に対応していません。
ですので、日本語のみ翻訳する準備として、ツイート内容をMicrosoft Translatorコネクターの「言語の検出」を使って「言語コードがja(日本語)か?」を判定させています。
■「はい」の場合
「言語コードがja」なので、英語に翻訳します。
赤枠内はこのような内容を入力していきます。
またカテゴリには「generalnn」と入力。これでニューラル ネットワークを利用できるようになるとのこと。
https://blogs.technet.microsoft.com/microsoft_japan_corporate_blog/2016/11/24/161124-microsoft-translator/
「Text」と検索してText Analyticsコネクターを選びます。
「Text Analytics – Detect Sentiment」を選択。
先程控えておいた「ACCOUNT NAME」と「KEY1」を入力。
赤枠部分に「翻訳されたテキスト」を選択。(英語に翻訳されたツイート文が入る)
■「いいえ」の場合
言語コードが日本語以外なので翻訳せず、ツイート内容をそのまま使います。
結果をGoogleスプレッドシートに書き出す
作成しておいたGoogleスプレッドシートに接続します。
入力する内容は赤枠内を参考にされてください。
スコアの部分が2つありますが、これは「日本語のツイート(翻訳あり)」、「その他言語のツイート(翻訳なし)」を区別しているためです。
以上でLogic Flowも完成!
実行結果
実行結果を見てみます。
数値についてですが「指定されたテキストについて主観的な意見を識別し抽出するために0と1の間のスコアを返す。0にもっとも近い数字は負の感情、1にもっとも近い数字は正の感情を示す」とのこと。
赤枠内(私がツイート)がキチンと翻訳されて感情分析の結果が出力されました。
ホントに日本語に対応してないの?
本当に対応していないのか試してみました。
ハッシュタグだけの文章と日本語ツイート文が同じ数値。(ちょうど平均値くらい?)日本語が対応していないのだな…とわかります。
最後に
Logic Appsと使うと、ノンコーディングで簡単にCognitive Services Text Analyticを利用してツイートの感情分析をする仕組みができました。
もっと詳細にやりたい場合はもちろんコーディングが必要になりますが、どんな感じか?は気軽に試せるかなと。
このLogic FlowにSlackに通知したり、特定のメールアドレスにメールを送ったりというものもコネクターを追加するだけで簡単にできますので、ぜひいろいろ試してみてください!
参考にさせていただきました
これぞMS版Watson!? いますぐ使える感情分析APIで評判分析アプリ作ってみた
https://www.webprofessional.jp/picking-the-brains-of-your-customers-with-microsofts-text-analytics/