Microsoft Azure Cognitive Services と Microsoft Flow を使ってアンケートのフリーコメントの分類を自動化する

イベントを実施した後のアンケートのフィードバックはとても重要です。

ですが、フリーコメントの集計って大変ですよね。特に数が数百件ともなると・・・

統計的に分析したいときに、フリーコメントを目で見て、各自の判断で分類したりすることってあると思うんです。とにかく時間がかかりますし、担当者の主観や疲れによる分類仕分けの正確さが維持できないという問題点があります。

こうした作業は AI を使って自動化してしまいましょう。

今回、Microsoft Flow と LUIS を活用して、ノンコーディングですばやく実現してみたいと思います。

今回実現するイメージ

f:id:minorun40:20180605200856p:plain

準備物

・LUIS

・アンケート

・OneDrive

Microsoft Flow

 

では、始めてみましょう。

LUISの準備

LUIS は Azure で提供されている自然言語解析の Cognitive Services です。

LUISのアプリ作成の仕方はこちらのリンクを参考にしてください。

LUIS App を作成する – Japan Cognitive Services Support Blog

新しいアプリを作ります。

「My Apps」-「Create new app」を選択し、アプリを作成します。

f:id:minorun40:20180605201412p:plainf:id:minorun40:20180605202320p:plain

アプリ作成画面で「Create new intent」を選び、分類したいカテゴリとその例文を登録します。

f:id:minorun40:20180605202456p:plain

f:id:minorun40:20180605202527p:plain

f:id:minorun40:20180605202611p:plain

このような感じで、他のカテゴリを作成し、それぞれ例文を登録します。

f:id:minorun40:20180605202657p:plain

出来上がったら、右上にある、Train ボタンを押すと学習がスタートします。

以下のようなバーが出てきたら学習完了です。

f:id:minorun40:20180605202827p:plain

右上の Test ボタンを押すと意図解析のテストができます。

f:id:minorun40:20180605202932p:plain

どのようなカテゴリに分類されるのか、スコアと共に返してくれますので、ここで妥当性を判断しましょう。もし想定通りでなければ、例文を追加して→学習の繰り返しです。

完成したら、公開します。

「 Publish 」のタブを開き、「 Publish 」ボタンを押すと API として公開されます。

f:id:minorun40:20180605203137p:plain

これで LUIS の準備は終わりです。

 

アンケートの準備

実際に解析するアンケートファイルを作ります。

このアンケートで使用する列は3つだけです。

・__PowerAppsId__ 列:後で使用する Flow で読み込むユニークな行 ID を記載します。"__PowerAppsId__" という記述でないと Flow が行 ID として認識しないので注意が必要です。今回は、A000000001 から連番で振りました。

・Comment 列:実際のアンケートのフリーコメントを記載しましょう。この Comment の文章を LUIS が意図解釈します。

・Category :LUIS が意図解釈したカテゴリーをこの列に書き込みます。

f:id:minorun40:20180605203511p:plain

表を作成したら、「挿入」「テーブル」を押し、テーブルを作成します。

f:id:minorun40:20180605204151p:plain  f:id:minorun40:20180605204219p:plain

テーブルを作成しないと Microsoft Flow で読み込んでくれません。忘れずに作成しましょう。

作成完了するとこんな感じになります。

f:id:minorun40:20180605204336p:plain

作成完了したら、OneDrive の任意のフォルダにファイルを保存しましょう。

※OneDrive の作成方法はこちらをご参考ください。

OneDrive はじめてガイド - Microsoft アカウントを取得 - 楽しもう Office

その際に、同じファイルをコピーして、「アンケート出力」というファイルも作成しておきます。

※なぜ2つ作るかというと、Microsoft Flow が読み取って行を更新するという処理を書けるのですが、その際に、読み取っているファイルがロックされているため書き込めないというエラーが出るので、読み取りファイルと出力ファイルを分けています。

f:id:minorun40:20180605204437p:plain

これでアンケートファイルの作成は完了です。

 

Microsoft Flow の準備

Microsoft Flow のサインアップはこちらをご参考ください。

サインアップおよびサインイン | Microsoft Docs

Microsoft Flow のサインアップができると、以下のような画面になります。

f:id:minorun40:20180605205030p:plain

「+ 一から作成」を選びます。

もう一度「一から作成」を選びます。

f:id:minorun40:20180605205134p:plain

トリガーの作成を選択し、検索で「繰り返し」と入力します。そこで出てきた「スケジュール」を選びます。

f:id:minorun40:20180605205326p:plain

時間間隔を入力するところがありますが、基本的にデフォルト値で良いでしょう。

次に、「+新しいステップ」→「アクションの追加」を選択します。

f:id:minorun40:20180605212601p:plain

検索フィールドに「 Excel 」と入力すると、Excel ファイルに対する処理を選ぶことができます。ここで、「Excel - 行の取得」の上の方を選びましょう。

※下側は一行単位で取得するアクションとなります。

f:id:minorun40:20180605212800p:plain

行の取得のパラメータ設定となります。ファイル名のフィールドの右側をクリックすると OneDrive の接続認証となり、接続できれば OneDrive のファイルが表示されます。

ここは先ほど作成した「アンケート.xlsx」を選びましょう。

f:id:minorun40:20180605213047p:plain

正しく選択できれば、テーブル名も選択して選ぶことができます。

f:id:minorun40:20180605213107p:plain

さらに、「+新しいステップ」「アクションの追加」を選択します。

検索フィールドで「LUIS」と入力すると、LUIS のコネクタが出てきますので、「LUIS - Get prediction 」を選びます。

f:id:minorun40:20180605213227p:plain

「App id」フィールドには、LUIS アプリの App id※(先ほど作成した LUIS  アプリのSETTINGS というタブに Application ID が表示されていますので、それをコピーして貼り付けます)、「Utterance Text」には先ほどの行の取得で取得されている「Comment」が選べるようになっているので、それを選びます。

f:id:minorun40:20180605213636p:plain

そうしますとなんと、繰り返し処理(Apply to each)が勝手に作成されています。その枠内の「アクションの追加」を選びます。※ループ処理を書かなくても良いのは便利ですね。

f:id:minorun40:20180605213743p:plain

同じように検索フィールドで「Excel」と入力するとExcelの操作が出てきますので、今度は「Excel - 行を更新します」を選びます。

f:id:minorun40:20180605213910p:plain

先ほどと同じように、出力先の Excel ファイル名とテーブル名を選びますので、「アンケート出力.xlsx」を選び、テーブルを選びます。

f:id:minorun40:20180605214030p:plain

更にここで、行 IDというフィールドを選択します。ここは、右側の下の方にある「Row id」をいう値を選びます。

f:id:minorun40:20180605214128p:plain

最後に、「Category」というフィールドに LUIS からの戻り値である「Top Scoring Intent Name」を選択します。

f:id:minorun40:20180605214223p:plainこれにて完了です!

忘れずに保存して、その右にある「テスト」を押しましょう。

f:id:minorun40:20180605214346p:plain

そうすると、フローのテスト画面に映りますので、「トリガーアクションを実行する」をチェックして保存&テストを押します。

もう一度実行を聞かれますので、「フローの実行」を押します。

f:id:minorun40:20180605214446p:plainf:id:minorun40:20180605214510p:plain

 

フローが開始し始めました。

f:id:minorun40:20180605214617p:plain

100件のデータで、だいたい3分くらいで終了します。

f:id:minorun40:20180605214700p:plain

OneDrive 内の出力ファイルを見てみましょう。ちゃんと更新時刻がたった今になっていますね!

f:id:minorun40:20180605214805p:plain

アンケート出力ファイルの Category 列に分類が自動で記載されていれば成功です!

f:id:minorun40:20180605214858p:plain

適切に Category が分類されていない場合は、LUIS の例文を追加して学習させましょう。

後始末

Microsoft Flow は実行すると自動的にオンになって、今回の処理ですと15分に一回自動実行されてしまいますので、処理が終わったら忘れずにオフしておきましょう。

そうでないと Microsoft Flow の実行をし続けたり、LUIS の API をコールし続けて思いもよらない課金がされてしまいますのでご注意を。

 

いかがでしたでしょうか。

このように、Microsoft Flow を使用すれば、ノンコーディングで面倒な処理を自動化できますし、Microsoft Azure Cognitive Services と連携して AI の機能を簡単に付加することもできます。Microsoft Flow では、今回のようなループ処理や条件分岐、前段処理のデータを引き継いだりすることができるため、かなり複雑な処理を作ることも可能です。

今回は繰り返しトリガーでの Flow でしたが、OneDrive にファイルが保存されたら、、など様々なトリガーがあります。また、OneDrive 以外でも、Google スプレッドシートなどでも実施可能です。 

ぜひいろいろと試してみてください! 

 

参考リンク

Create smarter flows using Microsoft Cognitive Services LUIS | Flow Blog