さて,クラスタリング関数 csb は,syminfo 型リストに格納されたデータ集合(文書集合)をクラスタリングしていました. csb に限らず,GETA のライブラリ関数は, データの集合を表現するのに syminfo 型リストを使います. よって,他の GETA ライブラリ関数で何らかの処理をした後のデータ集合を そのまま csb に渡してクラスタリングをすることができます. 本節では,検索結果のクラスタリングを例に csb の応用例を紹介します.
まずは,実行例をみてみましょう. 「出場停止処分」というキーワードで毎日新聞94年と95年の記事を検索し, 上位15文書をクラスタリングして3つのグループに自動分類してみます.
0 54112 サッカー W杯・アメリカ大会 イタリアのタソッティ、公式戦8試合出場停止 0 4468 サッカー Jリーグ ジーコが4試合出場停止に 「乱暴」と「審判侮辱」−−規律委 0 43431 サッカー Jリーグ 清水のレオン監督とコーチ、出場停止 0 20330 サッカー Jリーグ 浦和の田口に出場停止処分 0 123939 サッカー Jリーグ 磐田の吉田ら3人、開幕戦出場停止に 0 104605 アイスホッケー 新王子製紙の成田を20試合出場停止処分 0 97340 ★スポーツ調停委に提訴か−−ドーピングで出場停止処分の中国・水泳選手 1 72691 自動車 F1 シューマッハーはベネトンに残留 1 58154 ★自動車 F1のミヒャエル・シューマッハー、ドイツGPから2レース出場停止 1 184270 札幌国際Hマラソンで、真木和選手が薬物陽性 優勝を取り消し、3カ月間の出場停止 1 191784 陸上 淡路島女子駅伝 出場停止解けた真木和がエントリー 2 94858 中国水連が処分 呂彬ら7人、出場停止2年間−−ドーピング違反確定 2 91251 水泳 「処分は不当」と中国・楊が抗議の書簡−−ドーピング疑惑での出場停止 2 98224 出場停止、4年から6カ月…中国で11選手処分――ドーピング事件 2 96380 中国、残る4選手も出場停止処分に−−ドーピング問題最初のグループ(0番)は,主にサッカーに関連する話題です. 一方,最後のグループ(2番)は,中国の水泳選手のドーピングに関する話題です. 残るグループ(1番)は,F1と陸上関係の話題です. このように「出場停止処分」にもいろいろな分野の話題があることがわかります. 多少の例外はありますが, クラスタリングが同じ分野の話題をまとめているところに注目してください. 検索結果を自動分類することで, ユーザは検索結果の概要をつかむことができます. また,似ている記事が並んで表示されますので, 検索結果の見通しも良くなります.
以下は,それぞれのグループを代表する単語です.上位15単語をリストしました.
0 244 試合 0 376 リーグ 0 447 出場 0 1193 停止 0 1 、 0 911 処分 0 5717 退場 0 117 戦 0 2 日 0 14 2 0 147 対す 0 1252 吉田 0 749 サッカー 0 213 委員会 0 1309 行為 1 7837 GP 1 14839 シューマッハー 1 1 、 1 483 自動車 1 16212 ベネトン 1 521 ドイツ 1 6908 F1 1 447 出場 1 1615 レース 1 1193 停止 1 1132 英国 1 25665 ミヒャエル 1 12878 真木 1 234 優勝 1 3756 残留 2 84 中国 2 4356 水泳 2 4 年 2 911 処分 2 43 間 2 10254 楊 2 1 、 2 136 メートル 2 226 女子 2 1088 北京 2 2566 四百 2 3808 金メダル 2 152 選手 2 8062 競泳 2 10077 ドーピングここからも各グループの概要がつかめると思います.
実際にプログラムを作ってみましょう. キーワードからの検索については, 「libae チュートリアルの 「libae を使って電子メール検索システムを作る」 で学びました. そこで作ったプログラム msearch2.c を改造して 検索結果の自動分類を実現してみましょう.
msearch2.c の核は libae のライブラリ関数 wsh でした.
r = wsh(q, qlen, w, WAM_COL, WT_SMART, &rlen, NULL, NULL, NULL);検索結果は syminfo 型リストの *r に返ります. あとは,このリスト *r を関数 csb に渡すだけです.
cslst = csb(r, rlen, 0, w, WAM_ROW, CS_HBC, &nc, 2, NKW);たったこれだけで,検索結果のクラスタリングが実現できます. 結果を表示するコードを書いてプログラムを完成させてください.
「5: クラスタリングアルゴリズムの詳細」に進む
「3: クラスタの代表単語を表示する」に戻る
「1: はじめに」に戻る