[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: tamagoについて



井上です。
なかなかご本人からの返事がこないのですが、情報の価値が高いので無断転載
します。
MLに流れたメールなので罪は軽いかな、と。

----
From: KATAYAMA Yoshio <kate@...>
Subject: [tamago:00329] Re: voice feedback of IM 
To: tamago@...
Date: Fri, 28 Jul 2000 19:12:20 +0900
Reply-To: tamago@...
Message-Id: <200007281012.AA03462@sims211.tokyo.pfu.co.jp>

片山@PFUです。

Date: 25 Jul 2000 00:37:44 +0900
From: Koichi INOUE <inoue@...>

>現在私たちはBilingual Emacspeak ProjectというEmacs音声化プロジェクトを行っ
>ています。

>http://www.argv.org/bep/

見てみましたが、非常に面白そうなプロジェクトですね。

>Emacs側のinput methodという機構そのものにはキー入力を受け取ったり候補を
>表示する等のインターフェースは含まれていないような印象を受けたので、実相
>はEGGの内部関数にadviseする形になるかと思います。

>そこで質問なのですが、
>EGGから変換候補を表示に即応して受け取るコードを書くには、どのあたりから
>読み始めるのが適当でしょうか。

egg-cnv.el が漢字変換部分で、egg/*.el が変換サーバーと通信する部
分です。今回の目的では、egg-cnv.el の関数に advise するだけでよ
いと思います。変換関して対象となりそうな所は、

    変換開始(egg-convert-region)
    前/次候補(egg-next-candidate-internal)
    メニューによる候補選択(egg-select-candidate-internal)
    文節延ばし/縮め(egg-enlarge-bunsetsu-internal)

だと思いますが、メニューによる候補選択は使われないかも知れないで
すね。

この他にカーソルの移動時も読み上げが必要ではないかと思いますが、
如何でしょうか。

tamago の中身に手を付けず、advise で行なうのでしたら、

[変換開始]
egg-convert-region で挿入されたテキストから先頭文節((point) の
文節)を取り出すのがよいと思います。この文字列は、

    (egg-get-major-bunsetsu-converted
      (egg-get-major-bunsetsu (point)))

で取得できます。

[その他]
egg-insert-new-bunsetsu でテキストの置換えを行なっていますから、
これを advise するのがよいと思います。特に、変換対象の文節の特定
が容易ですので、大文節変換対象の問題(*)が回避できます。

新しい文節の情報は第3引数(new-b)で、

    (対象文節 前文節 次文節)

というデータ構造になっていますから、新しい文節の文字列は、

    (egg-get-major-bunsetsu-converted (car new-b))

で取得できます。

この関数は egg-hiragana(平仮名へ変換)や egg-katakana(片仮名へ
変換)でも使われています。これらのコマンドでは読み上げが行なわれ
ない方がよいのでしたら、一時的に読み上げを抑制するなどして下さい。

*****************************************************************
大文節変換対象の問題

Wnn は大文節と小文節の2レベルの文節があります。例えば、「だいさ
んかいたいかい」を変換すると、

    |第-三-回 大会|

のように表示されます。ここで、“-”が小文節区切りで、“ ”が大文
節区切りです。

2レベルになっているのは、“第三回”をあたかも一つの文節のように
扱えるようにしながら、辞書の語数を抑えられるようにするためです。

上記のように表示されている状態で、“三”の位置で M-n(小文節次候
補)、C-n(大文節次候補)、C-n すると、次のように表示が変わりま
す。

           ↓ M-n
    |第 さん 回 大会|
           ↓ C-n
    |第-三-回 大会|
           ↓ C-n
    |第 算 回 大会|

小文節次候補を行なうと“さん”になり、前後の小文節と結合が切れて
単独で大文節を構成するようになります。

この状態で大文節次候補を行なうと“さん”が“三”になり、前後の小
文節と結合して大文節を構成します。通常、“三-回”の“三”の位置
で大文節次候補を行なうと“三回”が変換対象となるのですが、大文節
次候補を連続した場合は、変換対象は前回のまま変わらず“三”となり
ます。

このため、文節情報だけでは変換対象を同定することができません。
*****************************************************************

>また、IMレベルでは本当に候補の表示方法とうに関するインターフェースは規定
>されていないのでしょうか。

Emacs 20 には LEIM (libraries of Emacs input methods) があるので
すが、tamago は activate/inactivate のためにしか LEIM を使ってい
なくて、殆んど分かっていません。(^^;;

>できればEGGには手を加えずにきれいな形で実装したいと思っています。
>よいアイデア、あるいは不明な点がありましたら、よろしくお願いします。

できるだけ御協力したいと思いますが、なかなか時間が取れず応答時間
が非常に長くなっていますので、その点は御容赦下さい。
--
片山@PFU


-- 
                    Koichi Inoue, ARGV
                    E-Mail: inoue@...
                    ICQ UIN: 74900690