全文検索は一種のタギング

Thunderbird 2.0では「メッセージタグ」というタグ機能が付けられるようだ(http://japan.internet.com/webtech/20060607/5.html)。試していないので具体的な概念やユーザインタフェースは分からないが,タグというからには1つのメッセージに複数のタグを付与することで分類が可能なはず。現在はカテゴリ(フォルダ)があって,そのいずれか1つに必ずメールを分類しなければならないのに対して,複数のタグを付与することができるというのは複数のカテゴリに分類する(=複数のフォルダに入れる)ことができるといえるから,カテゴリ分類の素直な拡張(1カテゴリ→複数カテゴリ)と考えられる。

「分類する」というのは情報の探索(=情報の検索)を効率的に行えるようにするための手法なのだと思う(少なくともここでは)。Webのサーチエンジンを見てみると,Yahoo!dmozのようなディレクトリ型サービスはまさしく上述のメール分類のタグと同じだ。私たちがメールを見てこれがどのカテゴリに分類すれば(どのタグを付与すれば)いいのかを判断するのと同様にして,Yahoo!の中の人はWebサイトをカテゴリに分類する。複数のカテゴリを付与できる仕組みになっていれば,それはタギングになる。明らかにタギングの方が便利だが,本質的には大して変わらない。

そうそう,タギングといえば元々ソーシャルネットワークというコンテキストで,写真やブックマークの共有で広く認知された用語だ(Deliciousとか)。そこではカテゴリ分類のように階層化されたタグは通常用いない。必要がないからだが,逆に言えばタギング命名を階層化できればそれはカテゴリ分類に化ける(それこそ「プログラミング > Perl」なんていう(簡単な区切り文字を使った)ベタなテキストをタグとして付与できるだけでも,機能すればいいと思う)。だから,階層化という点でも,複数付与という点でも,カテゴリ分類とタグ分類というのはそれほど差があるわけではない。それらは同じようなものだ。そうだろう?

実は全く異なる,と思う。それらに技術的な差はおそらくないが,カテゴリという概念で考えられる範囲では,タグという概念で考えられることを認識できない。つまり,カテゴリでは考えられないがタグでは考えられることがある(逆もあるかもしれないが)。あるいは,タグに慣れていれば思いつくがカテゴリでは思いつかないサービスがある*1

では,なぜ異なるのか。もう一つのWebのサーチエンジン,すなわちGoogleやgooのような全文検索型サービスがその例だ。Googleは全てのWebページにそれぞれ厖大な量のタグ付けを行っている。Yahoo!で付くタグはせいぜい1つか2つ,ソーシャルブックマークで付くタグもたかだか10個などという数であろうが,Googleが1つのWebページに付けるタグは100とか1,000とか10,000もあるのだ。何のことか気付いただろうか?1つのWebページ中の単語の数だ。

話が分かりやすくなるので,全文検索エンジンが行っているインデクシングを説明しよう*2全文検索エンジンは事前に各Webページを取り込むと,文章を単語ごとに区切って*3,そのWebページに存在する全ての単語(助詞の「は」「を」など検索に無意味な単語は除く)をデータベースに保存しておく。なお,登録されるデータは「どのWebページにどの単語があるか」ではなく「どの単語がどのWebページにあるか」(本の最後にある索引を思い浮かべればよい)だが,重要なことはそのWebページに出現する全単語が登録されていて検索可能であるという点だ。

これはページ内の全単語を使ってタグ付けをしているのと同義だ。そして,タグ付けは全て自動的に行われ,上述の他の例のように人の手を介すことはない。そして,Yahoo!に対するGoogleの優勢が証明しているように,自動的に大量のタグ付けを行うことはうまく機能するようだ。

カテゴリ分類(や他のメタデータ)を自動化大量タグ付けで置き換えるという発想は色んなところに応用できると思う。画像や音声に対しては難しいが,少なくとも文字データに関しては何らかのキーワードが取り出せるだろう。例えばGoogleは本やメール,ハードディスク内の全ファイルに対してそれを行っていたり行おうとしている。タグの量や検索結果が多くなれば重要なものと重要でないものの古いわけ技術が必要とされており,それがGoogleページランクでありソーシャルブックマークなどでのタグ名の表示サイズを変えたりするという現在進行形の技術なのだ。

とりあえず,カテゴリ分類という言葉が出てきたら(階層化拡張された)タギング分類という言葉に置き換えて考えてみるというのはどうだろうか。

*1:(カテゴリやタグといった)用語や概念に対して抱く人間の認識の限界の問題であると思う。きっと私たちは普段はものごとを常識的にしか考えることができない生き物なのだ。

*2:インデクシング自体は本論とは本質的に無関係だ。単に検索コストをO(1)にするための計算量の最適化技術に過ぎない。

*3:英語の場合はスペースなどの記号で分割すればいい。日本語の場合は形態素解析を行って分割する。