yusuk****@cheru*****
yusuk****@cheru*****
2003年 10月 12日 (日) 01:40:42 JST
田畑です。 anthy-4609をリリースしました。 *辞書ファイルがないときに落ちるのを修正 *プリエディットがあるときにundoできないように修正 この手の修正は必要なのですが、接頭辞と接尾辞が付いた時の 変換精度がいまいちなので、特にupdateは勧めません。 そして、こっからが本題ですが、Anthyが接頭辞、接尾辞を 付けるときのやりかたについて説明しておきます。 接頭辞、接尾辞は付けれる時にかならず付けてよいというもの ではなくて、その候補がありえそうな時だけに使う必要があります。 たとえば、「あめ」という単語に対して、「あ」を接頭辞だと判断して 「亜目」なんて候補を割り当てると、多くの場合、無駄な候補を 大量に作ってしまいます。 しかし、逆に「あねったい」に対しては「亜+熱帯」を生成できれば 良いのですが、「亜目」を出さないことと両立するような器用な ことはできないので、付属語付きの単語の多くは辞書に名詞として 登録されています。 という感じで、色々とややこしいため、接頭辞、接尾辞を付けた 候補を出すのは数詞と人名と地名だけにしておいても良いのかも しれないですが、最近迷っています。 このへんの処理はどうなっているかと言いますと、文節の構造に スコアを付けることによって実装しています。anthy-agentコマンドを 使って下記のようにやると見ることができます。225とか119とか 出ているのが構造のスコアで、その右にあるのが候補のスコアです。 [yusuke @ illusion anthy]$ anthy-agent ichirinn (2 ((UL) "いちりん" -1 -1) cursor) (space) (3 ((UL RV) "一輪" 0 14)) PRINT_CONTEXT |いちりん いちりん(一輪:(1,225)111,221 ,位置輪:(,119)13,414 ,位置厘:(,119)13,414 ,一厘:(,119)9,120 ,市輪:(,119)4,826 ,市厘:(,119)4,826 ,壱輪:(,119)4,509 ,壱厘:(,119)4,509 ,壹輪:(,119)4,192 ,壹厘:(,119)4,192 ,いち輪:(,119)532 ,いち厘:(,119)532 ,いちりん:(N,0)2 ,イチリン:(N,0)1 ,): 「いちりん(名詞)」は225点 「いち(名詞)+りん(数接尾辞)」は119点←バグってる。もっと点数を下げるべき 「いち(数詞)+りん(数接尾辞)」は119点 このスコアは長い付属語が付いていたり、接頭辞が付くことによって 低くなります。そして、このスコアが低くなるとその構造から候補の 生成が行なわれなくなります。この設定は anthy/src-main/compose.cのanthy_make_candidates()で : /* limitよりも低いscoreを持つseginfoからは候補を生成しない */ : if (se->nr_seginfo) { : limit = se->si[0]->score / 3; : } : for (i = 0; i < se->nr_seginfo; i++) { : if (se->si[i]->score > limit) { : proc_splitter_info(se, se->si[i]); : } : } というふうにやってます。もっとも高いスコアを持つ構造の1/3を 越えてない構造からは候補が出てこないようになっています。 接頭辞、接尾辞の扱いの調整ができたら、となりの文節の構造も見て スコアを決めるのもやろうかなと思ってます。