ということで少し考えてみた。
- タグ
- 日記というタグに意味は無い。内容の情報に付けるものがタグ。
- カテゴリ
- 日記というカテゴリに意味はある。内容がどのような情報の類に属するかを分けるものがカテゴリ。
感覚としてはより細かなものについての指定するものがタグで、大まかな内容について指定するものがカテゴリかな。じゃぁ記事を書く上で内容は決定されるのだから、タグは記事の内容から従属的に決まるもの(その妥当性はとりあえず無視すれば)。記事内容から従属的に決定されたタグを集めて、タグネームとそのタグネームが付けられた記事の数についてのリストを作る。このタグリストを記事数でソートして多くの記事で付けられているタグをカテゴリとして採用する。こんな感じでどうだろうか。
my $categorys; my $tags; my @files = qw("itemfile.xml"); foreach my $file (@files) { my $item = &get_item($file); $item->{tags} = &get_tags($item->{contents}); foreach my $tag (@{$item->{tags}}) { $tags->{$tag}++; } } my $i = 0; foreach (sort{$tags->{$a} <=> $tags->{$b}} keys %{$tags}) { if ($i > 10) { next; } else { $categorys->{$_}++; $i++; } }
擬似コードをかいてみるとこんな感じだろうか。