Hiroyuki Komatsu
komat****@taiya*****
2004年 1月 28日 (水) 02:35:53 JST
At Tue, 27 Jan 2004 18:34:42 +0900, akira yamada wrote: > > ・未確定文字の * によるマスク > > 最初の文字のときだけローマ字が表示されてしまうようです。 > 二文字目以降は「*」になっています。 すみません、これもパッケージングミスでした。 RC1 を差し換えました。 <http://prime.sourceforge.jp/src/prime-el-1.3.1-rc1.tar.gz> 60b9f5ae4717253e4af6efdecd400e99 prime-el-1.3.1-rc1.tar.gz > > ・T-Codeでの単語登録 > > これはうまく働いていないように思えます。 どうもいくつかのバグが複合して発現しているようです。 > 単語登録のための入力を行うとエラーも出ず完了するのですが、 > 登録した読みを入力しても候補に出てきません。 > いったんemacaを終了させて、primeプロセスがいないことを確認し > fgrep '登録した読み' ~/.prime/*をしても > 何もひっかかりませんでした。 > > 実際に登録してみたのは「よな子」→「米子」です。 > 手順としては「よな子」と入力し、スペースキーをたたいて > 登録状態にもっていき、そこで「米子」と直接入力しました。 > このとき~/.prime以下で以下を実行しました: > > $ fgrep 'よな' * > userdict_diff:0 よなご 地名 米子 1075195760 > userdict_diff.log:0 よなご 地名 米子 1075195760 これはミニバッファでの入力が学習されてしまい、肝心の単語登録が されていないようです。 以前対策したはずなんですが、何かの拍子に外れてしまったのかも しれません。直します。 > ところが、登録の段階で「米」「子」と分けて入力すると、 > 「よ」「よな」では候補に出てきませんが > 「よな子」まで入力すると候補に「米子」が出てきました。 > このときの~/.prime以下は次のようでした > > $ fgrep 'よな' * > userdict_diff:0 よな子 未知語 米子 1075195646 > userdict_diff.log:0 よな子 未知語 米子 1075195646 > > ただし、「米」「子」と入力した場合でも > いったんemacsを終了すると候補に出てこなくなりました。 > > このいったんemacsを終了すると、というのは別の状況にもあって > たとえば「私の」「名前は」「中野」「です。」という入力を > 順に行って、それぞれに出てくる候補から選択した直後ですと、 > 「私」「名」「中」「で」を入力するだけで > あとは候補からの選択で「私の名前は中野です。」を入力できます。 > > ところが、emacsをいったん終了させてしまうと > 「私の」とか「名前は」を忘れてしまうようです。 > このとき~/.prime/userdictには > > 0 わたしの 体言 私の > > のようなエントリができています。 現状では学習結果を、一旦メモリバッファに溜めておいてから、まとめて ファイルに書き出す仕様になっています。最後に学習したものを吐き出さずに 破棄してしまっているのかもしれません。しばらく入力を続けていくと どうなりますでしょうか。 また 0.7.x から学習辞書は半静的なものになり、prime プロセスの終了時に 辞書は再インデックス化されるようになっています。この、再インデックス化が 効いていないのかもしれません。 'prime-userdict-update --auto' を 試してみてください。こちらでも試してみます。 もしこれでうまくいくようであれば、prime-el が prime を正しく終了できて いないことになります。 -- あと、T-Code での予測 (lookup_direct) の場合、「よ → 米子」という 読みからの前方一致検索を外してあります。単に必要ないかなと考えていた だけなので、必要であれば追加します。 lib/prime.rb で def lookup_direct (string) + results_prefix = lookup_prefix(string) results_expansion = lookup_expansion(string) results_mixed = lookup_mixed(string) results_overall = lookup_overall(string) result = PrimeWordList::merge_with_label(@context, + results_prefix[0, 3], results_expansion, results_mixed, results_overall) return result end としていただければ、とりあえずは追加されます。 [0, 3] は候補の数です。 お好みでどうぞ。 --debug オプションをつけて起動するか、環境変数 PRIME_DEBUG が 存在すると、PRIME が受け取ったすべてのコマンドをログに書き出すように なっています。 ログの場所は <PRIME_USER_DIR>/logs/debug_<起動時間>_<PID>.log です。 挙動のトレースなどにお使いください。 > いろいろと対応していただきましてありがとうございます。 > ここのところ私一人がめんどうなことを言い続けているので、 > どうも申し分けないのですが、ひとつよろしくお願いします。 こちらとしても、いろいろとバグが見つけられていますので 助かっています。今後もどうぞよろしくお願いします。 -- 小松弘幸 ----------------------- http://taiyaki.org/