[Anthy-dev 3740] Re: 郵便番号のデータ

Back to archive index

Jun Oizumi vagus****@gmail*****
2010年 6月 2日 (水) 01:32:13 JST


大泉です。

> 現在、変換毎にファイルを open し、parse し、探すという実装になっ
> ています。

> ここは、データの形式と検索方法の二つの方向で改善が望まれますか。
>
> (1) データの形式
>
> もし、データの形式を、prefix を共通部分とする文字列という形式にすると、
> ファイルの大きさはだいぶ小さくできますよね。
>
> 例えば、現在の形:
>
>   0010010 #CNS 北海道札幌市北区北十条西 北海道札幌市北区北十条西1丁目 北海道札幌市北区北十条西2丁目 北海道札幌市北区北十条西3丁目 北海道札幌市北区北十条西4丁目
>
> は、"北海道札幌市北区北十条西" が 0 のエントリとすれば、
>
>   0010010 #CNS <0> <0>1丁目 <0>2丁目 <0>3丁目 <0>4丁目
>
> と短く収められます。
>
> 今、4MB 以上もありますもん。

「変換毎にファイルを open し、parse」するならファイルサイズは小さい方が
いい訳ですね。

それに関連して思いついたことがあるのでちょっと。
といっても、大したことではないですが。

現在、品詞コードは "CNS" になっていますが、これは、別に "CNS" でなければ
ならない理由はなく、"CN" でもいい。
(ちなみに、alt-cannadic では CNS は不使用で、地名はすべて CN です)

"CN" にすると、1行につき "S" の 1バイト分小さくなるので、ファイル全体では
(1 * 行数)バイト小さくなります。
昨日上げた zipcode.t は 125,897行なので、125,897バイト小さくできます。

# 昨日上げた zipcode.t は「1行1エントリ」形式にしてありますが、
# Anthy 同梱の zipcode.t のように「1行複数エントリ」形式にすると行数が減るので
# 減らせるバイト数もその分減りますが。

ファイル全体のサイズからすればささやかかもしれませんが、"CNS" にしておく
理由は何もないので、"CN" にしてしまっていいと思います。

もっと言うと、郵便番号辞書の品詞コードが「地名」というのも何か変なので、
新規に「無品詞」という品詞コードを作って、それに "N" とか "Z" とかアルファベット
1文字の品詞コードを割り当てれば、1行につき 2バイト分小さくなります。
が、「そこまでしなくても」という気もします。




Anthy-dev メーリングリストの案内
Back to archive index