[HOME]

PiClip SKK辞書変換 編

2006-09-18

1.始めに

 PiClipの使用では、作者のWEBに記載されていました富豪辞書やPOBox辞書強化プロジェクト版を使用してきました。しかし、辞書としては(そのままではPiClipに使えませんが) 有名なSKK辞書が有ることはご存じだと思います。色々なアプリのソフトも、SKK辞書を元にしていることが多いと思います。
 そこで、PiClipで使えるようにフォーマット変換して使ってみようと言うのが、今回の実験です。

 テストには「SKK openlabの辞書」をつかわさせていただきました。


2.各辞書と結果について

 なお、各辞書については以下の通りです。

 (1)S辞書(数十KB)は小さくて使うことがないので、テストしてません。
 (2)M辞書(約215KB)はそのままでは動きませんでした。PiClipの起動で読み込みが終了しません。
   が、下記の操作をすると動くことが分かりました。
辞書の内容を切り張りしながらテストして、動くところまでは
   行きましたが、理由は分かっていません。
      *:先頭が”れ”で始まる行以降を、ML辞書のものに書き換えると動くことが分かりました。

 (3)ML辞書(約1MB)はうまくいきました。現在、使用中です。
 (4)L辞書(4MB位になるか?)は大きすぎて使用しないので、テストしていません。

3.それぞれのフォーマット(SKK辞書 と POBox for CE辞書)

 それぞれの辞書のフォーマットは、下表の通りです。残念ながら共通にはなっておりません。



あいしょう /愛称/相性/
あいじょう /愛情/


あくたろう /悪太郎;いたずらっ子/

SKK辞書のフォーマット

パタン文字列(半角空白)/単語1/単語2/単語3/(改行)
単語1、、は/区切りで沢山並べることができます。
パタン文字列は小文字や濁音・半濁音を含みます。

単語1、単語2、、には注釈がつくことがあります。左の行で;以降(いたずらっ子)が注釈です。

あいしよう 愛称
あいしよう 相性
あいしよう 愛情

POBox for CEやPiClipで使用しているフォーマットです。

パタン文字列(半角空白)単語1(改行)

/がないこと、単語は1行に一個です。
パタン文字列は小文字や濁音・半濁音を含みません。
注釈はつきません。


このほかに、コンテクストの項がある場合がありますが、今回は使用していない(ファイルにも入っていない)ので省略します。


4.変換でやるべき事

(1)各行から/をとり、単語を一つ/1行にする。
(2)単語1、単語2、、の注釈を削除する。
(3)パタン文字列(即ち半角空白から左側)にある、小文字や濁音・半濁音を大文字、清音にする。
  っゃゅょ → つやゆよ  ぱぴぷぺぽ → はひふへほ  がぎぐげご → かきくけこ など
  上表の例では、「愛情」「相性」は、ともに「あいしよう」です。


5.処理の検討

 いやあ、苦労しました。といっても、C言語やその他のスクリプトを使えば楽なのでしょうが、SEDでの処理にこだわったからです。(本当を言うと、それしか知らなかったから、、、(汗)、勉強不足が分かっちゃったなあ。)



きゅうしゅう /九州/吸収/
きりたんぽ /切りたんぽ/

  ↓

きゆうしゆう /九州/吸収/
きりたんほ /切りたんぽ/

まず最初に4.(3)の処理を行いました。難しいのは

(1)半角空白より左側だけ変換すること。
 左右区別しないで単純に ぽ →ほ にしたら
   きりたんほ /切りたんほ/ 
  になっちゃいます。

(2)対象文字が複数有ることがある。
「きゅうしゅう」には「ゅ」が2つ有ります。

ということで、検索には ”半角空白/” を入れて左右を区別、変換はループさせました。

:M04
s|\([^/ ]*\)ぱ\([^/ ]*\) /|\1は\2 /|g
t M04


これを、変換すべき文字毎に作成しました。


けんこう /健康/軒昂;意気-/兼行;昼夜-/箝口;口をつぐむ,発言を封ずる,カンコウとも/権衡;平均/堅甲;堅い甲殻/

  ↓

けんこう /健康/軒昂/兼行/箝口/権衡/堅甲/

4.(2)の処理です。

(左は実際は1行です。)右の「単語1/単語2/、、」の中に、注釈(;以降、次の/の前まで)が有ります。これを削除します。
「;何々/」があったら  →「/」だけにする。

s|;[^/]*/|/|g

この1行で良いはずです。

あ /阿/娃/唖/亜/

  ↓

あ 阿
あ 娃
あ 唖
あ 亜

4.(1)の処理です。これもやることは単純なんですがねえ。右側をばらして左側のをくっつけた行にするのですが、意外と苦手です。
これも一つづつ処理してループさせました。

あ /阿/娃/唖/亜/           を

あ 阿(改行)あ /娃/唖/亜/     のように「(改行)あ 」を挿入してから改行までを出力
                       させて削除します。

あ 阿
あ /娃/唖/亜/            一つ減ったのを同じように処理します。
                      (処理をループさせる)



6.処理手順

 ML辞書の名称を例にして記述します。なお、自分のメモですので自分の使用した処理ソフトで記述しています。別のソフトを使用してもできると思います。

ダウンロードしたファイル「SKK-JISYO.ML.gz」を解凍します。.gzファイルなのでいつものLHAでは解凍できなかったため、WINRARを使用しました。 名称をSKKJISYO.MLとします。

SKKJISYO.MLは日本語(EUC)なので、Shift-JISに変換します。私はNKFという、DOS上で使うソフトを使用しました。
  NKF -Es SKKJISYO.ML > JISYO.ML

これで、Shift-JISのファイルJISYO.MLができます。テキストエディタを使用して、JISYO.MLの先頭にあるコメント行(説明行)を削除します。

JISYO.MLをソートします。Windows 2000のシステムに入っているSORTコマンドを使用しました。
  SORT JISYO.ML > JISYO.TXT

JISYO.TXTができます。テキストエディタを使用して、JISYO.TXTのなかでひらがなから始まらない行を削除します。その他、不要な語が有れば削除します。(記号などで、自分では使わないと思う語など)

3−1

この(3−1の)処理は、M辞書の場合のみ行う。

JISYO.TXTの中で先頭が”れ”で始まる行以降を、ML辞書から作成したJISYO.TXTのなかの”れ”行以降のデータに書き換える。

いよいよ5.の3つの処理をいっぺんに行います。処理は下に貼り付けた「jisyosk.bat」「jisyosk.sed」を使用します。
「jisyosk.bat」「jisyosk.sed」「JISYO.TXT」の3ファイルを同じディレクトリに置いて、DOS上で

  jisyosk.bat
として実行すると、words.txtが作成されます。600MHzのマシンなので、40秒くらいかかりました。

処理用のファイルはこれです。SKK_CNV.LZH

words.txtをUTF-8コードのファイルに変換します。やはり、NKFを使用しました。
 NKF -w80SLu words.txt > word.utf

「word.utf」ができます。これを「word.utf8」にリネームして、NOKIA E60 の E:\Dic に転送します。



7.結果
 結果については、ML辞書(NOKIA E60に書き込むファイルで1.3MB)は使えました。M辞書(NOKIA E60に書き込むファイルで215KB位)は、多少手を加えると使用できることが分かりました。
 動作に悪影響する単語があるというより、”れ”行以降が少なすぎるとまずいケースが有るようです。”れ”行以降をML辞書のデータで置き換えると動くのですが、”れいきゃ〜”、”れいきょ〜”の項を削除すると動かなかったりします。
 ML辞書のデータで少しずつ置き換えながらテストしたのですが、原因は分かっていません。私の方からの調査では、このままになっちゃうかな。(涙)



-------------------------------------------------------------------------------------------------------