先日、久々にグーグルサジェストをキーワード + a-zで回すシェルスクリプトを動かしてみました。動きました。で、それで得た複合語をカウントするPHPのスクリプトも作成していたのですが、それも動きました。もっとプログラミングをしたいのですが、そんな暇はありません。が、それでも動かさなければならない理由がありました。

やりたいのはグルーピングしたキーワードの複合語を収集し、複合語をカウントしすることで共通キーワードを抽出するということです。これだけではよくわからないと思うので簡単に説明したいと思います。

まずは、プログラミング言語名というグループで複合語をグーグルサジェストで取得します。選んだのは「php」「javascript」「python」「perl」です。いずれも複合語にa-zは指定せず単体(ex. php)で検索した場合の複合語です。

php
php 配列
phpstorm
php for
php 配列 追加
php substr
php 正規表現
phpmyadmin
php empty
php研究所

javascript
javascript 入門
javascript 配列
javascript push
javascript substr
javascript foreach
javascript for
javascript replace
javascript 正規表現
javascript if

python
python 入門
python for
python print
python 正規表現
python インストール
python if
python グラフ
python 配列
python 四捨五入

perl
perl 正規表現
perl int
perl mkdir
perl switch
perl exists
perl 比較演算子
perl split
perl 配列
perl 入門

どのプログラミング言語名にも共通した単体の複合語があります。「配列」「正規表現」ですね。「入門」というキーワードもphp以外に共通しています。プログラミングを学ぶ上で、これらのキーワードが重要になってきたり、コンテンツを提供するうえでこれらのキーワードの情報を求めている人が多いんだなというのはわかりました。さらにいうと、今後も新しいプログラミング言語はでてくると思います。そのときにこの共通の単体複合語が要になってきます。つまり、

新しいプログラミング言語 + 配列
新しいプログラミング言語 + 正規表現
新しいプログラミング言語 + 入門

なんかですね。今回は簡単な例なので、想像のつく範囲なのですが1キーワードで何十何百というキーワードを取得することになります。これを機械的に処理するだけで、新しい発見があるというのは素敵なことなんじゃないかというのが、冒頭にも挙げた「それでも動かさなければならない理由」になります。

で、動かしてみて気づいたことは、複合語を半角スペースでぶった切ってカウントしているので3ワードの複合語の場合、意味が通じない(通じにくくなる)ことです。例えば、

メインキーワード 乃木坂 46

だと「メインキーワード」「乃木坂」「46」でカウントしてしまいます。「乃木坂」はわかるのですが「46」というキーワードが宙に浮いたような感じになります。まあ、このプログラムで正確な答えを求めているわけではないので現状で十分なのですが、実際に動かしてみないと見えてこないものがあるなと。