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インターフェース誰か作ってくれないかなー。