寺西です。

ふと思ったんですが、フレーズ検索って N-gram ですよね。

N-gram ベースの検索エンジンの説明で、N-gram とは 文章を N文字の
文字列として区切る方式とか説明されていることが多いのですが、
これが単語単位であっても N-gram には違いないはずです。

N-gramモデルとは、「ある文字列の中で、N個の文字列または単語の組み
合わせが、どの程度出現するか」を調査する言語モデルだから。
ちょっと強引かもしれませんが、少なくとも N-gram モデルに似たもの
であるとは言えるでしょう。

Namazu のフレーズ検索だと、2つの単語からハッシュを算出しますから、
bi-gram ということになりますか。

N-gram の利点のひとつで検索漏れがないというのは、単語分けの時点で
形態素解析の欠点の漏れが生じて失われてはいます。
逆に、フレーズ検索だと N-gram の欠点のひとつのゴミが含まれるという
特徴はしっかり出ています。
# ダメじゃん。

(また、ゴミがでるのは更に16bitハッシュを使っているので、ハッシュの
衝突によるものもあります。)

N-gram ベースの検索エンジンは、シグネイチャ型のインデックスを使う
ことが多いので、シグネイチャ型の特徴を N-gram ベースの検索エンジン
の特徴として紹介されることも多いのですが、
Namazu は転置インデックス型なので、フレーズ検索が N-gram でも、
やっぱり転置インデックスの特徴がでてます。(当たり前)

では、分かち書きをせずに文字単位の N-gram でインデックスを作れば、
転置インデックス型ではあるが巷の N-gram ベースの検索エンジンぽく
なったりしませんかね?
実験程度なら比較的小規模な修正で対応できそうな気はします。
(スコアの計算をどうするとかはあるのですけどね。)

Namazu では文字(単語)の文書中の位置は記録していません。このため
N-gram での検索結果から位置による絞り込みはできませんから、やっぱり
ゴミが多すぎてダメですかね。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  [EMAIL PROTECTED]
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E

_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@namazu.org
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja

メールによる返信