Help us understand the problem. What is going on with this article?

Power BI Tips - Azure Cognitive Serviceを使ってテキストデータを分析する

概要

私の所属している会社では、認可の小規模保育事業所を運営しています。
保育園では、毎日子どもごとに日報を作成しています。
日報は、現在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」を選択します。
image.png

③以下のような画面が表示されるので、「+追加」をクリックします。
image.png

④以下のような画面が表示されるので、検索窓に「テキスト」と入力し、「テキスト分析」を選択します。
image.png

⑤次に「作成」をクリックします。
image.png

⑤必要事項を入力し、最後に「作成」をクリックしてください。デプロイが始まります。
 ※価格レベルの「Free F0」は、サブスクリプション内で1個しか使えない点にご注意下さい。
image.png

⑥デプロイが完了したら、以下のような画面が表示されます。「リソースに移動」をクリックします。
image.png

⑦左側のメニューの「キーとエンドポイント」をクリックします。
image.png

⑧キー1とエンドポイントのURLをコピーしておいてください。
image.png

Power BI側作業

①Power BI Desktopで、対象となるデータを取り込みます。

②リボンのホームタブで、「データの変換」をクリックします。
image.png

③Power Queryエディターが起動します。
 リボンのホームタブにある「パラメータの管理」の▼をクリックし、
 表示されたメニューから「新しいパラメータ」を選択します。
image.png

④以下のような画面が表示されます。
 ここでは名前を「キーフレーズ用パラメータ」、種類を「テキスト」、提案された値を「任意の値」、
 現在の値を「テスト」に設定し、OKをクリックします。
image.png

⑤クエリペイン上の何もないところで右クリックし、
 表示されたメニューから「新しいクエリ」→「空のクエリ」を選択します。
image.png

⑥新しくクエリが作成されます。作成されたクエリを右クリックします。
 メニューから「名前の変更」を選択し、名前を「キーフレーズ分析」にします。
image.png

⑦再度右クリックして、「詳細エディター」を選択してください。
image.png

⑧クエリの詳細エディタが起動するので、
 以下のようなコードを入力します。

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、キーを設定してください。

⑨キーフレーズ分析を右クリックして、表示されたメニューから「関数を作成」を選択します。
image.png

⑩以下のような画面が表示されるので、名前に「キーフレーズ分析関数」と入力して、「OK」をクリックしてください。
image.png

⑪分析対象の列に、作成した関数を適用して、結果を新しい列に保存するようにします。
 Queryエディターで対象のテーブルを選択します。
 その後、リボンの「列の追加」タブを開き、「カスタム関数呼び出し」をクリックします。
image.png

⑫以下のような画面が表示されます。関数クエリには、先ほど作成した関数を選択してください。
 キーフレーズ用パラメータには、分析対象の列を選びます。
 新しい列名は任意に入力し、最後に「OK」ボタンをクリックします。
image.png

⑬最後にリボンの「ホーム」タブを開き、「閉じて適用」をクリックします。
image.png

ビジュアルの準備、表示

上記までの作業でデータが作成できたので、Word Cloudでデータを表示してみます。

①視覚化ペインの中から、「・・・」をクリックし、その他のビジュアルの取得をクリックします。
image.png

②以下のような画面が表示されるので、「データの可視化」カテゴリを選択し、「Word Cloud」の追加ボタンをクリックします。
image.png

③視覚化ペインにWord Cloudが追加されるので、クリックします。
image.png

④Word Cloudがレポートに貼り付けられます。レポート上のWord Cloudが選択された状態で、
 フィールド内にある分析対象の項目をドラッグ&ドロップでカテゴリにセットします。
image.png

⑤分析結果が表示されます。頻出する要点が大きな文字で表示されます。
image.png

yossihard
組込システムからクラウドまで、幅広くソフト開発に携わってきた雑食系システムエンジニア兼IoTコンサルタント。 Microsoft MVP(2010~から11期連続受賞)。 今は保育・介護・飲食業界のIT/IoTに取り組んでいます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away