yusuk****@cheru*****
yusuk****@cheru*****
2004年 2月 8日 (日) 01:17:41 JST
田畑です anthy-5007をリリースしました。 共起関係のデータベースにアクセスする部分をanthy-4300の 頃に壊していたのを修正しました。とは言っても「風呂が熱い」 「夏は暑い」等の10個ぐらいの用例しか用意していないので、 あんまり役に立ちません。 共起関係のデータベースをどうやって作れば良いのかは長いこと考えて いたのですが、hashを使おうという結論を固めつついます。 今は(単語1、単語2、[関係])という組を共有の辞書(anthy.dic)と 個人辞書(~/.anthy/*)に入れるコードがあるのですが、用例が 増えた場合の検索コストやメモリの量、複数の種類のデータベースを 用意する時の手間が心配なので、変更することを検討してきました。 基本的には大きな配列(a)とhash関数(h)を用意しておいて、 a[h(風呂, 熱い, 修飾関係)] が真か偽かで判断しようと思います。 計算の時間が定数なのと、余計なデータ構造の用意が不要なのが良いです。 これを共有辞書としてのread onlyのものと、個人辞書として 書き込めるものの両方を用意することになると思います。 hash関数の衝突の心配をしていたのですが、確率を十分に下げることが できそうなので、この方向で行こうと思います。 ;hashの衝突: ; 偶然で h(風呂,熱い) = h(布団,テレビ) のような ; 一致があることを想定してました。 ;この確率を下げるためには ;*配列を大きくする ;*二つ(以上)のhash関数を用意して、a[h1(x)]かつa[h2(x)]の時に真とみなす ;*二つのhash関数を用意してa[h1(x)] = h2(x)の時に真とみなす ;などを思い付いています。 ;;という感じでanthyの共同開発者/アルゴリズム屋さん募集中 -- CHAOS AND CHANCE! Yusuke TABATA (yusuk****@cheru*****)