2015-04-04のメモです。
主に関ジン研(関東ジンギス研究会)からのリンクのためと、食べ歩きの際に前回いつ行ったかを自分で検索するために記述を残しています。稀に雑多なことを書いたりもします。
先日の、『風』Ver.2 の辞書をsms.txtにするRubyスクリプトで変換した sms.txt に「餃」の字がない件の続き。
辞書の中身を見る限り、『風』Ver.2 の辞書をsms.txtにするRubyスクリプトの仮定に少し間違いがあるような気がする。
2つ目は少し説明が必要かもしれない。RubyスクリプトではWind2.dic内にある yomiのエントリを、1バイトのkey_code と 2バイトの漢字であるという処理になっているけど、実際には key_code が 1バイトであるとは限らないみたい。具体的には、key_codeが 1〜254 だと \x01〜\xFE の 1バイトで、key_code が 255以上(理論上 509以下)は \xFF\x00、\xFF\x01、\xFF\x02、\xFF\x03 … の 2バイトで表現しているように見える。これ、自然数 n = 255q_n + r_n (但し 0≦r_n<255)を、q_n個の \xFFに r_nのバイト表現を連結したバイト列(計(q_n + 1)バイト)として表現するような、接頭符号化の一種*1なんじゃないかな。
とりあえず、これを正しいものと仮定して Rubyスクリプトを修正してみたところ、sms.txtにおける「コウ」の読みに対応する出力が、7ページ目も 8ページ目も含めて『風』の表示する仮想鍵盤と一致した。きっと、辞書のヘッダも何か情報を持っているのだろうけど、sms.txtにするだけならどうやらこれでうまくいっているみたい。
*1 この場合、接頭部集合は \x00〜\xFE(符号語は接頭部そのもの)と \xFFの 1個以上連続したバイト列(符号語は接頭部とその次の \xFF以外の 1バイト)から構成される。
最近のツッコミ: