In article <63641i$b...@sakura.kudpc.kyoto-u.ac.jp> w55...@sakura.kudpc.kyoto-u.ac.jp (Ozawa Yoshiaki) writes:
> Date: 29 Oct 1997 01:37:54 GMT
>
> 京都大学大型計算機センターの小澤です。
>
> freeWAIS-sf-2.1.2 の waisindex についての質問です。
>
> waisindex のオプションで -t fields を指定する場合,fmt ファイルを作
> る必要がありますが,index type の指定の,stemming の意味と,SOUNDX と
> PHONIX の違いがわかりません。
stemming では、word の語尾変化をいくつかの処理ルールに従い置換していく
ことで縮退させ、異なる word を同一視可能かどうかを判断します。
例えば、
/*** stemmer_test.c ***/
#include <stdio.h>
#include "stemmer.h"
void
main()
{
char buf[1024];
while (1) {
gets(buf);
printf("%s --> ", buf);
if (Stem(buf) == TRUE)
printf("%s\n", buf);
else
printf("ERROR!!\n");
}
}
/*** end of stemmer_test.c ***/
上記のようなコードを書いて、
% gcc -o stemmer_test stemmer.o ../ctype/ctype.o stemmer_test.c
% stemmer_test
として入力した word がどのように置換されるかを試して見て下さい。例えば、
books --> book
hacking --> hack
などと置換されます。
次に、soundex についてですが、"aehiouwy" 以外の文字について、ある種の数値
を割り当て、その数値に従い、word から最大 4文字の文字列コードを計算します。
phonix は、符合化する文字数が 8文字になっています。どちらも、発音上の類似性
を判断するメカニズムです。
% gcc -o soundex_test -DTEST soundex.c
% soundex_test
として符合化される様子を見て下さい。
war --> W600 W0000000
warry --> W600 W6000000
上記例では、war, warry は発音上、同一 word と見なされることになります。
因みに、soundex/phonix の呼称は、同義語としてどちらか一方が使用されることが
多いようです。
> もう一つ,データのフィールドに "H-I-1", "F-4", "D-VI-3" などのコード
> が入っています。このフィールドのインデックスを作ると,H-I-1 の検索は
> xxx=(H and I and 1) でできるのでしょうか。一文字の英数字はストップワー
> ドになるので無理ですか。waisindex のオプション -stop はすべてのインデッ
> クス作成に対するものですし。
こちらは、使用するデータベース名が foo ならば、明示的に stpoword と見なす
word を一行一単語で記述した foo.stop なるファイルをインデックスの事前に用意
して置きます。そこで、例えば、空のファイルなどを作成しておけば、
freeWAIS-sf-2.1.2 標準の stopword list は使用されないのですが、何故か
一文字の alphabet はインデックスはされません。
# お役に立てなくてすみません。