Twitter上で「いいね」したツイートをノンコーディングで単語に分解してみた

面接官にプライベートなTwitterアカウントを教えることに迷いはありませんでした。
2019.12.23

皆さん、Twitterは好きですか?

私はTwitterが大好きなので、弊社の採用一次面接の際にプライベートで使っているTwitterアカウントを面接官に自ら教えました。面接中に目の前でTwitterアカウントを探されるあのヒリついた雰囲気、ちょっと笑ってる面接官の顔……いい思い出です。いいね!

それはそうとして先日、TableauとSnowflakeとを連携させて、Twitter上でいいねしたツイートの単語でワードクラウドを作成するエントリを公開しました。

ツイートを取得部分に関してはCData社の提供するTwitter ODBC Driverを、データ加工に関してはデータブレンディング&分析製品であるAlteryxを使用しています。本エントリでは、この前処理部分についてご紹介します。

目次

 

前提条件

今回の検証では以下の環境を使用しています。

  • Windows 10 pro
  • Alteryx Designer 2019.4

 

TwitterのODBCドライバを設定する

まずはTwitterとAlteryxを接続してツイートを取得します。この接続にはCData社が提供するTwitter ODBC Driverを利用します。今回は以下URLの30日間のフリートライアルを使用しています。

Twitter ODBC Driverインストール

インストーラをダウンロードしたら画面の指示にしたがってインストールを進めます。

ライセンス契約に同意して次に進みます。

コンポーネントを選択します。

スタートメニューフォルダを選択します。

次へをクリックすると評価ライセンスの認証がスタートします。

インストールボタンをクリックしてインストールを開始します。

端末に入っていない場合、Microsoft Visual C++ Redistributableのインストールが開始されます。

ODBCのセットアップ

ODBCアドミニストレータを起動し、追加よりドライバを選択します。

データソース名に任意の名前を付けて、接続テストをクリックします。

するとブラウザが開き、Twitterの認証画面が開きます。アカウントIDとパスワードを入力します。

認証が完了すると以下の画面がブラウザに表示されます。

ODBCアドミニストレータ側でも接続テストに成功した旨のダイアログが表示されます。

 

AlteryxとTwitterを接続する

これでAlteryxとTwitterを接続する準備ができました。Alteryxを起動し、データ入力ツール(Input Data tool)から汎用ODBC接続を選択します。

ODBC接続の画面が表示されます。先ほどセットアップしたODBCのデータソース名をドロップダウンリストより選択し、OKを押します。IDとパスワードを入力する必要はありません。

「テーブルの選択またはクエリの指定」ダイアログが表示されます。今回は自分自身が「いいね」したツイートを取得したいので、"CData"."Twitter"."Favorites" テーブルを選択します。 他のテーブルやビューがどのようなデータを持つのかについては以下をご参照ください。いろいろ分析し甲斐がありそうです。

実行すると、「いいね」したツイートが全期間で取得できました。

ここで注意しておきたいことは、何度もリクエストを送信するとTwitter側でのリクエスト上限に引っ掛かるケースです。今回の検証で何度も実行を試したところ、以下のようなエラーメッセージが出ました。このような場合は記載された時間(実行より15分後)まで待つしかありません。こうなる前にデータ入力ツールをキャッシュ化する・一度実行結果を別ファイルに出力するなどで何度もリクエストを送信しないようにしておくことをおすすめします。

Error: データ入力 (1): エラーSQLExtendedFetch: The request limit of [15] has been reached for endpoint [https://api.twitter.com/1.1/statuses/home_timeline.json]. Please wait until 2019-12-16T20:30:02+09:00 to submit additional requests.

TwitterのAPIレート上限についてはこちらをご確認ください。

ワークフローのキャッシュ化については以下エントリをご確認ください。

 

「いいね」したツイートから単語を切り出す

無事「いいね」したツイートを取得してAlteryx側でデータ加工する準備が整いましたので、使用されている単語を切り出して出現回数をカウントします。ワークフローの全体像は以下の通りです。

普段Alteryxを使っている方にとっては見慣れない湯かごの絵のツールがありますが、これこそがこのツイートを単語に分解するために必要な、形態素解析をしてくれるツールです。

このツールは弊社じょんすみすによってAlteryxのPublic Galleryにて公開されています。以下エントリを参考にダウンロードしてください。

正規表現ツール(Regex tool)でURLを削除する

取得したツイートの中には、以下のように「文字列+http(s)始まりのURL」で構成されているものが数多くありました。今回は文字列の単語のみでワードクラウドを作成したいのでURLは取り除きます。

正規表現ツールを使用し、「文字列+http(s)始まりのURL」を正規表現で表します。文字列を表す先頭の\d*?のみを取得するよう出力方法に「置換」を、置換テキストに「$1」を選択します。正規表現を()で囲み、$をつけた数字を指定することで元のデータのn番目の部分式に一致したものを出力します。 (\d*?)http(s)?:\/\/([\w\-]+\.)+[\w\-]+(\/[\w\- .\/?%&=]*)?

正規表現ツールの使い方については以下エントリをご確認ください。

レコードIDを付けて必要な項目のみに絞る

後続のツールで使用するため、レコードIDツール(RecordID tool)でIDを割り振ります。IDとツイートが格納された項目(Text)以外はセレクトツール(Select tool)で除外します。

Janome Tokenizerで単語に分解する

Target fieldにツイートが格納された項目を指定し、前項で追加したレコードIDをRecord ID fieldに指定します。

実行すると、単語に分解された結果が出力されました。

フィルタツールで動詞や名詞のみに絞る

今回の最終目的は切り出した単語を使ってワードクラウドを作成することなので、出現頻度は高いが単体で意味を成さないような助詞などの単語はフィルタツール(Filter tool)で取り除きます。カスタムフィルタに以下のように入力します。

単語の出現回数をカウントする

集計ツール(Summarize tool)で切り出した単語をグループ化し、単語の数をカウントします。

カウント数が極端に少ない単語の中には、「何をいいねしたらそんな単語が出るの?」というものもチラホラ。こういったものを取り除いておきたい場合は適宜フィルタツールで一定のカウント数以上の単語のみに絞るようにしておきましょう。

ここまで出せたらBIツールでワードクラウドを作るも良し、カウント数でソートしてみるも良しな状態となりました。私はこのデータをTableauに読み込ませてワードクラウドを作成しました。

 

まとめ

TwitterのAPIを使用するには基本的にアプリケーション登録の作業が必要となりますが、今回はCData社が提供するODBCドライバを使用することでID・パスワードを使ってツイートを取得でき、単語の切り出しについてもAlteryxでコーディングせずに実現できました。ODBCドライバもAlteryxもフリートライアルがありますので、気になった方はぜひ試してみてください。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。 alteryx_960x400