Hiroyuki Komatsu
komat****@taiya*****
2004年 1月 24日 (土) 22:49:10 JST
At Sat, 24 Jan 2004 20:54:16 +0900, akira yamada wrote: > 正しい直し方はよくわからなかったのですが、 > 以下のような感じにして試してみています。 > > --- prime.rb.orig 2004-01-24 13:50:16.000000000 +0900 > +++ prime.rb 2004-01-24 20:52:59.000000000 +0900 > @@ -127,11 +127,13 @@ > end > > def lookup_hybrid (pattern) > + results_mixed = lookup_internal(pattern, :lookup_mixed) > results_prefix = lookup_internal(pattern, :lookup_prefix) > results_exact = lookup_internal(pattern, :lookup_exact) > + results_exp = lookup_internal(results_exact.last.value, :lookup_expansion) > ## FIXME: Delete the Magic Numbers. > prefix_length = 10 - [results_exact.length, 7].min > - result = PrimeResult::merge(results_prefix[0,prefix_length], results_exact) > + result = PrimeResult::merge(results_exp, results_mixed, results_prefix[0,prefix_length], results_exact) > return result > # return result.to_text > end :lookup_expansion の第1引数を、results_exact.last.value にしないと いけないのはバグですね。直します。 本来なら、T-Code では、lookup_prefix と lookup_exact は必要ないはず なのです。しかし、prefix は、現状の expansion と mixed では学習辞書を 活用していないため必要であり、exact の上記のバグのために必要になって います。今はこのへんをいじっているところなので、ちょっとお待ちください。 At Sat, 24 Jan 2004 21:48:54 +0900, akira yamada wrote: > とりあえず変換はできていますが、 > この直し方だとちょっと重い感じですね。 > # あるいはしょうがないのかもしれませんが。 mixed が重い原因だと思います。混ぜ書き辞書を持たずに実現しているので、 内部で何度も辞書引きをしています。 > あとで気付いたのですが、 > 「大じょうぶ」→「大丈夫」は可能ですが > 「大じょう夫」→「大丈夫」は出てこないようでした。 > > こういうケースをサポートする可能性はありますでしょうか? サポートしたいと思っています。ただ、したいとは思っていますがどこまで 実現可能かはちょっと不明です。 mixed のかなりおおざっぱなアルゴリズムは、漢字を読みに変換して、その 組み合わせから、辞書引きを行っています。つまり、「大じょう夫」なら 「{だい, おお}じょう{ふ, おっと}」として検索しています。 この場合は 「夫=ぶ」というデータがないために検索に失敗しています。 同様に「神な川」の変換も失敗します。なぜなら「神 = か」というデータが ないからです。しかし「和か山」の変換は可能です。こちらは「和 = わ」, 「山 = やま」というデータが登録されているからです。 「大{場, 上, 丈, ...}夫」としてもいいのですが、「じょう」と読む漢字は 80近くあるため、速度的にさらに遅くなることを懸念しています。 -- 小松弘幸 ----------------------- http://taiyaki.org/