白井です。

とりあえず、(個人的には満足した)郵便番号変換ツールが出来ました。
大泉さんの gendic_zip.rb には多謝です。

gendic_zip.rb と比べて変わった点は、

・Emacs Lisp で書いたので、(ぼくにとっては)改造が容易で、辞書が
  新しくなったときに、もし必要であっても、例外処理の追加はそれな
  りに簡単だと思う。

・()内部の展開に可能な限り対応
 ==> 固有の地名と思われるものはすべて展開
 ==> 何丁目[(1,2丁目) (1〜5丁目) etc]の展開もサポート

・事業所データベース対応
 ==> 株式会社→(株) のような短縮名対応
 ==> 但し、事業所の名称部分のフリーフォーマット具合はすさまじい
  のでミスもありそう。

といった感じです。有用だと思われたら使ってください。

コード自体は、結局、例外処理の対応をスパゲティ的に付け加えていっ
たので、(汎用性はそれなりに維持しているとは思いますが)とても汚い
コードになっています。

elisp と こんな感じで OK という shell script を付けておきます。
今回は Anthy (ついでに SDIC) だけですが、フォーマットがわかれば
他の形式にするのもそんなに難しく無いかな?

--
白井秀行 (mailto:shi...@meadowy.org)

Attachment: zipcode-make.el.gz
Description: Binary data

#!/bin/sh

EMACS=emacs; export EMACS
# EMACS=Meadow; export EMACS

if [ ! -f ken_all.lzh ]; then
    wget http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzh
fi
if [ ! -f ken_all.csv ]; then
    lha ptq ken_all.lzh > ken_all.csv
fi
if [ ! -f jigyosyo.lzh ]; then
    wget http://www.post.japanpost.jp/zipcode/dl/jigyosyo/lzh/jigyosyo.lzh
fi
if [ ! -f jigyosyo.csv ]; then
    lha ptq jigyosyo.lzh > jigyosyo.csv
fi

$EMACS -batch -q -no-site-file -l ./zipcode-make.el -f zipcode-make
P.S.

gendic_zip.rb ですが、もう一点バグを見つけました。手元に ruby
1.9 が無いので動作確認はしてないのですが、

ken_all.each{|item|
  if item[1] =~ /[0-9A-Z()─]/
    hankaku << [item[0], item[1].tr("0-9A-Z()─", "0-9A-Z()-")]
  end
}

=>

ken_all.each{|item|
  if item[1] =~ /[0-9A-Za-z()─]/
    hankaku << [item[0], item[1].tr("0-9A-Za-z()─", "0-9A-Za-z()-")]
  end
}

だと思われます。
_______________________________________________
Anthy-dev mailing list
Anthy-dev@lists.sourceforge.jp
http://lists.sourceforge.jp/mailman/listinfo/anthy-dev

Reply via email to