0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Logic Apps + Text Analyticsを使ってツイートを分析する(1) キーフレーズ抽出

Last updated at Posted at 2019-09-07

ご無沙汰してます

筆者は念願のデータ分析の仕事を専業ではじめました。

職場でツイッターの分析の話題になり、Google Spreadsheetに入れればGASを使ってSentiment Analyticsにかければ案外かんたんですよーって話していたのですが、よくよくやってみるとGASは認証部分とかで関数の世代交代とコードの陳腐化が激しく、自分たちで使うのは問題ないけれど、お客さんに教えるにはハードルが高いことがわかりました。

少し考えて、AzureのLogic AppsとText Analyticsを使えば自由度は低いけれどもこのへんの泥臭い部分を吸収してしまえるので良さそうだという結論に至りました。

コーディング

シンプルに Tweet取得>Text Analyticsにかける>Google Spreadsheetに書く

大量のコメントが発生するキーワードを使い実際にデータを流しながら試した結果、結局こんな感じになりました。

気をつけなければいけないこと

  • 行挿入する保存先にGoogle Spreadsheetを使っているので、案外かんたんにAPI呼び出し上限に達する
  • 配列渡しになると書き込みにFor eachループが作られてしまうので、ツイート数 * キーフレーズ数ですごいリクエストがかかる
  • Google Spreadsheetは頭がよくて、ID的なものを渡すと行更新をかけようとするので渡す配列に注意が必要

精度と負荷対策として、以下を行いました

  • RTだけの書き込みはキーフレーズ分析のときに重複になるので外す
  • tweet_user, tweet_idなどは扱わない
Logic_Apps_デザイナー_-_Microsoft_Azure.png
  1. Tweetトリガを取得
  2. フィルタとして、「RTで始まるもの」「競馬関係」「電車関係」などをORフィルタで取り除く
  3. 残ったものをテキスト分析し、キーフレーズの入った配列を抽出
  4. Google Spreadsheetに記録

解説

データ保存先の作成

こんなGoogle Spreadsheetを作りました。Entity, Tweet_datetimeという列ヘッダを書きました。PowerAppsId は自動作成されるような気がします。

ツイート分析sandbox_-_Google_スプレッドシート.png

Cognitive Service Text Analyticsの有効化

このあたりの資料を見ながら、アクセスキーとエンドポイントURLを作成してください

Twitterトリガ

自前のDBなどに保存するならデフォルトで問題ないのですが、Logic Appsは並列処理で思いっきり処理します。書き込み先がGoogle Spreadsheetなので、手加減してあげるためにコンカレンシー制御をOnにし、数値を仮に[8]にしました。

Logic_Apps_デザイナー_-_Microsoft_Azure.png Logic_Apps_デザイナー_-_Microsoft_Azure.png

制御>条件

フローを追加して、アクションで「制御」から「条件」を選びます。

Logic_Apps_デザイナー_-_Microsoft_Azure.png

単なるRTに対する処理

今回は、RTで始まるものは追加のコメントがない単なるRTで分析するには重複なので、取り除く処理をします。

「ツイート テキスト」が「次のもので始まる」「RT」がTrueだったら、そのまま終了させます。条件は[AND][または]があるので、後者の[または]を選びましょう。ORなんでしょうね。

Logic_Apps_デザイナー_-_Microsoft_Azure.png

制御から「終了」を選びます。

Logic_Apps_デザイナー_-_Microsoft_Azure.png

状態はデフォルトで「失敗」になっているので、取り除き完了という意味で正常終了にしてあげましょう。

Logic_Apps_デザイナー_-_Microsoft_Azure.png

単なるRT以外のもの

Logic_Apps_デザイナー_-_Microsoft_Azure.png

こちらのほうが取り出したいツイートなので、なにか処理をかけたいときはこちらがわにアクションを追加します。今回はそのままにしましょう、。

今回はこのツイートに対してText Analyticsを適用します。

Text Analyticsを行う

新しいステップを追加します。

テキスト分析を選びましょう。

Logic_Apps_デザイナー_-_Microsoft_Azure.png

今回はキーフレーズを抽出します。

テキスト分析を選び

Logic_Apps_デザイナー_-_Microsoft_Azure.png

キーフレーズを選択

Logic_Apps_デザイナー_-_Microsoft_Azure.png

キーフレーズを抜き出したいデータソース、今回はツイートテキストを選択

Logic_Apps_デザイナー_-_Microsoft_Azure.png

Google Spreadsheetに書き込む

ここまででキーフレーズの配列ができるので、これをGoogle Spreadsheetに保存します。

配列を保存すると、自動的にアクションがFor eachの配列繰り返しに変換されます。少しいじるとやり方が分かると思います。

Logic_Apps_デザイナー_-_Microsoft_Azure.png Logic_Apps_デザイナー_-_Microsoft_Azure.png Logic_Apps_デザイナー_-_Microsoft_Azure.png

完成 試運転

さて、できあがりました。

Logic_Apps_デザイナー_-_Microsoft_Azure.png

上のメニューから保存し実行してみましょう。

Logic_Apps_デザイナー_-_Microsoft_Azure.png

修正が必要

ツイート分析sandbox_-_Google_スプレッドシート.png

tweet_datetimeにオリジナルの値を放り込むと、やはりキーフレーズ配列を同じ行に上書き挿入して一個しか見えないみたいです。仕方ないので、現在の時間を入れる設定にしました。これはGoogle Spreadsheet側の挿入時挙動みたいなんで、普通のDBに入れる場合はtweet_datetimeを入れて問題ないと思いますが、処理現在のUTC時間を入れる関数にしました。

Logic_Apps_デザイナー_-_Microsoft_Azure.png

変えてみたけど、やっぱりおなじく一行を更新してしまい駄目な気がします。本格利用する際はデータストレージに普通のDBを使いましょう。

改善してみた

行の挿入のループで少しwaitを入れてあげました。これでGoogle側APIがひっかかることがなくなりました。

Logic_Apps_デザイナー_-_Microsoft_Azure.png

残念ながら、Google Spreadsheet側で追加なのにIDを見て更新してしまう仕様には引っかかってるので、思うようには動きませんが少し改善しました。

実際にいじってみると、やっぱり泥臭いですね。休日の時間が結構潰れました。

DOMOで可視化してみた

これを作りたかったのですが、DOMOのワードクラウドで可視化します。いま宝塚でホットな話題は

「聖乃あすか」さんのようでした。嫁さんに一体どういうことか聞いてみます。

形態素解析した結果くらいのほうが見やすいんですけどね〜。まだまだ研究する必要があります。

概要_-_Domo.png

続き Logic Apps + Text Analyticsを使ってツイートを分析する(2) 感情分析

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?