「あいされたー」
Twitterを使ってる人は、自分が誰に愛されてるかチェックしてみてください。
たとえば、カトゆーさんは枕さんに世界で一番愛されてるらしいです><
*今回のネタは、Keyとは無関係です。
*でもKeyに関連した、似たようなスクリプトを作っているのでそのうち公開できると思います。
Twitterとはなんぞや。
TwitterはメッセンジャーやIRCよりもゆるい繋がりを提供してくれるサービス。
返信する必要は無いし、読まれる事を意識する必要も無い。
「おなかすいたー」とか、「会社についた」とか、そんな事を言ってるだけ。
でも、たまにすごく面白い発言があったりするから、やめられない。
その面白い発言をまとめてるサイトにふぁぼったーてのがあります。
わたくし、安眠枕のTwitterはここ。
(ブログで取り上げないような、Keyに関する些細なネタとかをつぶやいてます)
安眠枕の面白発言集はここ。
あいされたー
ある発言が面白いか面白くないかってのは、他の人に発言をfavられる(ブックマークされる)かどうかで決まります。
面白い発言は、より沢山の人にfavられるって事です。
例えば、
AさんがBさんの事を愛しているとすると、AさんはBさんの発言を沢山favるはず。
その割合を数えれば、AさんがどれくらいBさんの事を愛しているのか分かる。
これが「あいされたー」の前提です。
つまり、安眠枕がカトゆーさんを世界で一番愛しているというのは、言い換えると
「安眠枕のfavを数えると、カトゆーさんの発言が一番多い」
と言う事になります。
実際はどうなのでしょうか?
以前、私が作った「ふぁぼかうんたー」でチェックしてみると、カトゆーさんの発言をfavってる割合が一番多いです。。
じゃあ、安眠枕は誰に愛されてるんでしょうか。
調べてみるとこれはひどい。
wing_tさんが世界で7番目に私を愛してくれているものの、カトゆーさんからは一つも愛されていません。私の愛は一方通行だったわけです。
問題点
replyを考慮してないので、favを使ってない人は面白く無いと思います。
今後の課題です。
仕様
コードは全てRubyで書いてます。
まずはTwitterのIDリストを用意します。
そしてTwitterIDリストのユーザーのfavoriteページをクロールし(集め)ます。
(これはかなり時間がかかります。2000ユーザーで10時間ほどです)
次に、ユーザーのらぶぱわーを計算するため、集めたfavoriteの中を検索します。
(例えば、makuraのらぶぱわーを計算するには、集めた2000個のfavoriteの中から、makuraをfavっている人を見つけなくてはいけません。さらにその人がどれくらいmakuraをfavっているか計算します)
これは、現在の所総当りでやってますが非常に効率が悪いです。
O(n^2)くらい時間がかかりそうです。
Trieでデータ構造を持てばO(1)より少し多いくらいになるはずなので、データ構造を見直す必要がありそうです。
でもTrie構造を自作とか死ねるので、RubyにDouble-Arrayのライブラリがあればそれを使いたいと思ってます。
最後に、全ユーザーのらぶぱわーの平均、標準偏差、偏差値を計算して終わりです。
これは一瞬ですが、バラツキが激しいので偏差値が100を超える人が居たりして面白いです。
らぶぱわー、偏差値はあらかじめデータを用意しておきますが、実は
「○○○さんは○○○さんに、世界で○番目に愛されています。」
は動的とってきます。
最初の工程で同じ事をしているので無駄な気がしますが、全部静的に吐き出すスクリプトだと面白くないので……。
ふぁぼかうんたーを動作させると、データが自動的に蓄積されるため、データベースは日々増え続けています。
ですから、「○○○さんは○○○さんに、世界で○番目に愛されています。」は動的に変わっていたのです。
処理速度の問題になりますが、オーダーがTwitterIDリストと同じなので(現在のところ常に2000)CGIのレスポンスもまあまあだと思います。
今後
リプライを考慮し、もっと良いfavのデータベースが構築できればクラスタを発見できるかもしれません。
ツイート
このカテゴリの最新記事