libcs チュートリアル

  1. はじめに
  2. クラスタリングプログラムを作る
  3. クラスタの代表単語を表示する
  4. 検索結果を自動分類する
  5. クラスタリングアルゴリズムの詳細

4  検索結果を自動分類する

さて,クラスタリング関数 csb は,syminfo 型リストに格納されたデータ集合(文書集合)をクラスタリングしていました. csb に限らず,GETA のライブラリ関数は, データの集合を表現するのに syminfo 型リストを使います. よって,他の GETA ライブラリ関数で何らかの処理をした後のデータ集合を そのまま csb に渡してクラスタリングをすることができます. 本節では,検索結果のクラスタリングを例に csb の応用例を紹介します.

4.1 実行例

まずは,実行例をみてみましょう. 「出場停止処分」というキーワードで毎日新聞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   ドーピング
ここからも各グループの概要がつかめると思います.

4.2 プログラム例

実際にプログラムを作ってみましょう. キーワードからの検索については, 「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: はじめに」に戻る