#概要
私の所属している会社では、認可の小規模保育事業所を運営しています。
保育園では、毎日子どもごとに日報を作成しています。
日報は、現在Microsoft Azure上に構築した帳票作成システムを使って作成し、
データはAzure SQL Database上に保存されています。
この日報のテキストデータを使って、
・子どもの週ごと、月ごとのおおまかな様子、傾向
・保育士の観察観点
を分析したいと考えています。
今回、これをPower BI(セルフBIツール)とAzure Cognitive Service(MicrosoftのAIサービス)で
やってみた際の備忘録。
Azure Cognitive ServiceのText Analyticsのひとつ
「キーフレーズ抽出」をPower BIからAPIで呼び出して、
結果(文章の要点)をWord Cloudというビジュアルで表現します。
#用意するもの
・テキストデータ(今回はAzure SQL Databaseに入っています)
・Power BI Desktop
・Microsoft Azureのアカウント
#参考ページ
@kenakamu さん
『Power BI Desktop と Azure Cognitive サービスで GitHub Issue の感情を解析する』
⇒Power BIでAzure Cognitive Serviceの感情分析を使う方法を解説されています。
同じ手順で、感情分析ではなくてキーフレーズ抽出を呼び出せます。
#手順
ざっくりいうとこんな感じ。
・Azure Cognitive Serviceの準備
↓
・Power BIで対象となるデータを取り込み
↓
・テキストデータ列の一つ一つのデータに対し、関数を使ってAzure Cognitive ServiceのAPIを呼び出し、
結果(要点)を別の列に出力
↓
・出力結果列をPower BIのWord Cloudで表示
##Azure Cognitive Serviceの準備
①Microsoft Azureのポータルにログインします。
https://portal.azure.com/
②検索窓に「Cognitive Services」と入力し、サービスから「Cognitive Services」を選択します。
③以下のような画面が表示されるので、「+追加」をクリックします。
④以下のような画面が表示されるので、検索窓に「テキスト」と入力し、「テキスト分析」を選択します。
⑤必要事項を入力し、最後に「作成」をクリックしてください。デプロイが始まります。
※価格レベルの「Free F0」は、サブスクリプション内で1個しか使えない点にご注意下さい。
⑥デプロイが完了したら、以下のような画面が表示されます。「リソースに移動」をクリックします。
⑦左側のメニューの「キーとエンドポイント」をクリックします。
⑧キー1とエンドポイントのURLをコピーしておいてください。
##Power BI側作業
①Power BI Desktopで、対象となるデータを取り込みます。
③Power Queryエディターが起動します。
リボンのホームタブにある「パラメータの管理」の▼をクリックし、
表示されたメニューから「新しいパラメータ」を選択します。
④以下のような画面が表示されます。
ここでは名前を「キーフレーズ用パラメータ」、種類を「テキスト」、提案された値を「任意の値」、
現在の値を「テスト」に設定し、OKをクリックします。
⑤クエリペイン上の何もないところで右クリックし、
表示されたメニューから「新しいクエリ」→「空のクエリ」を選択します。
⑥新しくクエリが作成されます。作成されたクエリを右クリックします。
メニューから「名前の変更」を選択し、名前を「キーフレーズ分析」にします。
⑦再度右クリックして、「詳細エディター」を選択してください。
⑧クエリの詳細エディタが起動するので、
以下のようなコードを入力します。
let
URL = "https://XXXXXXXXXXXXXXX/text/analytics/v2.1/keyPhrases",
Key = "YYYYYYYYYYYYYYY",
Contents = "{ ""documents"": [ { ""language"": ""ja"", ""id"": 0, ""text"": """ & キーフレーズ用パラメータ & """ } ] }",
AnalyzedData = Json.Document(Web.Contents(URL, [
Headers = [#"Ocp-Apim-Subscription-Key"=Key,#"Content-Type"="application/json"],
Content = Text.ToBinary(Contents)
])),
Documents = AnalyzedData[documents],
KeyPhrases = Text.Combine(Documents{0}[keyPhrases], ", ")
in
KeyPhrases
XXXXXXXXXXXXXXXとYYYYYYYYYYYYYYYには、
Azure Cognitive Serviceの準備でコピーしておいたエンドポイントURL、キーを設定してください。
⑨キーフレーズ分析を右クリックして、表示されたメニューから「関数を作成」を選択します。
⑩以下のような画面が表示されるので、名前に「キーフレーズ分析関数」と入力して、「OK」をクリックしてください。
⑪分析対象の列に、作成した関数を適用して、結果を新しい列に保存するようにします。
Queryエディターで対象のテーブルを選択します。
その後、リボンの「列の追加」タブを開き、「カスタム関数呼び出し」をクリックします。
⑫以下のような画面が表示されます。関数クエリには、先ほど作成した関数を選択してください。
キーフレーズ用パラメータには、分析対象の列を選びます。
新しい列名は任意に入力し、最後に「OK」ボタンをクリックします。
⑬最後にリボンの「ホーム」タブを開き、「閉じて適用」をクリックします。
##ビジュアルの準備、表示
上記までの作業でデータが作成できたので、Word Cloudでデータを表示してみます。
①視覚化ペインの中から、「・・・」をクリックし、その他のビジュアルの取得をクリックします。
②以下のような画面が表示されるので、「データの可視化」カテゴリを選択し、「Word Cloud」の追加ボタンをクリックします。
③視覚化ペインにWord Cloudが追加されるので、クリックします。
④Word Cloudがレポートに貼り付けられます。レポート上のWord Cloudが選択された状態で、
フィールド内にある分析対象の項目をドラッグ&ドロップでカテゴリにセットします。