[Anthy-dev 88] splitter

Back to archive index

yusuk****@cheru***** yusuk****@cheru*****
2003年 2月 24日 (月) 01:28:40 JST


田畑です

検索を深くしたことと、文節に切るところの説明をしときます。

anthyでは文節の基本単位をword list(struct word_list)と
呼んでます、これは接頭辞+ 自立語 接尾辞+ 付属語+で
構成されていて変換を開始したときに全部作られます。

たとえば、「かく」という単語に対しては
動詞終止形として解釈したものと、名詞(「各」)として
解釈したもののの二つが作られます。

#興味のある人は src-splitter/wordlist.c, wordseq.c
#mkanthydic/*depword* などを見てください。

そして、word_listはmetaword(struct meta_word)にwrapされて
metawordはextentの中にリストとしてつながれます。

#metawordは「いれたて(のお茶)」のような自立語の結合した
#文節などを処理するために用意してます。
# src-splitter/metaword.c

extentは文の中の部分文字列を意味していて、
「わたしのなまえは」という文字列には
「わ」「わた」「わたし」「わたしのな」
「た」「たし」「たしの」「たしのな」
「し」「しの」「しのな」「の」「のな」
「な」「ま」「まえ」「まえは」「え」「えは」「は」
といったextentがあって、それぞれがスコアを持ちます。

検索の時には「わたしの」+「なまえは」で一番スコアが
高いといったことを計算します。
#src-splitter/evalborder.c参照
去年の5月まではmetawordに対して検索していて、
検索の分岐が数十になることも多々あったので、
深さを3で抑えていました。
その後extentを導入したため、分岐が10までいくことも
ほとんど無くなっているにも関わらずそのままにしてました。

そんなわけで、深さを4まで増やしてみたところ、
いくつかの区切り間違いが消えたのでそのままリリース
してます。

splitterはいつまでたってもボトルネックなので、
これからも調整や新しい技術の導入が必要な
領域だと思ってます。

--
 PUBLISH OR PERISH!
  Yusuke TABATA (yusuk****@cheru*****)



Anthy-dev メーリングリストの案内
Back to archive index