あの本を読んで、単純ベイジアン分類器とデータクラスタリングの2章分の機能をサイトに移植したのだが、 データクラスタリングの章は、根本的なところで、テキストから抽出する単語の頻出度データの構造が悪い。 セガランのクラスタリング実装では、Big brown fox jumps over the lazy dogとNow is the time all the good men stand for America. という2つのテキストがあった場合、出現する全部単語で列を作って 1 -> 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0と 2 -> 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 のようなテーブルを作ってクラスタライングを実行することになる。ところが、大量の文章を元にこのデータ 構造を作ろうとなると、それこそ、普通の辞書に載っているだけの単語が出現することになって、 元データの1行の列数が数万とかとんでもないことになって処理が困難になる。
その後でBayonを使ってみてBayonのデータ構造がかなり違っていることに気づいたのだが、Bayonの場合、入力データは Big 1 brown 1 fox 1 jumps 1 over 1 the 1 lazy 1 dog 1 Now 1 is 1 the 2 time 1 all good 1 men 1 stand 1 for 1 America 1 みたいな記述になっていてデータが単純。あの本の批判には、Pythonのシンタックスがおかしいという他に Pythonによる実装例だとスケーラブルな処理ができなくなるというのがあるんだけど、まあ、その批判も 実際に試した結果から言っているものではないな。上のデータ構造はセガランはベイジアン分類器でも 使っているが、そもそもスケーラブルな処理をこなすためにはこのデータ構造そのものが問題でPython 云々の問題ではない。ただし、まあ、あのレベルの本だとそこを含めて判って当然なんだろうと思う。