GETA の研究
インストール
とりあえずそのままやってみた。debian-woody-testing 特に問題ないと思われ。
libwam データベース(WAM)の作成と低レベルな検索
- WAM
- データベースみたいなもの
- handle
- データベース名みたいなもの
- freqfile
- データ定義ファイル
handle=my-inbox.walkuere.geta.hatoyama.hitachi.co.jp $GETAROOT/sbin/mkw $handle $GETAROOT/data/$handle/freqfile
データファイルの例
- @で始まる行
- 行名、データベースで言うところの行ID
- 数値
- データベースで言うところの値
- その後の単語
- 列名、データベースで言うところのフィールド名
@inbox/1 2 鳩山 1 猿 @inbox/2 3 越生 2 写真
libwam で wam_get_vec(wam, WAM_COL, wam_name2id(wam, WAM_COL, "列名"), &vec, XR_HOSTORDER) で、"列名"を含む行が vec に入る。
libae 連想クラスライブラリ
いろんな方法(定義可能)で、入力された検索文章、によく似た文章を探す。似てるかどうかの判別方法は定義可能。
まず検索クエリの解析を
syminfo *q= wstem("検索文章", wam, WAM_COL, jma, &qlen);
で、それを使って検索
syminfo *r= wsh(q, qlen, wam, WAM_COL, WT_TF, &rlen, NULL, NULL, NULL); for (i=0; i
- 重み
- 文章内の単語の重み。TF/IDFとか。「それぞれの単語の重さが似ている」と「文章が似ている」と判断する……のかな?
- 重み計算定義
- $GETASRC/lib/ae/wt/*.f にあるらしい。*.f を適当に作ったりして、$GETASRC/lib/ae で make install するらしい。フィードバックもできるらしい
libcs クラスタリングライブラリ
q, qlen は文章の配列
cslst = csb(q, qlen, 0, wam, wam_dir, CS_HBC, &nc, 2, NKW);
配列 syminfo *q の内容が類似度によってソートされる。x 個のクラスタに分割したければ、q[num].u.i > (qの全数=qlen)-x の時に、q[num] の前と、q[num]からあと、で分割できる。( sort_cw_syminfo_list を使うと u.i がクラスタ番号に書き換わる )
返値 cslst は、クラスタとクラスタの代表値の配列を持っている。
これおもしろそうだなー。xreaとか AAA! Cafe で入れてくれないかなー。phpインターフェース誰か作ってくれないかなー。