ユーザ辞書関係の Tips

ユーザー辞書関係のtips


・SL-C700のユーザー辞書構成ファイル

/home/QtPalmtop/dic/udic_master.txt <-ユーザー辞書マスターデータ(プレーンテキスト)
/home/QtPalmtop/dic/usrjisho.dic <-ユーザー辞書本体(圧縮バイナリ)
/usr/QtPalmtop.rom/bin/userdic <-辞書ツール実行バイナリ

 他、アイコンファイルとか、入力学習ファイルとか、色々あるみたいだけど、辞書の移行にはあんまり関係無いんで割愛(^^;)。




・udic_master.txt書式

-----------------------------------------------------------------------------------
#かな漢字変換ユーザー辞書ファイル
[INFO]
ver=2.00
create=SLUD       <-先頭から、この下までの5行は内容固定。
[DATA]            <-データヘッダ?
words=???         <-総登録単語数(最大1000語)
@見出し語(読み) <-行頭「@(半角)」+「見出し語」<ここから
内容              <-変換文字列
0                 <-区切り文字あるいは、品詞? >ここまでの3行で1エントリ。以後単語数分繰り返し
[DEND]            <-ファイルエンドヘッダ?
-----------------------------------------------------------------------------------
 ファイル中の、日本語コードは見出し語・内容ともに、euc であることに注意。




・辞書データの反映

 上記の書式に則って、udic_master.txt を編集後、既存の usrjisho.dic を削除、或いはリネームする。
 その後、通常通り、辞書ツールを起動をすれば、編集した udic_master.txt の内容を反映した新しい usrjisho.dic が自動的に作られる。
 ターミナルから、直接 userdic を立ち上げることも出来るけど、どうもpathの設定とかが上手く通らないみたいで、今造った udic_master.txt を読んでくれないことが、往々にしてあります。
 ですんで、素直に通常のランチャー画面からユーザー辞書を起動しませう。
 ここらへん、もしかしたらコマンドラインオプション等があるのかもしれないけど、今のところは詳細不明〜。

 で、とりあえず、既存のFEPから辞書を持ってくるにあたって、perlで簡単なスクリプトを作ってみまひた。

->udcv.pl

usage : perl udcv.pl "テキスト辞書データ"

 MS-IMEで吐き出した、辞書テキストファイルから udic_master.txt を生成します。
 ただし、MS-IMEで吐き出したままのファイルは、先頭に3行ほどヘッダがついてます。
 このヘッダの書式が、どーも環境によって多少変化するみたい。
 ホントは、そこらへんも考えたコード書けば良いんだろうけど、いちいち対応したルーチン考えるのも面倒だったんで、もういきなりデータ本体とみなして、読み込ませてます。
 ちゅこって、スクリプトに噛ませる前に、てけとーなエディタで”頭数行削ってから”使ってください(爆)。
 あ、あととーぜんのよーに、MS-IMEで吐き出した直後の漢字コードは shift-jis になってるんで、要 euc 変換ね。
 定番だと、nkf とか奨めるトコですが、SL-C700の場合は、標準のメモ帳でもコンバート出来るんで、幸せ(^^)。

 ちなみに、とーぜんながら無保証です。理屈解る人だけ使ったって下さい。
 こんなヘタレなスクリプトでよければ、転載改造も一切自由です。




・登録にあたっての制限とちょっとした実験

 ユーザー辞書の最大登録個数は1000語までです。
 udic_master.txt ファイル自体には、1000語以上のエントリを追加することが可能なんですが、 制限数を越えると usrjisho.dic が生成されません。
 ただ、ユーザー辞書ツールにて、登録内容の表示自体は可能(C760では仕様が変わってます、注意)なので、上記のコンバート作業後に、手作業で不要単語を削除していくことは可能です。
 ・・・が、大元の変換前の辞書テキストの段階で、取捨選択しておく方が、作業自体はラクかもしれない(苦笑)。

 また、それ以外の制限ですが、以下のような制限が確認されました。

 で、ここから実験コーナー。
 上記の制限から計算すると、ユーザ辞書の理論上の最大登録量は見出し語(全角20文字)x内容(全角80文字)x最大登録単語数(1000語)となる筈です。

 で、実際にそのサイズの udic_master.txtを作成してみると、1000語をはるかに下回る、42レコード目以降の登録内容が反映されないことがわかりました。(一見登録されたようには見える)

 この時点での udic_master.txtのファイルサイズは200KB前後、生成された辞書ファイル(usrjisho.dic)のサイズは65KB前後です。

 次に結果が反映される限界点の41語で切った udic_master.txt(8KB)で試すと、8KB前後の usrjisho.dicが生成され、(当然)正常に内容が反映されます。

 さらに、この辞書に手動でレコードを追加してみます。
 さっき使ったのと同じく見出し語20文字、内容80文字のレコードを追加したところ、やっぱり結果は反映されません。

 この時点での usrjisho.dicのファイルサイズは8KB前後。普段私が使ってる辞書のサイズは16KB前後ですんで、ファイルサイズによる制限であるとは考えられません。

 そこで、今度は見出し語の長さを削って、見出し語を14文字以内(内容はそのまま80文字)にして単語を追加すると、これは正常に反映されます。

 以上の実験結果から、さらにいくつかのことが解ります。

 ただ、不思議なことが一つ。
 20文字見出し+80文字内容X41レコードの状態で、20文字見出しの単語が追加出来ないのは解ります。
 そこで、さらに14文字見出しの単語が登録出来るのも、まぁ文字総数の関係でしょうから理解出来ます。
 でも、実は14文字見出しにすると、その状態から、さらに2つも3つも単語登録が出来ちゃうんですよ。
 で、見出しを15文字にすると、やっぱり通らない、何故だ!(笑)。

 確かに総単語数自体は、1000語に程遠い状態ではあるんですが、ここらへん総文字数の制限と登録単語数の制限がどういう風に絡み合ってるのか、これはちょっと触った程度では解りそうにないです。

 ここらへんは、もしかするとメモリの常駐サイズか、或いは userdic自体が、ここまでの単語登録を想定していないためのバグなのかもしれませんが(苦笑)。

 以上、実験コーナーでした(^^;)。



・SL-C760向け補足事項


 基本的に、SL-C700の構成と変化はありません。
 ユーザー辞書の構成ファイルの置き場も全く一緒です。

 ただ、C760で追加された英和・和英他、内臓辞書のデータも同一ディレクトリに置かれてます。
 その上、標準状態では ”udic_master.txt”、”usrjisho.dic”とも、存在してない(何かしら単語を登録すると生成される)んで、多少面食らいました(苦笑)。

 また、ユーザー辞書の更新のタイミングが若干、変更されたらしく、上記手順で単語を登録した後、何らかの辞書更新(新規単語の登録、既存の単語の削除等)を行わないと辞書の内容が反映されなくなっています。

 どれも微妙な変化ではありますが、気がつかないとどれもツボにはまりかねない部分ですんで、一応補足事項と言う形で追記しておきます。

解析内容及び、このページの文責: TAKETYON

Return to home