[prime-dev: 183] Re: tcodeでの辞書登録

Back to archive index

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/




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