...

「かんな」3.2について

by user

on
Category: Documents
12

views

Report

Comments

Transcript

「かんな」3.2について
Title:
Canna Version 3.2
Authers:
Yuko Misao, Akira Kon
Institute:
NEC Corporation
E-Mail:
[email protected], [email protected]
Abstract:
We developed a new version of Canna, and contributed it to the
X11R6 as a free software. Canna is a Japanese language input system. Canna version 3.1 became to save the clause separation information for the kana-to-kanji conversion. Canna version 3.2 introduced
several accessing modes to the kana-to-kanji dictionaries, and also introduced user customizable menus, and so on. This paper describes
topics such as the new way of managing dictionaries and ability to
customize the menus, etc.
『かんな』 Version
三竿
3.2
について
夕子
[email protected]
今
昭
[email protected]
日本電気株式会社
1994 年 9 月 1 日
概要
X11R5 に て フ リー ソ フ ト ウェ ア と し て 公 開 し た 日 本 語 入 力 シ ス テ ム 『か ん な』 の
に て 公 開 し た。 『か ん な』 Version 3.1 で は、
cannaserver のメモリ上でのみ管理していた文節区切り学習情報をファイルに保存するよう
にし、 cannaserver 再起動時に前回までの学習結果が反映されるようにした。『かんな』
Version 3.2 では、辞書の管理方式をセキュリティ面から見直し、グループ辞書、辞書の
新 し い バー ジョ ン を 開 発 し、 X11R6
同期処理および辞書のアクセス権のサポートを行った。また、ユーザインタフェースでは、
メニューのカスタマイズのサポート、 boiled-egg 的入力方法のサポートを行った。本稿で
は、辞書の管理方式およびメニューのカスタマイズなどについて述べる。
1
背景
『かんな』は、 1989 年に開発が開始され、 1991 年に X11R5 にて Version 1.2 がフリーソフトウェ
アとして公開された。その後、 1993 年には Version 2.2 が公開されている。これらの公開を通じて『か
んな』が広く普及してきたが、『かんな』の普及に伴ってユーザから以下のような要望が高まってきた。
• 特定のグループのメンバーで辞書を共有したい。
• 他人に辞書の内容を参照されたくない。
• 変換対象分野に合わせて学習ファイルを作成したい。
• 辞書ファイルへの書き込みを明示的に行いたい。
• メニューを自分で作成したい。
これらの要望に応えるため、辞書の管理方式およびユーザインタフェースを見直し、 Version 3.2 で
は、グループ辞書・辞書の同期処理・辞書のアクセス権・メニューのカスタマイズのサポートなどの機能
強化を行った。
以下では、辞書の管理方式およびメニューのカスタマイズを中心に、『かんな』 Version 3.2 の特徴
について述べる。
辞書管理方式
2
『かんな』 Version 2.2 では、かな漢字変換用の辞書として、システム辞書とユーザ辞書という 2 種
類の辞書を用いていた。システム辞書とは、あらかじめシステムに準備されている辞書であり、日本語入
力において必要となる基本的な単語が登録されている。システム辞書は、同一のかな漢字変換サーバのす
べてのユーザが利用できる。ユーザ辞書とは、ユーザが単語を登録するための辞書であり、ユーザ辞書は
その辞書の所有者であるユーザのみが利用できる。
さて、このような辞書構成に対し、「特定のグループのメンバーだけが、自由に単語登録したり、利用
したりできる辞書が欲しい」という声が聞かれるようになった。システム辞書として、単語登録可能な辞
書を準備すれば、とりあえず複数人からの単語登録や参照が可能となるが、この状況では、その辞書が不
特定多数から参照可能となってしまい、セキュリティ上問題がある。
『かんな』 Version 3.2 では、この問題に対し、「グループ辞書」を準備することで対応した。グ
ループ辞書を導入すると同時に、辞書に対するアクセス権の概念を導入し、プライマリユーザ / セカンダ
リユーザの概念を基軸としたアクセス制御を行うようにした。
以下では、『かんな』 Version 3.2 における辞書の概念について述べる。
2.1
グループ辞書
特定のグループで 1 つの文書を作成する場合など、複数のユーザで同一の辞書を使用したいことがあ
る。特に、特殊な分野 (医療、科学など) において文書を作成する場合には、システム辞書のみでは不十分
なことが多い。
しかし、現状でこれを実現しようとすると、あるユーザ辞書をグループのメンバー全員がそれぞれの
ユーザ辞書としてコピーしなければならず、ディスク容量に負担がかかる。また、コピーベースでは、コ
ピー元のオリジナルの辞書との内容に差が出てしまうことが起こり得る。
そこで、現状のシステム辞書、ユーザ辞書の 2 階層に加え、特定のグループのメンバーで使用できるグ
ループ辞書を導入した。システム辞書、グループ辞書、ユーザ辞書に対し、プライマリユーザという概念
を導入し、表 1 のように定義した。
辞書種別
表 1: 辞書のプライマリユーザ
プライマリユーザ
システム辞書
全ユーザ
グループ辞書
グループ名が一致するグループに属するユーザ
ユーザ辞書
ユーザ名が一致するユーザ
プライマリユーザとは、その辞書をかな漢字変換のために利用 (マウント) したり、その辞書に対して単
語登録 / 削除が行えるユーザを意味する。プライマリユーザでないユーザをセカンダリユーザと呼ぶこと
にする。
グループ辞書の導入にあたって、グループの決定方法が問われるが、今回は、グループ ID によって決
定することにした。すなわち、グループ ID の等しいユーザは同一の辞書を利用することができる。
2.2
辞書のアクセス権
Version 2.2 では、他人のユーザ辞書であっても、以下のコマンドによりその内容を参照することが
可能であった。
(例) ユーザ misao の user という辞書を参照する。
catdic -u misao user
しかし、辞書の内容によっては、極秘文書用の内容であったり、プライバシーに関わる内容 (たとえ
ば、親しい異性の友人の名前が登録されているなど) であったり、他人に参照されたくないことがある。
そこで、 Version 3.2 では、この問題をアクセス権を導入することにより解決した。
通常、 UNIX のファイルのアクセス権は、ファイルの所有者、所有者の属するグループのメンバーおよ
び他者の各々に対して、読み込み権、書き込み権、実行権が設定される。
辞書に関しては、プライマリユーザ、セカンダリユーザの 2 種類のユーザしかいないが、これらのユー
ザの意味を考えると、それぞれ UNIX のファイルの所有者および他者に相当する。また、辞書の利用方法
から実行権は必要ないことは容易にわかる。そのため、辞書のアクセス権は、プライマリユーザ、セカン
ダリユーザに対して、読み込み (READ) 権、書き込み (WRITE) 権を設定するようにした。
しかし、辞書のプライマリユーザには READ 権があり、セカンダリユーザには WRITE 権がないことは当
然のことと考えられる。そのため、辞書のプライマリユーザに対する WRITE 権とセカンダリユーザに対す
る READ 権の設定を行うようにした (表 2 参照)。
アクセス権の設定は、辞書メンテナンスツール chmoddic で行う。
表 2: 辞書のアクセス権
READ 権
WRITE 権
マウント / 学習
プライマリユーザ
○
アクセス権により制御
○
セカンダリユーザ
アクセス権により制御
×
×
さて、 UNIX のファイルシステムではファイルのアクセス権の他にディレクトリのアクセス権がある。
『かんな』 Version 3.2 においても以上説明した辞書のアクセス権に加えて辞書ディレクトリのアクセ
ス権も設定できるようにした。
辞書ディレクトリのアクセス権は、 lsdic コマンドによる辞書リストの取得をセカンダリユーザにも許
可するかどうかを表す READ 権と、 mkdic コマンドによる辞書の新規作成をプライマリユーザに許可する
かどうかを表す WRITE 権からなる。
ところで『かんな』 Version 2.2 では、システム辞書に関しては『かんな』のエンジンでの特殊なロ
ジックを組み込むことによって辞書への書き込みが禁止されていたが、 Version 3.2 からはエンジン側
での特殊な制御をやめ、システム辞書に対しては辞書側で書き込み禁止のモードを設定しておくように変
えた。
2.3
学習ファイル
学習ファイルとは、バイナリ辞書と対を成すもので、バイナリ辞書の学習結果が保存されるファイルで
ある。バイナリ辞書とは、辞書の読み込みが高速になるような形式に変換された辞書である。辞書には、
テキスト形式のテキスト辞書もある。
Version 2.2 では、学習ファイルはバイナリ辞書の従属物であった。すなわち、バイナリ辞書が対応
している学習ファイルを指し示している状態であり、バイナリ辞書が決まると、対応する学習ファイルが
一意に決まっていた。通常、図 1 に示すように、システム辞書ディレクトリにはバイナリ辞書に対応する
学習ファイルがあり、個人別学習ファイルを持たないユーザに対してはこの学習ファイルが使用される。
ユーザは以下のコマンドを実行することによって、個人別学習ファイルを作成していた。
(例) バイナリ辞書 iroha の個人別学習ファイルを作成する。
mkdic -fq iroha
このコマンドは、システム辞書ディレクトリの学習ファイルのコピーという形で、ユーザ辞書ディレク
トリに個人別学習ファイルを作成していた。このとき、個人別学習ファイルを作成したユーザからは、シ
ステム辞書ディレクトリの学習ファイルは見えなくなっていた (図 1 参照)。辞書を使用する際は、指定さ
れたバイナリ辞書がマウントされると、その辞書に対応する学習ファイルが ユーザ辞書ディレクトリ →
システム辞書ディレクトリ の順にサーチされ、使用されていた。
バイナリ辞書
学習ファイル
iroha
iroha
システム辞書ディレクトリ
システム辞書ディレクトリ
mkdic -fq iroha
ユーザ辞書ディレクトリ
ユーザ辞書ディレクトリ
額種ファイルはバイナリ辞書の
従属物であり、辞書が決まると
学習ファイルが一意に決まった。
図 1: Version 2.2 の学習ファイルの考え方
しかし、特定のバイナリ辞書に対しては学習ファイルが一意に決まってしまうため、あるバイナリ辞書
を使用語彙の異なる複数の変換対象分野で使用する場合、最後に使用した情報によって学習結果が上書き
されてしまい、頻繁に学習しなくてはならなかった。たとえば、生物分野と音楽分野に関する文書を作成
しており、「せいたい」という読みに対して、それぞれ「生体」「声帯」を使用したい場合などである。
Version 3.2 では、学習ファイルがバイナリ辞書を指し示していると考えることにより、 1 つのバイ
ナリ辞書に対して複数の学習ファイルを対応付けられるようにした (図 2 参照)。また、使用する辞書の指
定はその辞書に対応する学習ファイル名で行うようにした。辞書を使用する際は、まず、指定された学習
ファイルが ユーザ辞書ディレクトリ → システム辞書ディレクトリ の順にサーチされ、その学習ファイル
に対応するバイナリ辞書がマウントされて使用される。
2.4
バイナリ辞書からの単語削除
Version 2.2 では、単語登録 / 削除は、テキスト辞書に対してのみ行われ、バイナリ辞書に対しては
行えなかった。
しかし、文書作成において、バイナリ辞書に登録されている単語が不要となる場合がある。例えば、マ
ニュアル作成において、「下さい」「及び」などをひらがなで記述する場合、「下さい」「及び」がバイ
ナリ辞書に登録されていることにより記述ミスを生じるおそれがある。
バイナリ辞書
学習ファイル
iroha
システム辞書ディレクトリ
システム辞書ディレクトリ
cpdic -i iroha iroha
cpdic -i iroha irohaForMan
iroha
irohaForMan
ユーザ辞書ディレクトリ
ユーザ辞書ディレクトリ
学習ファイルが主体になり、1 つのバイナリ
辞書に対して、複数の学習ファイルを切り
換えて使用できるようになった。
図 2: Version 3.2 の学習ファイルの考え方
Wnn では、このような問題に対し、削除したい単語に特殊な値の頻度値を入れることで、バイナリ辞
書からの単語削除をサポートしている [1]。『かんな』 Version 3.2 では、個人別学習ファイル内の同音
異義語候補の並び順以外の値を与え、候補として表示されないようにすることでこの機能を実現した。ま
た、削除した単語は単語登録操作により、復活させることもできるようにした。
このバイナリ辞書からの単語削除機能と前節の学習ファイルの件とを合わせ、様々な変換対象分野に適
した学習ファイルを複数作成しておき、かな漢字変換実行時にメニューの辞書マウント / アンマウントの
機能を利用して学習ファイルを切り換えることにより、各変換対象分野に適した辞書 (学習ファイル) を使
用したかな漢字変換が行えるようになる。
2.5
同期処理
テキスト辞書は、メモリ上にロードして使用している。辞書の内容に変更があった場合はメモリ上の辞
書を変更しており、あるタイミングでメモリ上の変更をディスク上の辞書に書き戻している。このメモリ
上の変更をディスク上の辞書に書き戻す処理を同期処理という。
Version 2.2 では、すべてのクライアントからそのテキスト辞書が使用されなくなった時点でのみ、
同期処理を行っていた。
しかし、長時間使用しているマシンで障害が起きた場合など、その時点でクライアントが辞書を使用し
ており、辞書に変更を加えていた場合、メモリ上の変更がディスク上の辞書への書き戻されないことがあ
る。この場合、学習情報は失われてしまう。
Version 3.2 では、任意の時点での辞書の同期処理をサポートした。この同期処理をサポートするに
あたって、同期処理のタイミングが問題となるが、辞書の内容に変更があった場合に同期処理を行いたい
ことが多いため、今回は、単語の登録 / 削除時に自動的に同期処理を行うようにした。さらに、辞書メン
テナンスツール syncdic で明示的に同期処理を行うこともできるようにした。
3
ユーザインタフェース
『かんな』は、日本語入力操作に関する各種の要求に対してカスタマイズで対応できるように、広範囲
のカスタマイズ機能をサポートすることを基本方針としている。実際、キーの割り当てをはじめとして、
ローマ字かな変換規則、モード表示文字列、辞書の指定などのカスタマイズが行える。
しかし、単語登録や変換方式の変更などを行うためのメニューをカスタマイズすることができず、「メ
ニューを自分で作成したい」というユーザの要望に対応できていなかった。
『かんな』 Version 3.2 では、この要望に応えるためにメニューのカスタマイズをサポートした。以
下では、『かんな』のメニューのカスタマイズについて述べる。
3.1
メニューのカスタマイズ
『かんな』では、 HELP キーを押したときにガイドラインにメニューが表示され、単語登録 / 削除や変
換方式の変更などを行える (図 3 参照)。
(1) HELP キーを押す。
[拡張]1記号入力 2コード入力 3部首入力 4単語登録 5環境設定 4/5
4
(2) 4 単語登録 を選択する。
[拡張]1単語登録 2単語削除 3辞書マウント/アンマウント 1/3
1
図 3: メニュー
Version 2.2 では、メニュー内の各機能の位置はハードコーディングされており、変更不可能であっ
た。しかし、メニューの各機能はユーザによって使用頻度が異なり、メニュー内の各機能はすべてのユー
ザにとって最適な位置にあるとは限らない。
そこで、 Version 3.2 では、メニューをカスタマイズできるようにした。メニューのカスタマイズを
サポートするにあたって、 Version 2.2 のメニューにおける各機能に機能名を与えた。メニューのカス
タマイズは、 defmenu というキーワードと各機能の機能名を用いて行う (図 4 参照)。
; メニューのカスタマイズ
(defmenu extend-mode
("記号一覧" kigou-mode)
("単語登録" touroku-mode))
メニューを表示する。
[拡張]1記号一覧 2単語登録 1/2
1
図 4: メニューのカスタマイズ
さらに、別に定義したメニューをメニュー内の機能として呼び出すことができるようにし、メニューの
階層化を行えるようにした (図 5 参照)。
;メニューツリーのカスタマイズ
(defmenu extend-mode
("記号一覧" kigou-mode)
("辞書操作" menu2))
(defmenu menu2 ("登録" touroku-mode)
("削除" delete-dic-mode)
("辞書一覧" jisho-ichiran))
メニューを表示する。
[拡張]1記号一覧 2辞書操作 2/2
2
2 辞書操作 を選択する。
[拡張]1登録 2削除 3辞書一覧 1/3
1
図 5: 階層的なメニューのカスタマイズ
その他の特徴
4
4.1
文法辞書の指定
かな漢字変換を行う際に用いる品詞の定義および品詞間の接続情報をまとめて、文法情報という。『か
んな』では、通常、 fuzokugo.d というかな漢字変換辞書に記述された文法情報を用いて、かな漢字変換
を行っている。
Version 2.2 では、文法情報は変更不可能であった。しかし、変換や単語登録などを行う際に文法辞書
を参照するため、ユーザの望み通りの変換が行えないなどの問題が生じる。また、文法情報は各国によっ
て様々であるので、文法情報が変更できないことは国際化対応においても問題となる。
そこで、 Version 3.2 では、文法辞書を指定することで文法情報を変更できるようにし、国際化に備
えた。ここで、文法辞書とは文法情報を持つ辞書のことを指すものとする。
文法辞書は、カスタマイズファイルで :grammar というキーワードを用いて指定する。例えば、
mygram という名前の文法辞書を用いる場合は、図 6 のように記述する。
; 文法辞書の指定
(use-dictionary :grammar "mygram")
図 6: 文法辞書の指定
4.2
boiled-egg 的入力
アルファベットと日本語が頻繁に混ざり合うような文章を作成する場合、 boiled-egg 的入力を行い
たいことがある。すなわち、入力した文字列はローマ字のまま表示しておき、あるタイミングで一括して
ローマ字かな / かな漢字変換を行いたいことがある。
Version 3.2 では、カスタマイズによってこのようなインタフェースを得ることができるようにした
(図 7 参照)。
; boiled-egg 的入力
(initialize-function
’(japanese-mode bese-eisu base-hankaku alpha-mode))
図 7: boiled-egg 的入力
4.3
空白文字を含む単語の登録
Wnn では、空白文字を含む単語の登録が可能だが、『かんな』 Version 2.2 では、空白文字はテキス
ト辞書内で単語の区切り文字として使用されていたため、空白文字を含む単語を登録できなかったり、不
正に登録されたりしていた。
しかし、名前をフルネームで登録する場合に性と名の間に空白文字を挿入したいなど、空白文字を含ん
だ単語を登録したいことがある。
Version 3.2 では、エスケープ文字を導入することによって、空白文字を含んだ単語および読みを登
録できるようにした。メニューの単語登録 / 削除機能を利用する場合は、辞書に登録する際にエスケープ
文字がシステムで自動的に挿入されるため、ユーザはエスケープ文字を意識することなく単語登録 / 削除
を行うことができる。
4.4
接続クライアント数
Version 2.2 では、同時にサーバに接続できるクライアント数は、内部で制限されており、システム
の資源に余裕があってもクライアントが接続できないという問題があった。
そこで、 Version 3.1 では、クライアントがある一定の時間サーバにアクセスしなかった場合、クラ
イアント側が内部で接続を切ることができるようにし、見かけ上の接続数が増えるようにした。
さらに、 Version 3.2 では、クライアント数の内部制限をはずすことによって、システムの資源の限
界までクライアントが接続できるようにし、接続クライアント数を拡大した。
4.5
文節区切り学習
かな漢字変換では、文節の区切り位置が意図したものと異なるために誤変換を生じ、文節の伸縮を行
わなければならないことがある。例えば、「僕の家に埴輪がある」という文を入力したい場合を考えてみ
る。まず、図 8 (a) のように読みを入力し、変換キーを押すと 図 8 (b) のような変換になってしまった
とする。このとき、変換文字列の第 2 文節を 1 文字縮めることにより、図 8 (c) のようになり、正しい変
換を得ることができる。
(a)
ぼくのいえにはにわがある
[ あ ]
(b)
家には
僕の家には庭がある
[漢字]
(c)
家に
僕の家に埴輪がある
[漢字]
図 8: 文節の伸縮
Version 2.2 では、文節区切り学習の結果をファイル上に保持していなかったため、 cannaserver を
終了させると初期状態に戻ってしまい、 cannaserver 再起動後は、再度文節区切りを行わなくてはなら
なかった。
そこで、 Version 3.1 では、文節区切り学習の情報を学習ファイルの一部に組み込むことによって、
文節区切り学習の結果を保存するようにし、 cannaserver 起動毎に文節を区切り直す煩わしさを解消し
た。
5
今後の課題
『かんな』の今後の課題としては以下のものがある。
(1) 辞書管理方式の見直し
『かんな』 Version 3.2 でサポートしたグループ辞書では、グループ ID でグループを決定して
いるため、グループ変更が容易に行えない。また、辞書のアクセス権に関して、グループ辞書につ
いてはグループに属するユーザすべてに WRITE 権があるため、単語の登録 / 削除による誤変換が生
じるおそれがある。さらに、辞書名についても、ユーザ・グループ・システム辞書全体でユニーク
な名前でないといけないという制限がある。
これらに対処するために、今後も辞書の管理方式について見直していきたい。
(2) 変換効率
『かんな』には依然としてかな漢字変換効率の改善が望まれている。例えば、接頭・接尾語に
関して特別な処理を行っていないため、「超 / 大作」や「平均 / 的」といった変換では、直前に
「長」や「敵」を変換確定しまうと、「長 / 大作」や「平均 / 敵」という最近使用候補を優先させ
た変換になる。また、『かんな』では付属語から始まる変換を許可していないため、文章の途中か
ら入力を開始した場合などには、「二よる変換」のように第一文節が自立語から始まる変換にな
る。
今後、接頭・接尾語をはじめとしたかな漢字変換効率の改善が課題となる。
(3) 国際化対応
ユーザの多様化に伴い、オペレーションシステムやアプリケーションプログラムの国際化対応は
当然の機能となり始めている。
『かんな』では、 Version 3.2 で、文法辞書を変更できるようにすることで国際化に備えたが、
今後、日本におけるかな漢字変換に相当する各国語入力に向けてのさらなる対応が課題となる。
(4) サーバの一元管理
『かんな』では、ネットワークシステム上のサーバの状態把握を一括して行うことができず、ネ
ットワークシステム上のサーバの起動状況 / 使用状況の検索機能、およびサーバの一括終了機能に
対する要望が高まっている。
これらに対処するために、サーバの一元管理について検討していきたい。
謝辞
『かんな』の機能強化にあたり、適切なご助言をくださったかんなメーリングリストのみなさまにこの
場を借りて感謝の意を表させていただきます。
参考文献
[1] 栗林博他: WnnV4 の概要, 第 13 回 UNIX シンポジウム (1989)
[2] 今昭他: 日本語入力システム「かんな」, jus 設立 10 周年記念 UNIX 国際シンポジウム (1992)
[3] 今昭: いつでもどこでも日本語入力『かんな』, bit (1994.7)
Fly UP