Microsoft Azure Cognitive Services と Microsoft Flow を使ってアンケートのフリーコメントの分類を自動化する
イベントを実施した後のアンケートのフィードバックはとても重要です。
ですが、フリーコメントの集計って大変ですよね。特に数が数百件ともなると・・・
統計的に分析したいときに、フリーコメントを目で見て、各自の判断で分類したりすることってあると思うんです。とにかく時間がかかりますし、担当者の主観や疲れによる分類仕分けの正確さが維持できないという問題点があります。
こうした作業は AI を使って自動化してしまいましょう。
今回、Microsoft Flow と LUIS を活用して、ノンコーディングですばやく実現してみたいと思います。
今回実現するイメージ
準備物
・LUIS
・アンケート
・OneDrive
・Microsoft Flow
では、始めてみましょう。
LUISの準備
LUIS は Azure で提供されている自然言語解析の Cognitive Services です。
LUISのアプリ作成の仕方はこちらのリンクを参考にしてください。
LUIS App を作成する – Japan Cognitive Services Support Blog
新しいアプリを作ります。
「My Apps」-「Create new app」を選択し、アプリを作成します。
アプリ作成画面で「Create new intent」を選び、分類したいカテゴリとその例文を登録します。
このような感じで、他のカテゴリを作成し、それぞれ例文を登録します。
出来上がったら、右上にある、Train ボタンを押すと学習がスタートします。
以下のようなバーが出てきたら学習完了です。
右上の Test ボタンを押すと意図解析のテストができます。
どのようなカテゴリに分類されるのか、スコアと共に返してくれますので、ここで妥当性を判断しましょう。もし想定通りでなければ、例文を追加して→学習の繰り返しです。
完成したら、公開します。
「 Publish 」のタブを開き、「 Publish 」ボタンを押すと API として公開されます。
これで LUIS の準備は終わりです。
アンケートの準備
実際に解析するアンケートファイルを作ります。
このアンケートで使用する列は3つだけです。
・__PowerAppsId__ 列:後で使用する Flow で読み込むユニークな行 ID を記載します。"__PowerAppsId__" という記述でないと Flow が行 ID として認識しないので注意が必要です。今回は、A000000001 から連番で振りました。
・Comment 列:実際のアンケートのフリーコメントを記載しましょう。この Comment の文章を LUIS が意図解釈します。
・Category :LUIS が意図解釈したカテゴリーをこの列に書き込みます。
表を作成したら、「挿入」「テーブル」を押し、テーブルを作成します。
テーブルを作成しないと Microsoft Flow で読み込んでくれません。忘れずに作成しましょう。
作成完了するとこんな感じになります。
作成完了したら、OneDrive の任意のフォルダにファイルを保存しましょう。
※OneDrive の作成方法はこちらをご参考ください。
OneDrive はじめてガイド - Microsoft アカウントを取得 - 楽しもう Office
その際に、同じファイルをコピーして、「アンケート出力」というファイルも作成しておきます。
※なぜ2つ作るかというと、Microsoft Flow が読み取って行を更新するという処理を書けるのですが、その際に、読み取っているファイルがロックされているため書き込めないというエラーが出るので、読み取りファイルと出力ファイルを分けています。
これでアンケートファイルの作成は完了です。
Microsoft Flow の準備
Microsoft Flow のサインアップはこちらをご参考ください。
サインアップおよびサインイン | Microsoft Docs
Microsoft Flow のサインアップができると、以下のような画面になります。
「+ 一から作成」を選びます。
もう一度「一から作成」を選びます。
トリガーの作成を選択し、検索で「繰り返し」と入力します。そこで出てきた「スケジュール」を選びます。
時間間隔を入力するところがありますが、基本的にデフォルト値で良いでしょう。
次に、「+新しいステップ」→「アクションの追加」を選択します。
検索フィールドに「 Excel 」と入力すると、Excel ファイルに対する処理を選ぶことができます。ここで、「Excel - 行の取得」の上の方を選びましょう。
※下側は一行単位で取得するアクションとなります。
行の取得のパラメータ設定となります。ファイル名のフィールドの右側をクリックすると OneDrive の接続認証となり、接続できれば OneDrive のファイルが表示されます。
ここは先ほど作成した「アンケート.xlsx」を選びましょう。
正しく選択できれば、テーブル名も選択して選ぶことができます。
さらに、「+新しいステップ」「アクションの追加」を選択します。
検索フィールドで「LUIS」と入力すると、LUIS のコネクタが出てきますので、「LUIS - Get prediction 」を選びます。
「App id」フィールドには、LUIS アプリの App id※(先ほど作成した LUIS アプリのSETTINGS というタブに Application ID が表示されていますので、それをコピーして貼り付けます)、「Utterance Text」には先ほどの行の取得で取得されている「Comment」が選べるようになっているので、それを選びます。
そうしますとなんと、繰り返し処理(Apply to each)が勝手に作成されています。その枠内の「アクションの追加」を選びます。※ループ処理を書かなくても良いのは便利ですね。
同じように検索フィールドで「Excel」と入力するとExcelの操作が出てきますので、今度は「Excel - 行を更新します」を選びます。
先ほどと同じように、出力先の Excel ファイル名とテーブル名を選びますので、「アンケート出力.xlsx」を選び、テーブルを選びます。
更にここで、行 IDというフィールドを選択します。ここは、右側の下の方にある「Row id」をいう値を選びます。
最後に、「Category」というフィールドに LUIS からの戻り値である「Top Scoring Intent Name」を選択します。
これにて完了です!
忘れずに保存して、その右にある「テスト」を押しましょう。
そうすると、フローのテスト画面に映りますので、「トリガーアクションを実行する」をチェックして保存&テストを押します。
もう一度実行を聞かれますので、「フローの実行」を押します。
フローが開始し始めました。
100件のデータで、だいたい3分くらいで終了します。
OneDrive 内の出力ファイルを見てみましょう。ちゃんと更新時刻がたった今になっていますね!
アンケート出力ファイルの Category 列に分類が自動で記載されていれば成功です!
適切に 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