Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

question: waisindex

3 views
Skip to first unread message

Shigeru Ishida

unread,
Nov 5, 1997, 3:00:00 AM11/5/97
to

石田@インテック・システム研究所です。

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 はインデックスはされません。

# お役に立てなくてすみません。

--
ish...@isl.intec.co.jp

0 new messages