データマイニングツール Orange で、検索キーワード を WordCloud にする


データマイニングツール Orange で、Google Search Console の キーワードを WordCloud にしてみました。
ツールのインストールから、実際の設定まで実施したことを記載します。


目次


データマイニングツール Orange について

オープンソースの GUI を持つ、データマイニングツールで、
もともとは、スロベニアの Ljubljana 大学 で開発されていたものが、オープンソース化されたもののようです。
私は、Awesome Python:素晴らしい Python フレームワーク・ライブラリ・ソフトウェア・リソースの数々 - Qiita を眺めていて存在に気がつきました。
GUI の中に、python スクリプトのノードが配置できそこで、python スクリプトの実行ができます。
また、GUI 内部で使用している機能に対応する、API を直接叩くこともできます。

以下、関連リンクを記載します。


実施する動機

Google Search Console で 収集した検索キーワードを分類したり、共起ネットワーク図を書いてみたりしたい欲求にかられていました。

共起ネットワーク図を描画するプログラムを書くのは面倒くさそうで、GUI で勝手にやってくれそうなツールはないか
探していたところ Orange を見つけました。

少し触った結果、未だ 共起ネットワーク図は作成できていないのですが、WordCluod のそれなりにおもしろかったので、
WordCLoud の作成方法についてとりあえずまとめてみることにしました。


前提

以下、インストール OS等記載している手順を実施する前提となります。


インストール、設定

以下、インストールと AddOn Text のダウンロード手順を記載します。

インストール

Orange – Download から、MAC 版の、dmg ファイルをダウンロードします。
私がインストールした Version は Orange3-3.4.5.dmg でした。

ダウンロード後の初回起動時は、Orange の存在をどのようにしったのか等のアンケードサイトへの移動を促されます。
特に入力しなくても画面を閉じれば先に進めるとは思いますが、私はアンケートには回答しました。

インストールが完了すると、以下のような画面が表示されます。
ダイアログ

AddOn Text のダウンロード

Orange は 初期設定では Text 処理はできないようで、Text 処理 用途の AddOn Text が用意されています。
もう1つ Textable という Text 処理を行うユーティリティ AddOn もありますが、こちらは使用しないので、
ダウンロードは不要です。

Add-ons ダイアログを開く

AddOn のダウンロードには まず、メニューの Options から Add-ons… をクリックします。
ダイアログ

AddOn Text をダウンロード

続いてダイアログが開きダウンロード可能な AddOn の一覧が表示されますので、Text のチェックボックス にチェックを入れ、OK をクリックします。
AddOn List
ダウンロードには、結構時間がかかります。
ダウンロードが終わると再起動を求められますので、Orange の再起動を実施してください。

これで、WordCloud の フローを書く準備が整いました。


フローの作成 コーパスからワードクラウド作成

まず、作成後のデータフロー図は以下のようになります。
データフロー図の図1つ1つは Widget という名前らしく、 Orange – Widget Catalogに一覧が記載されています。
データフロー

アウトプットとして、以下のような WordCloud が作成されます。
単にキーワードカウント結果を入力しただけですが、ブログの検索キーワードになってそうなものが大きく表示されています。
キーワードWordCloud

フロー図作成の手順ですが、以下の手順を踏みました。
順に説明をします。
手順上、Widget 同士を線で結ぶという手順省いていますが、適宜実施してください。
線同士で Widget を結ばないとIN - OUT の関係ができません。

  1. 入力データとなるスプレッドシートを TSV 化する

  2. TSV ファイルから Copus を作成する

  3. ワードカウントの前準備として、ストップワードを取り除く

  4. ワードカウント

  5. WordCloud 描画

1. 入力データとなるスプレッドシートを TSV 化する

Search Analytics for Sheets - Google スプレッドシート アドオン で作成した スプレッドシートを TSV でダウンロードします。
Google スプレッドシートを外部公開OK にしておけば、URL指定でダウンロードできるかと思いますが、
私は公開していないため、一度 TSV でダウンロードしました。

TSV ファイルは以下のようなフォーマットをしています。
処理としては、Query しか使わないのですが、全項目出力しました。

DateQueryPageCountryDeviceClicksImpressionsCTRPosition
2017/07/26java uribuilderhttps://www.monotalk.xyz/jpnDESKTOP7100.72.2

2. TSV ファイルから Copus を作成する

1. のTSV から Copus を作成します。
Copus は Orange の python プログラムが作成する Copus オブジェクトのことかと思われます。

  1. まず、画面左メニューの、Text Mining プルダウンから、Copusを選択します。

  2. 次に 右側のウィンドウにCopus が配置されるので、配置されたCopus をダブルクリックします。

  3. Copus ダイアログが開きます。Browse ボタンをクリックしてダウンロードした TSV ファイルを選択します。
    TSV ファイル上は、9項目ありますが、Corpus 側は、カラム Query だけを 解析対象と認識したようで、
    処理対象のカラムは、Query のみになります。
    Copus編集

3. ワードカウントの前準備として、ストップワードを取り除く

2. で入力データを Copus 化しました。
Copus 化したデータを、Preprocess Text の Input にして、ストップワードを取り除きます。

  1. まず、画面左メニューの、Text Mining プルダウンから、Preprocess Text を選択します。

  2. 次に 右側のウィンドウにPreprocess Text が配置されるので、配置されたPreprocess Text をダブルクリックします。

  3. Preprocess Text ダイアログが開きます。Transformation として、Lowercase を選択し、小文字にします。
    Tokenization で、Whitespace を選択し、キーワードの区切り文字をスペースとします。
    Filtering で、Stopwards としてEnglish を選択、これで英語のデフォルト定義のStopwards が使用されます。
    日本語は用意されていないようで、プルダウンで選択ができませんでした。
    また、Filtering は設定値をいろいろ触ると結構結果に影響します。いい感じになるように調整することをおすすめします。
    Preprocess Text編集

4. ワードカウント

3. で、Stopward が除外されたキーワードが取得できます。
この結果を Bug of words でワードカウントします。

  1. まず、画面左メニューの、Text Mining プルダウンから、Bug of words を選択します。

  2. 次に 右側のウィンドウにBug of words が配置されます。配置されたBug of words はデフォルト設定のままで問題ないので、ダブルクリックしなくてOKです。
    というか設定を変更したとしても、WordCloud の必要な値は変化しないらしく何を設定しても影響がありませんでした。

Bug of words編集

5. WordCloud 描画

4. で、ワードカウントした結果をWordCloud として描画します。

  1. まず、画面左メニューの、Text Mining プルダウンから、Word Cloud を選択します。

  2. 次に 右側のウィンドウにWord Cloud が配置されます。配置されたWord Cloud をダブルクリックします。

  3. Word Cloud ダイアログが開きます。Color Words チェックボックスを ON にすると、WordCloud がカラーに、OFF にするとモノクロになります。
    Save Image ボタンクリックで、WordCloud を画像として保存できます。

WordCloud編集

WordCloud の出力の手順は以上になります。


使ってみた感想

以下、個人的な感想になります。

  • プログラミングができなくても、マイニングの知識は求められる。
    プログラミングができない人にも、触れるかと言うと触れるとは思いますが、マイニング手法に対する知識は必要になるかと思いました。
    過去に多少実装経験があったのでなんとかなりましたが、知識ゼロの人がなんとなく触るのは厳しそうです。1
    [1]ただ、プログラムも書く学習コストに比べると、画面で Widget をぐりぐり触りながら、作っていけるので、
    実装するよりは、学習コスト面で有利かと思います。

  • Google スプレッドシートを直接 入力ファイルにして取り込みたい。
    個人的に Google スプレッドシート を よく使います。
    調べてみた限り公開したスプレッドシートは取り込めますが、非公開のシートを取り込む術はなさそうでした。
    python スクリプトを書けば取り込みできそうではあるので、そのうち非公開シートを取り込むスクリプトを実装してみようかと思います。

  • 簡単に ヴィジュアライズ できるのは嬉しい。
    データのplot実装が面倒だったりするので、GUI 上でデータを食わせて、ヴィジュアライズ できるのはよいです。

  • python の実装と並行して、使うと理解が深まりそう。
    データ処理手順を(メソッドレベル)で理解してないと、気持ちよく触れないですが、
    データ処理手順を理解して、フローに落とし込めれば、プログラム書くよりもインタラクティブに操作でき、
    操作しているうちに理解が深まるのかと思います。
    個人的には今後、実装もするし、GUIツールも触るしという形をとろうかと思います。


参考

以下、参考にした記事になります。
Orange には、アソシエーション分析をするAPIがあるようで、それを使っている方もいるようです。

以上です。

コメント