« ローカルhtmlファイルに埋め込んだyoutube動画が再生されない | トップページ | skkのzコマンド(隠しコマンド?) »

2010年1月13日 (水)

skk辞書サーバーwceskkservでの初回変換に三十秒かかるトラブル解決

skk(Simple Kana to Kanji conversion program)とは

Time-stamp: "Wed Jan 06 12:05:07 JST 2010"

skkを使うにあたってそのラージ辞書だけで不自由はなかった。一発で仮名 漢字変換できないでも一漢字ごとを決めて一語(単語)として確定すればそれ がすぐに個人辞書に書き込まれる(登録)のがskkの流儀である。改めて単語 登録という手間を掛けなくても使っているうちに自然と登録単語が増えてゆ く。

「利点の一つを上げる。辞書にない単語があった時、ユーザーは分割入力す ることになる。気高町(けたかちょう 私の田舎の地名)という言葉が無けれ ば、気高+町 に分けて変換する。「けだかい」(「い」を消して)「まち」な んてするわけだ。

この時、単語単位の変換のみを基本にしたSKKでは、常に変換対象は1単語な のだから、「けたかちょう」で候補が尽きた時、次にユーザが取る行動はそ の読みの単語の分割入力に決まっている。じゃ、候補が尽きた時点で辞書登 録モードに入ってしまえばよい。ユーザーは別の読みや熟語を利用し、いら ない文字を消したりして(「い」を消したりして)、最後に確定する、と同時 にSKKは辞書登録する。すると以降その熟語を使える。辞書にない単語は一 度分割入力すれば以降使えるのである。(もちろん分割して確定していけば 登録しない)。

これが、普通のIM方式だと、分割入力したのか、単に隣り合っていただけな のか、間違えたから直したのか、機械からは判別できない。(「い」を消す なんてのは機械には意味不明である)。単語登録するには別の手続きが必要 である。あるいは非常に利口なIMで何度も使用する内には学習して覚えるか もしれないが、それはソフトまかせだ。(そしてそういうIMは大抵とても重 い)。

ちなみにSKKのユーザー辞書は(全体の辞書も)ただのテキストファイルであ る(見ればSKKがなにをやってるのか見当が付く)。時々チェックして間違え て登録した単語は消してやればよい。」

skkの辞書は基本辞書と呼ばれる参照専用の辞書と個人の変換履歴を記録す る個人辞書からなる。変換要求があったら先ず個人辞書を検索する。個人辞 書に載っていないなら基本辞書を読みにゆく。辞書に学習させるとかさせな いとかの設定はskkにない。常に学習オンである。

マイクロソフトのms-imeやジャストシステムのatokには設定項目がやまほど ある。それを見ることもなくデフォルトで使うのが普通であろう。skkはそ の点いたってシンプルである。機能が単純だからこそのシンプルである。慣 れる(ローマ字入力の指使い)には時間が掛かるけれども常用するようになる と手放せない。

ところでskkの使う辞書はまったくのテキストファイルである。これは全て のデータをテキストファイルで保存するunixの流儀に従うものである。

高速検索を目指して辞書をバイナリ化するとそれを利用できるアプリケーショ ンは限定される。そのアプリの寿命のあるうちはよいが使われなくなるとそ れ専用の辞書は使えないゴミになってしまう。データをプレインテキストで 保存しておけば読めなくなることはない。

プレインテキストはテキストエディターで作るのが最も効率よい。その成果 物はワードプロセッサーでも表計算ソフトでも、そしてインターネットのい わゆるホームページを閲覧するインターネットエクスプローラーなどのブラ ウザでも見ることができる。

コンピューターのプログラムを書くための道具としてテキストエディターが 存在する。コンピューターが使われ続けるかぎりテキストファイルを扱う専 用ソフトであるテキストエディタがなくなることはない。

skkの基本辞書はプレインなテキストファイルであるから、それを気軽に閲 覧できる。windows付属のマイクロソフトms-imeとかジャストシステムの atokとかの辞書が二十四万項目収録と言われてもそれを直接に見ることがで きない。たぶん方法は用意されているだろうが今迄一度も見たことがない。 仮名漢字変換というブラックボックスの中を覗く方法は知らないし面倒だか ら知ろうともしない。skkなら至極簡単に仮名漢字変換辞書を見ることがで きる。

現用中のskkラージ辞書(skk-jisyo.l)のファイルサイズは3678kBである。エ ディターに読み込んでみると約十五万行もある。ファイルの中身は漢字の読 みに続けて変換候補を並べて一行にしたものを約十五万個連ねたものである。

ラージ辞書を秀丸エディターで開くと一瞬にして冒頭部分が表示される。と りあえず必要な部分だけを読み込んでいるのか第一行から最終行までの全て を読み込んで必要部分を表示しているのかは分からない。その仕組みは別に しても冒頭部分(第一頁)から最終行へ飛ぶコマンド(キーボードからならコ ントロールキーを押しながらエンド(End)キーを押す)を実行すると秀丸なら 一瞬にして最終頁が表示される。

同じことを一太郎8とかブラウザのfirefox2(どちらもかなり旧式ですが現 用パソコンが古いから仕方ないのです)でやるとその所要時間は秒単位から分 単位になる。もっとも最終ページを表示させたあとではトップとボトムの間の ジャンプは速くなる。

巨大なテキストファイルを開くとか編集するときアプリケーションソフトの 反応の速さを実感するためのファイルとして使えるものは少ない。一万行も の文章を自作で用意することは容易でない。そういうときのテスト用として skkの辞書ファイルは便利である。

skkのラージ辞書の一行当たりの文字数は少ない。もっと一行文字数の多い テキストファイルとして郵便事業株式会社の郵便番号データがある。

lzh圧縮ファイルで1.65MBあり、展開すると11.5MBになる。約12万行ある。 これをmeadowからcsvモードで読み込むとものすごく重くなる。テキストモー ドならサクサク動く。秀丸への読み込みは一呼吸くらいかかる。

その昔にmeadowを使い始めた頃はunixベースの話しが多かった。大型コン ピューターに複数個の端末をつなぎタイムシェアリングで何人もが同時使用 する。その際に仮名漢字変換のために辞書サーバーを設けて何人もが共用す るという。なんかサーバーというと格好いいという感じがする。

今回skkのラージ辞書と他の辞書を併用するにはどうすればよいのだろうと 考える。skkに複数個の辞書を登録する方法、複数個の辞書をマージ(合体) して単一辞書にする方法、そして複数個の辞書を登録できる辞書サーバーを 使う方法があることを知る。

このうち辞書サーバーが格好よく思える。なにかが劇的に改善されるもので はないだろうがなんとなくサーバーという言葉の響きに魅かれるものがあ る。実はhttp サーバーとしてapache(アパッチ)サーバーを実験用としてイ ンストールしている。滅多に使うことのないapacheに比べてskkサーバーは 日用品として使うことになる。試してみたくなる。

skk辞書サーバーwceskkservを探す

skkのホームページにゆくとskkサーバーが紹介されている。

私のwindows meパソコンで使えそうなskkサーバーとしてはwceskkservと wskkservがある。なお、余談であるが名前の語尾はservである。eで終わる serveではない。

このページから次が紹介される。

試用のためダウンロードしようとしたときにはアクセスできない。そこで グーグル検索のキャッシュを見る。検索結果の末尾にあるキャッシュという文 字をクリックするとグーグルが保存しているページのコピーを見ることができ る。

元ページを直接に見ることはできなくてもその内容を見ることができる。 そしてそのコピーページからwceskkserv0200.zipがダウンロードできることに 気付く。「wceskkserv0200.zip」をキーワードにしたグーグル検索でもキャッ シュしか閲覧できない。諦めかけてダメ元でキャッシュページのダウンロード リンクをクリックしたら実行できた。何でも試してみるものである。

キーワードがwceskkserv唯一つだけでは有用な記事は少ない。原作者の記事 に限定するなら次で検索するとよい。 グーグル検索のキーワードとして「wceskkserv site:megadriver.yi.org/~fumi」を指定するとグーグルが保存しているホー ムページのキャッシュを見ることができる。「site:」はグーグル検索の特 別構文であってurlの「http://」以下を指定するとそのサイトにある情報が 検索される。キーワードのwceskkservなしのsite:~だけでも検索できる。

グーグルキャッシュページからの情報ではwceskkservの動作確認をwindows xpでしたとある。そしてwindows 2000以上なら動くだろうとある。私の windows meのパソコンでは問題なく動いている。

wceskkservの最初の「wce」はwindows ceを表わしているのかなと思う。そ してceとはcompact editionと勝手に思う。マイクロソフトは言及しないが compactを意識しているらしい。

「Windows の実行形式の辞書サーバです.扱い方が非常に簡単です.

複数の辞書にも対応しており,変換速度も不満はありません.辞書サーバの 導入を考えているなら,ぜひお勧めできるサーバです.

インストール方法

wceSKKSERVのページからバイナリをダウンロードし適当なフォルダに置きま す.実行するとスクリーンショットのような画面になります.

スクリーンショットでは,1178という数字が入っていますが,初回起動時に は1178という数字が入っていません.そのため,標準ボタンを押します.そ うすると,1178になります.1178は嫌な人は適当に変更します.

次に辞書の編集ボタンを押し,変換に使いたい辞書を追加していきます.

これで,wceSKKSERVの設定は完了です. wceSKKSERVのショートカットを作って,スタートアップに移動しておきます.

設定方法

以下を.emacs に追加します.

(setq skk-large-jisyo nil)
(setq skk-server-host "127.0.0.1"
      skk-portnum 1178)

詳しい使い方

普通にSKKで変換を行うだけです.今までに変換したことのない文字を変 換すると,総問い合わせ数などの数字が変化するはずです.」

(注)skk-portnumではなくてskk-server-portnumが正しい。skkディレクトリを grepしてもskk-portnumは見つからない。

初回変換に三十秒かかる

最初は基本辞書としてskkのラージ辞書だけをwceskkservに登録する。その 状態で個人辞書(ユーザー辞書)にも基本辞書にも登録されていない「あれす け」とか「それなた」といった無意味な文字列を仮名漢字変換してみる。変 換キーのスペースキーを押すとモード行に「Loding skk-dic...done」と出 て変換結果(結局は候補なしでモード行の冒頭に読みだけが入った単漢字入 力と単語登録を兼ねた入力待ち状態になる)が画面に現れるまでに三十秒近 くもかかる。

wceskkservを使わないでも最初の変換には少しモタつく感じがある。初回の 変換結果待ちは我慢するしかない。とはいえwceskkservを使用をやめて元通 りにすると二、三秒ほどで結果(候補なし)が表示される。この大差は何故だ ろう。検索にこれほどの時間が掛かるとは思えない。二回目からの検索は普 通なのである。

meadowから別バッファに別ファイルを読み込んで仮名漢字変換をするとき はほぼ一瞬で変換される。meadow起動後の最初の仮名漢字変換でのみ凍り付き 状態が発生する。meadowを終了して起動しなおしても、最初の無意味文字列の 変換にはやはり三十秒くらいかかる。

なお、wceskkservが起動してない状態でskkを使い始めると不味い。あるい は使用中のwceskkservを終了するとそれを再起動してもスンナリと動かない。 いったん呼び出し元のskk(meadowエディタ)を終了してmeadowを再起動した ほうがよい。skkを使うにはwceskkservが準備完了してなければならない。

meadowを使い始める前にwceskkservを起動すべきは忘れるかもしれないので パソコン起動と同時にwceskkservが起動して常駐するようにスタートアップ にショートカットを入れる。

パソコン起動と同時にwceskkservはタスクトレイに入り常駐する。meadowで skkを使いはじめるとwceskkservへの問い合わせ回数と見つかった回数及び 見つからなかった回数が常駐アイコンにマウスポインタを持ってゆくとポッ プアップ表示される。たしかにwceskkservが使われていることが分かる。そ の後に試したwskkservにはこのような表示がない。

skk辞書サーバーwskkservを探す

wceskkservを使うようになったところで比較のためにwskkservも試してみる ことにする。

skk openlabから次のページにリンクされる。ここに気になることが書かれ ている。不都合があって急遽ページを作り直したとある。

「[2009/07/21]ADSLモデムが壊れたので、@nifty上に一時避難しました。」

このページからwskkservのページに飛ぶ。

このページからwskkservの実行ファイル(バイナリ)がダウンロードできるよ うになっている。しかし実際にダウンロードできるのは wskkserv1.0-bin.lzhだけである。他は「ページが見つかりません」と拒否 される。最新版のwskkserv1.2-bin.TGZはダウンロードできない。とりあえ ず1.0を試用してみる。辞書ファイルとして一つのファイルしか登録できな い点がwceskkservと違うだけで動き方は同様である。

最新版は何処にあるのかと探しまくる。最後に、このページからのバージョ ン1.0、1.1、及び1.2へのリンク先をよーく見比べるとwskkserv1.0-bin.lzh はhttp://homepage3.nifty.com/monjya/arc/wskserv/に収容されているのに 対して、その他のものはhttp://member.nifty.ne.jp/Tatari_SAKAMOTO/arc/ に収められていることになっている。

ここで上記の「@nifty上に一時避難しました」という記述を思い出す。そう か、ページ急造によるリンク貼りなおしミスだったのである。ようやく最新 版を試用できることになった。

skk辞書サーバーwceskkservでの初回変換に三十秒かかるトラブル解決

wceskkserv経由のskkによる初回変換に時間が掛かるトラブルの解消法が見つか る。次の設定を~/.emacsではなくて~/.skkに記述すると速くなることを見つ ける。この設定を~/.emacsに書くと初回変換で約三十秒間の空白時間が生じ る。同じ設定を~/.skkに書くとskkservを使わない場合のように一、二秒で 変換される。

(setq skk-large-jisyo nil)
(setq skk-server-host "localhost"
      skk-server-portnum 1178)

さらに試行錯誤を続けたところ~/.skkなしにして、しかも~/.emacsに書き加 えた上記の二、三行目をコメント化して一行目だけを有効にしても三十秒問 題が解消するという意外な事実に気がつく。一行目までコメント化すると skk-setup.elで指定した辞書を読みに行きそうな気がする。

とりあえず~/.emacsと~/.skkに同じ設定を書いた二重設定のままで使うこ とにする。なお、wceskkserv.iniに書かれているENABLE-OTHER-MACHINE=1とい う設定は「他のマシンからの接続を許可」にチェックが入ると1になりチェッ クを外すと0になる。

「 2. ~/.skkに、UNIX上でskkservを使う場合と同じように
(setq skk-server-host "localhost")
(setq skk-aux-large-jisyo "/usr/share/skk/SKK-JISYO.L")
(setq skk-server-portnum 1178)
と書く。このとき、
(setq skk-serv "/YOUR/SKKSERV/DIR/skkserv")
は必要ない(あっても別に問題はない)。」

「skkserv は、Nemacs上で動作するかな漢字変換プログラムSKK -Simple Kana to Kanji conversion program のための辞書サーバです。skkserv(サー バ)は、SKK/Nemacs(クライアント)とは独立に動作します。ひとつのサー バは、複数のクライアントの要求を処理することができます。

サーバは、起動されると、最初に SKK形式の辞書を読みこみます。次に、無 限ループにはいり、クライアントからの要求を待ちます。サーバは、接続を 要求したクライアントごとに通信路を作り、以後、そのクライアントから文 字列変換の要求が起きる毎に、辞書を検索して、変換文字列を返します。ク ライアントは、文字列変換要求以外に、サーバのバージョン番号要求や接続 終了などのメッセージをサーバに送ります。

サーバとクライアントの間の通信には、BSD系UNIX のソケットを利用します。 System V系UNIXでも、BSD系のネットワーク機能を取りこんでいるものは動 作することがあります。詳しくは、Makefileの記述を読んでください。

サーバとクライアントは、ネットワークで接続された異なる計算機上で動か すことができます。」

「(3)自分の ~/.skk ファイルに以下の行を追加します。

(setq skk-portnum 1178)

(4)SKKを使う前に、skkservを走らせる計算機上で、自分で、

skkserv

として、起動します。(SKKよびだし時に、skkservは自動的に起動されるよ うになっていますが、必ずしも成功しません。安全のため、あらかじめ起動 しておいてください。)」

unixな世界のソフトの初期設定はファイル名のないドットと接尾辞だけから なるテキストファイルに書かれる。テキストエディターのmeadowではホーム ディレクトリの「.emacs」という名前のファイルになる。これらの内容はまっ たくのプレインテキストでプログラムのコマンドを使って書かれている。

大抵は無難な設定を書いた初期設定のデフォルトが用意されている。 dot.emacsとかdefault.emacsという名前で付属している。さらに「skkを使う ぞ」と.emacsで宣言しさえすれば細々と設定しなくても一般向けの無難な設定 を使うようになっている。skkに関してはskk-setup.el がそのためのものであ る。

全ての設定が白紙状態では困るのでとりあえずそのソフトウェアが機能する 最低限の設定として当たり障りのない無難な設定にしてある。あとは使用者 が慣れるに従ってアレンジしてもらうことにする。

skkの設定もその内部に原始的な初期設定(skk-setup.el)があり、emacsを起 動すると「.emacs」に書かれたskkに関する初期設定を読み、さらにskk専 用の設定ファイル「.skk」を順次読み込む。

先に読み込まれたものは後に読み込まれたもので上書きされる。ただし先 に読まれた内容が後で変更されないかぎり最初からあるものはそのまま変更さ れずに残る。白紙状態に戻しての書き換えではなく各項目ごとに変更があれば 追加書きして更新する。そのため同じ内容をどの設定ファイルに書くかで最終 結果として残るかどうかが分かれる。

今回の初回変換三十秒問題は設定の一部を.emacsから.skkに移すことで解決 したようである。wceskkservとwskkservのどちらでも同じであったので個別 ソフト特有の問題ではないだろう。

(後日談)一応の決着をみてこの記事を書き終えてから次に気付く。実は ~/.skkには

(setq skk-server-host "localhost")

と書いているが~/.emacsは次のようにlocalhostではなく127.0.0.1として いた。

(setq skk-server-host "127.0.0.1")

気になったので~/.emacsの方をlocalhostにしてみる。そして (setq skk-server-portnum 1178)のコメント化を解除する。さらに~/.skkも 削除してしまう。これでも初回変換30秒問題は解消する。結局のところ 最終の~/.emacsの設定は次になる(~/.skkは使わない)。

(setq skk-large-jisyo nil)
(setq skk-server-host "localhost"
      skk-server-portnum 1178)

随分と遠回りをしてしまった。どうして127.0.0.1を受け付けないのだろう。 もしかしたらタイプミスだったのかもしれない。

「DDSKK 11以降、設定が非常に簡単になりました。DDSKK 13では、標準的なイ ンストールの場合、なにも設定せずEmacsを起動するだけで使える状態になっ ています。自動的に`skk-setup.el'というファイルが読み込まれ、設定されま す。
もし、この自動設定によらず、手動で設定をしたい場合は、以下の説明を参 照してください。」
「1987年に、東北大学教授(当時)佐藤雅彦によって開発された。本家での 開発終了が2000年11月頃に宣言され、現在はSKK Openlabが開発を行ってい る。SKK OpenlabがリリースするSKKには、Daredevil SKKの名が付けられて いる。」

daredevil: 向こう見ずな, person who is foolishly bold

ラージ辞書と人名辞書を辞書サーバーに登録する

現在はラージ辞書に加えて北極三號という旧仮名の辞書と人名辞書を wceskkservに登録している。ラージ辞書はmeadowのディレクトリに置いたま まとし他は別ディレクトリに置いている。wceskkservに辞書を登録するとす ぐにインデックスファイルが作られる。そしてすぐに使えるようになるよう である。

人名の変換候補が増えたことで辞書サーバーがちゃんと動いていることを実 感する。私の名前である「よしひろ」を変換すると100個あまりの候補が挙 がる。なお、ラージ辞書には30個ほどの候補がある。

2チャンネル情報によるとskkの人名辞書の4行目に空行が入っているため辞 書をmeadowの~/.emacsへ追加登録する方法では検索できないトラブルがあるら しい。辞書サーバー経由なら問題ないという。現用の辞書サーバーwceskkserv に登録している人名辞書をテキストエディターに読み込んでみると確かに4行 目は空行になっている。

|

« ローカルhtmlファイルに埋め込んだyoutube動画が再生されない | トップページ | skkのzコマンド(隠しコマンド?) »

「パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/520565/47019813

この記事へのトラックバック一覧です: skk辞書サーバーwceskkservでの初回変換に三十秒かかるトラブル解決:

« ローカルhtmlファイルに埋め込んだyoutube動画が再生されない | トップページ | skkのzコマンド(隠しコマンド?) »