Power BI Desktop と Azure Cognitive サービスで GitHub Issue の感情を解析する

今回は Power BI Desktop と Azure Cognitive サービスのテキスト分析を使って、GitHub にあがった Issue の感情を解析してみます。

# Azure Cognitive Service

[Azure Text Analytics](https://azure.microsoft.com/ja-jp/services/cognitive-services/text-analytics/) を使えば、テキストの解析が色々とできます。Azure サブスクリプションが無い方は体験版を申し込んでいただき、テキスト分析用のリソースを作成してください。

作成後、リージョンとキーを確認してください。後程使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/a03d8cf9-91e3-5dea-235c-8a3ea1aa36a7.png)

# GitHub へ接続

1\. Power BI Desktop より「データを取得」。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/0dab117a-99d2-ef63-9881-539e83de60c0.png)

2\. GitHub を選択して「接続」。プレビューである旨表示されるので了承。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/8d592b0d-717e-0596-a30f-36d82ce624fe.png)

3\. 解析したレポジトリを指定して「OK」。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/02d959a3-980b-0cbe-1cb6-f56b81109788.png)

4\. 「サインイン」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/5c8c197e-e98b-032d-132b-dc83ff156ca7.png)

5\. GitHub でサインインを実行して認可を実行。元の画面で「接続」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/ead66a74-5ec0-fba0-b599-91f46eb1cad1.png)

6\. とりあえず全て選択して「読み込み」。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/c9b32441-d9d9-cf81-e696-a1a2b8786045.png)

# 感情分析用の関数を追加

1\.「クエリを編集」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/4143ab36-88cb-c74b-109b-ffaabd23db98.png)

2\. 新しいパラメーターを追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/f3fee457-267f-6ea6-12b8-b3cda5fac802.png)

3\. テキスト型のパラメーターを作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/b56c0a97-1179-efce-40bd-48e3af8a57df.png)

4\.「空のクエリ」を追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/068e75fb-0af2-98b6-b315-f0f22abc83c6.png)

5\. クエリ名を「感情分析」に変更し、「詳細エディター」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/7ed1edee-ac10-714b-9adb-97f572d3eefd.png)

6\.　以下のコードを張り付け。

- URL とキーは環境に合わせて変更

```fsharp
let
    URL = "https://westus.api.cognitive.microsoft.com/text/analytics/v2.1/sentiment",
    Key = "<キー>",
    Contents = "{ ""documents"": [ { ""language"": ""en"", ""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],
    Score = Documents{0}[score]
in
    Score
``` 

7\.「OK」をクリックして結果を確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/7a1e91c5-e948-0715-c922-07ce3cafd1e1.png)

8\.「感情分析」を右クリックして「関数の作成」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/cc61ac76-9520-69d2-ffa3-00b8d9da4c31.png)

9\. 名前を付けて、「OK」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/0607744a-38cd-eef3-9dcb-25f3790fca9f.png)

# 感情分析を実行

1\. Issues クエリを選択して、「カスタム関数の呼び出し」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/2aa5d167-fe03-03ae-2ed1-442a19cab3a4.png)

2\. 列名、関数とパラメーターを指定して「OK」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/15e1d11e-d389-7613-a9b0-0c8ba73f347a.png)

3\. 結果を確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/62f4584c-eb2c-1579-366b-451883c923a4.png)

4\. エラーになっているのは、body 内にダブルクォーテーションがある為。body を選択して「値の置換」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/26d9f346-1325-5a7e-0b22-62e5003063c3.png)

5\. ダブルクォーテーションをシングルクォーテーションに変換。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/e139e07e-aaa0-4841-e042-c2214dd068e7.png)

6\. 同様にバックスラッシュも二重にする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/0a52549f-2238-cead-4dbb-da6ef8a09e59.png)

7\. 処理の順番を正しく変える。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/33421efb-61c5-3a13-f8e9-7fa2a9d81646.png)

8\. 再度結果を確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/083f1960-ac4c-1c1b-1a14-0f89ad5f9e21.png)

9\. 「感情分析結果」の型を「10 進数」に指定。

# 不要なクエリの削除

もう「環境分析」クエリは不要のため削除して「閉じて適用」をクリック。

# レポートの作成

折れ線グラフなどで感情の推移をみると面白い？かもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/93f786d8-47cd-9380-7179-4068d14e622b.png)

# まとめ

最近データフローや AI 分析情報機能などでも行える感情分析を、一番ベーシックな方法でやってみました。今回は英語のテキストでしたが、日本語も対応していますので、是非 GitHub だけでなく、Twitter など色々解析してみてください。