Teams でアンケート (Forms) を作って結果を Power BI で可視化・共有する (2) キーフレーズ抽出

この記事は [Teams でアンケート (Forms) を作って結果を Power BI で可視化・共有する (1)](https://qiita.com/ayumito/items/159a03ca631207b4b4fc) の続きです。
前回の記事では Teams のチャネル内で Forms のアンケートを作成し、結果が格納される Excel ファイルを Power BI Desktop に取り込む方法を紹介しました。今回は回答を Power BI Desktop に取り込んだ後の、データの加工方法を紹介します。

# Forms アンケートの回答は Excel にどう格納されるのか？
データを加工する前に、Forms のアンケート結果がどのようなルールで Excel に格納されるのかを簡単に説明します。

- 最初の 5 つの列には、回答者 ID、各回答の開始時間と完了時間、各回答者の名前とメール アドレスが格納されます。

|列名|データ|
|:-:|:-|
|ID|回答を識別するID。1から連番が振られます。 |
|Start time| 回答の開始日時 |
|Completion time| 回答の終了日時 |
|Email| 組織向け記名式アンケートの場合にメールアドレスが入ります。それ以外は「Anonymous」となります。 |
|Name| 組織向け記名式アンケートの場合に氏名が入ります。それ以外は空欄です。|

- 後続の列 において、**各質問文が列名になります。**
- 選択式の質問は、選択した回答の内容がセルに格納され、**複数選択の場合には各回答がセミコロン「;」で区切られます。**
:::note warn
Power BI では列名を使ってデータの加工手順を記録していくので、**後から質問文を変更すると、列が見つからないためにエラー**になることがあります。
後から質問文を変える必要がないようによく吟味して **Forms アンケートを完成させてから Power BI に取り込む**ことをお勧めします。
:::
# Power BI Desktop の Text Analytics とは
Power BI Desktop の Power Query エディターでは「Text Analytics」というボタンがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/a898b191-ed8e-cf9c-20d8-c0b6e7fa2933.png)
Text Analytics を使用することで、文章が格納されている列に対して次のことができます。
- **言語検出**
何語の文章であるかを返します。日本語なら「ja」英語なら「en」という具合。
- **感情分析**
文章のポジティブ/ネガティブを1～0の数値で返します。ポジティブなほど1に近くなります。残念ながら日本語は未サポートです (動作はします)。
- **キーフレーズ抽出**
文章に含まれるフレーズをカンマ「,」区切りで返し、さらに行に展開します。

:::note warn
カスタムビジュアルの「Word Cloud」だけで頻出単語の分析ができるのは、英語などの**スペースで単語が区切られる言語**のみとなります。日本語の文章は Word Cloud では分割してくれないので、Text Analytics でキーフレーズ抽出が必要です。
:::

Text Analytics を含む「AI 分析情報」に関するドキュメントはこちらです。
[Power BI Desktop で AI 分析情報を使用する](https://learn.microsoft.com/ja-jp/power-bi/transform-model/desktop-ai-insights)

:::note warn
Text Analytics を含む「AI 分析情報」の使用には、Power BI サービスにサインインして Premium 機能が使用できる必要があります。**組織で禁止されていなければ**、Premium per user ライセンスの試用版でお試しできます。
:::

:::note
Azure Cognitive Services にも Text Analytics と同様の機能があり、連携して使用することも可能です。こちらのドキュメントにその方法が記載されています。
[チュートリアル: Power BI に保存されているテキストからキー フレーズを抽出する](https://learn.microsoft.com/ja-jp/azure/cognitive-services/language-service/key-phrase-extraction/tutorials/integrate-power-bi)
:::

# アンケートの回答文からキーフレーズを抽出する
前置きがだいぶ長くなりましたが、ここから前回の作業の続きです。
Excel を読み込むと下図のように Power BI Desktop の画面右側「フィールド」ペインに Excel シートのヘッダー (列名) が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/bf962991-46a1-e9c9-2dcc-bf848923199c.png)

Completion time, Start time は日付・時刻データ型なのでカレンダーのアイコン、ID は数値なので暗黙的な集計が定義され「Σ」(シグマ) のアイコンが付加されています。
Power BI Desktop のリボンメニューで [ホーム] → [データの変換] をクリックし、Power Query エディターを開きます。

まず、Power BI は不要な行や列を削除するのがパフォーマンス良く使うためにまずやるべきことですので、匿名のアンケートでは不要となる「Email」と「Name」の2つの列を削除します。列名を右クリックして[削除]でも良いですし、列名を選択した状態で Delete キーでも削除できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/7074ebc1-dec8-4930-72f5-42e74b44bd84.png)

また、回答の1行目は自分でお試しで答えたものだったので、これも削除します。[ホーム] → [行の削除] → [上位の行の削除] で削除したい行数を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/f1bfdb46-184e-9b45-078a-4bb45f4c8094.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/51de8482-07d7-b524-c820-c14d08e80e90.png)

ここでやっとキーフレーズ抽出に進みます。
が、まずここで一工夫です。回答数が百件を超えてくると、そこから抽出されるフレーズの数も相当な数になります。そこでキーフレーズ抽出用に、もうひとつクエリを用意します。
「Table1」というクエリがありますが、これを参照する別のクエリを作って、そこでキーフレーズ抽出を行います。
クエリペインの「Table1」を右クリックし [参照] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/d57c598a-c0cd-9750-e444-5f176909ba83.png)

「Table1 (2)」というクエリが作成されるので、名前を「キーフレーズ」に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/a1eee69c-094d-bacf-a3eb-cf660078f012.png)

必要なのは ID 列と回答文が入っている列のみなので、この2つの列を Ctrl キーを押しながらクリックして、右クリックメニューから [他の列の削除] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/1196d899-1d5a-e4c8-799d-ab93d8878124.png)

回答文が入っていない行は不要なので、列名のプルダウンメニューを開き、(null) のチェックボックスを外して除外します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/e33e49a9-13be-2d11-9726-f218092f8661.png)

回答文が入っている列 (ここでは「Power BI の好きなところを教えてください」という列) を選択し、[ホーム] → [Text Analytics] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/ff838b97-2dfc-d27b-19d6-a3417d415acc.png)

初めて使用するときには下図の通りサインインを求められます。これは Text Analytics が Premium 機能なので、権限があるかどうかを確認するためです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/5d972a74-1174-cbc5-8da5-1ad0e6143dc8.png)

キーフレーズ抽出を行う [Extract key phrases] を選択し、Language ISO code には日本語を示す「ja」と入力します。[OK]をクリックすると、Power BI サービスでキーフレーズ抽出が行われます。(データ量が多いと少し待たされます。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/1cee030f-c08b-d8ae-fea1-c27b1c9f3388.png)

「データのプライバシーに関する情報が必要です」と表示されるので [続行] ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/820890ef-9f59-c2f7-5c76-03d514295c0b.png)

プライバシー レベルを設定し、[保存] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/7c979a3f-7844-4896-d72f-694675a228d8.png)

[Extract key phrases] と [Extract key phrases.KeyPhrase] という2つの列が追加されます。前者は抽出したキーフレーズをカンマ区切りで格納し、後者はそれをさらに行に展開しています。行に展開することにより、各フレーズが何度出現しているかがカウントしやすくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/01177e02-00c7-e5c8-9f78-33e482c8be46.png)

後者の列名を「キーフレーズ」に変更し、[ID] と [キーフレーズ] の2つの列を選択して、他の列を削除します。
ここで一旦 [閉じて適用] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/37e5c99c-f32a-d4c9-c460-2fa739ef2d8f.png)

# リレーションシップの設定
Power Query エディターの画面が閉じ、データの取り込みと変換が終了したら、リレーションの設定をするために画面左側の [モデル] のボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/7a825f8c-c74e-6b54-00b3-4c2f64fb9e8d.png)

[クロス フィルターの方向]を「双方向」に変更し、[変更の適用] をクリックします。
この設定を行うことで、この後ビジュアルを追加した時に、キーフレーズから文章を絞り込むことができるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/2bd11d25-aa54-62fe-33ab-9aba19888c2a.png)

以下、12/15に追記。

# キーフレーズを可視化する
1. Power BI Desktop で [レポート] ボタンを押してレポートにビジュアル (グラフ) を追加していきます。カスタム ビジュアルを取り込むために、視覚化のアイコンの一番右下にある三点リーダーアイコンをクリックし、「その他のビジュアルの取得」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/65b4ca7d-d377-09d2-a305-6db2f2b57c2e.png)

2. カスタムビジュアルは大量にあるので、右上の検索窓に「Word」と入力して、「Word Cloud」のビジュアルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/9c6bce4a-d8ba-db5b-1121-8b39e340ba9e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/d19b0c7a-1632-cdbf-9c2a-206e263f550a.png) このバッジがついているのは、認定ビジュアルです。
何をもって認定しているか、詳しくは[こちらのドキュメント](https://learn.microsoft.com/ja-jp/power-bi/developer/visuals/power-bi-custom-visuals-certified)をご覧ください。

3. カスタム ビジュアルの説明やイメージ図の確認、サンプルのダウンロードなどができます。「追加する」ボタンをクリックして、カスタム ビジュアルを取り込みます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/b20f9551-572e-8f00-b881-de50e39dd527.png)
このように表示されれば取込完了です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/87238c2e-ee2d-c08e-751f-c4b0b6747017.png)
標準ビジュアルの下にアイコンが追加されます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/ca0217d2-ce2e-aee4-0c28-d28c6436a8a5.png)


4. 上記の追加されたアイコンをクリックして、キャンバスに追加し、「キーフレーズ」テーブルの「キーフレーズ」列を [カテゴリ] に、「ID」列を [値] にそれぞれドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/b9347759-4473-b535-8322-2703d6a0f859.png)

5. 私の質問が「Power BI の好きなところを教えてください」だったため、回答も「～なところ」が多かったようです。ビジュアルの書式設定の [ストップワード] 欄に「ところ」と入力して、ビジュアルから除外します。「こと」もあまり意味がないため、半角スペースで区切って入力し、除外します。また、[テキストの回転] のトグルをオフにし、見やすくしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/91afd292-9002-02d2-bdee-f10f112d6df1.png)

キーフレーズを抽出したら、可視化までしないとモヤモヤするよなーと思い、追記しました。
[次回](https://qiita.com/ayumito/items/2fcd9ea17b35c8965bfc)は、複数回答項目を分析しやすいように変換して、可視化します。