今年自分が日記でよく使ったキーワードを調べてみた

今年書いたはてなダイアリーの日記のデータを Perl のプログラムで取得して解析して、自分がよく使ったキーワード(日記文中でキーワードリンクされている語とその数)の一覧というのを抽出してみました。

僕の日記の結果はこうでした。

映画    15
日記    9
グラフ  8
はてな  8
楽しみ  7
最近    7
演技    6
Perl    6
会社    5
Emacs   5
(以下略)

映画ばっかり観てたんだなぁw そして、はてなのいろいろを楽しみにしていた最近だったんだなとw

えーと他の人の場合はどうなのかなと思い、勝手ながら id:e_ina さんの今年の日記のデータを解析させていただきました。

テレビ  59
日本    48
最近    38
ネット  35
会社    33
携帯    32
今日    31
仕事    30
情報    29
au      29
重要    28
(以下略)

日本 が2番目にくるあたり、さすがですね。(すんません適当なコメントで。。)でもなんか面白い。

えーとさらに他の人の場合はどうなのかなと思い、誠に勝手ながら id:sk8 さんの今年の日記のデータを解析させていただきました。

Subaru        25
Rally         23
アーティスト  15
9s            12
Apple         8
インストール  6
自転車        5
iPod          5
夏至          5
岩井俊二      5
PowerBook     5
バッテリー    5
Mac           5
輸入盤        4
(以下略)

id:sk8 さんの日記は更新のたびに読ませていただいているのですが、 Subaru が1位にくるとは意外でした。と思って検索してみたら、 Rally のデータでひっかかっているんですね。 Apple についていろいろ熱い想いを書いておられたのは記憶に残っていますw


ちなみに、キーワードの横の数字(キーワードリンクされた数)は、はてなダイアリーの 日記の設定 − キーワードの自動リンク設定 の設定内容によって変わってきます。
ぶわっと書いたので汚いコードですが、 Perl のプログラムです。ちょっとしかテストしてないですが、ちゃんとキーワードを拾って数を数えているはずです。。たぶん。
#追記: いや、なんかあやしいな..数が合っていないかも..

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;

my $userid  = "s_kanda";
my $yyyy    = "2006";
my $outfile = "keyword2006.txt";

my $ua = LWP::UserAgent->new;
$ua->agent('PerlSample/0.1');
$ua->timeout(10);

my $addres = "http://d.hatena.ne.jp/$userid/archive/";
my $response = $ua->get($addres);
if (! $response->is_success) {
    die "get error.\n $addres\n";
}
my @list = split( /\n/, $response->content );
my @yyyymm;
foreach my $wk (@list){
    $_ = $wk;
    if(/^$yyyy \| \<a/){
        foreach my $mm (/(\d{2})\<\/a/g){
            push( @yyyymm, $yyyy.$mm );
        }
        last;
    }
}

$addres = "http://d.hatena.ne.jp/$userid/";
my %keywd;

foreach my $ym (@yyyymm) {
    my $url = $addres.$ym;
    print "$url\n";
    $response = $ua->get($url);
    if (! $response->is_success) {
        die "get error.\n $url\n";
    }
    $_ = $response->content;
    foreach my $wk (/\<a class\=\"keyword\" \S+\"\>(\S+)\<\/a\>/g){
        if( exists $keywd{$wk} ){
            $keywd{$wk}++;
        } else {
            $keywd{$wk} = 1;
        }
    }
}

open FOUT, ">$outfile";
foreach my $key (sort by_score keys %keywd) {
    print FOUT "$key\t$keywd{$key}\n";
}
close FOUT;
print "end.\n$outfile wrote.\n";

sub by_score { $keywd{$b} <=> $keywd{$a} }