こうかの雑記

こうかの雑記

昔の懐かしいこと、ubuntuのこと、その他いろいろ

日本郵政株式会社の郵便番号データについて

 linuxのmozcユーザー向けに「mozc用郵便番号辞書データ(2019年10月版)の提供」で辞書データを公開しています。

 mozc用の辞書データは今後も適宜、このブログで最新版をアップしていく考えです。

 今回は辞書データの元になる日本郵政株式会社の郵便番号データについての紹介します。WindowsMacの場合の辞書の更新についてはよく知りませんが、このデータの構造をがわかればプログラミング経験のある方なら自分で処理できると思います。
 私のスクリプトを公開出来ると良いのですが、多分、今後も保守することになると思いますので暫くは非公開で行こうかと思っています。
 WindowsMaclinuxいずれであれ、ご自分でされるという方のお役に立てれば幸いです。

郵便番号データのダウンロード

 この郵便番号データは日本郵政株式会社のサイトからダウンロードできます。
 

www.post.japanpost.jp

ダウンロードページから望むタイプの住所の郵便番号データを選びます。
 実際的な選択肢は、次のいずれかになると思います、
 ■住所の郵便番号(CSV形式)
 ・読み仮名データの促音・拗音を小書きで表記しないもの
 ・読み仮名データの促音・拗音を小書きで表記するもの
 ■住所の郵便番号(ローマ字)(CSV形式)
 ・住所の郵便番号(ローマ字)

 私は「読み仮名データの促音・拗音を小書きで表記するもの」を選びました。どうせ郵便番号から住所への変換なので、読みは必要ないのですが。
 選ぶと都道府県一覧が表示され、特定の都道府県のみを選ぶことが出来ますが、ここは全国一括を選びます。

郵便番号データのファイルの構造について

 全国一括のファイル名はKEN_ALL.ZIPでダウンロードされます。
 このファイルはcsv形式のテキストファイルとなっています。12万件強のデータがあり、1件は15の項目で構成されています。
 文字のエンコードはShift-JISが使われています。libreofficeのCalcでは読み込む際に選択出来ます。Excelは忘れました。ubuntuのエディタgeditは自動判別して読み込んでくれます。

 次に15項目を列挙します。
 01 全国地方公共団体コード……… 半角数字
 02 (旧)郵便番号(5桁)……… 半角数字
 03 郵便番号(7桁)……………… 半角数字
 04 都道府県名 …………………… 半角カタカナ
 05 市区町村名 …………………… 半角カタカナ
 06 町域名 ………………………… 半角カタカナ
 07 都道府県名 …………………… 漢字
 08 市区町村名 …………………… 漢字
 09 町域名 ………………………… 漢字
 10 一町域が二以上の郵便番号で表される場合の表示
 11 小字毎に番地が起番されている町域の表示
 12 丁目を有する町域の場合の表示
 13 一つの郵便番号で二以上の町域を表す場合の表示
 14 更新の表示
 15 変更理由

 辞書データに必要な項目は03〜09の7項目です。他は不要です。
 06の町域名(カナ)と09の町域名(漢字)はそれぞれが76文字、38文字を超える場合は複数行に分かれています。

 以上が日本郵政株式会社のサイトで説明されている内容を整理したものです。
 10〜15の項目の注書きを省略しました。
 03〜08までは特に問題はありません。
 09の町域名は単純ではありません。

町域名(漢字)について (追加の説明)

 これより町域名(漢字)について私が調べた事を追加します。12万件と大量のデータであり、見落とした記述方法があるかも知れません。他に気づかれた方がおられましたら連絡頂けると助かります。

 この項目の内容は次のように3のタイプに区別できます。

タイプ1)郵便番号と都道府県名+市区町村名+町域名が1対1の行

 そのまま加工しなくても辞書データに各項目を使えます。

タイプ2)特定の文字列が含まれている行
  "以下に掲載がない場合"
  "の次に番地がくる場合"
  "(無番地を除く)"
  "無番地"
  "(次のビルを除く)"
  "(地階・階層不明)"
  "(その他)"

 これらの文字列を除外(ヌル文字に置き換える)すればタイプ1と同様に扱えます。

タイプ3)郵便番号と都道府県名+市区町村名+町域名が1対複数の行

 a)町域名の文字数が多すぎる場合、一行ではなく複数行になっています。
   京都市内に特に多いです。
 b)町域名の中にカッコで複数の地域や番地などがカンマで列挙されています。
 c)時に"〜"で範囲が示されていたり、"以上"で下限を示していたりします。
   この範囲をどう扱うかが問題になります。
   私は"〜"、"以上"がある場合はカッコ内をヌルにして単純化しました。
 d)"「"、"」"を含む場合、b)、c)も含み機械的処置が難しい場合があります。
   私はカギカッコ内をヌルにして単純化しました。

 c)、d)の単純化は結果として正解だと私は考えています。例えば範囲指定の範囲が狭けければ問題ないですが、広いと変換候補が大量になって却って使いにくくなります。

 列挙されたものから新しい行を作れば使えます。 
 列挙されている例とその分割した例を簡略化して示します。

列挙されている行の例
 "6028064","京都府","京都市上京区","一町目上長者町通堀川東入東堀川通上長者町上る東堀川通中立売通下る)"
 下線部分が列挙されている部分

分解された後の行の例
 "6028064","京都府","京都市上京区","一町目上長者町通堀川東入"
 "6028064","京都府","京都市上京区","一町目東堀川通上長者町上る"
 "6028064","京都府","京都市上京区","一町目東堀川通中立売通下る"  

 この例では郵便番号、都道府県名、市区町村名と町域名の中の"一町目"が共通部分で、これらに列挙部分を加えて新しい行を作っています。

 以上が追加の説明です。実際に収納されているデータを見てみることをお勧めします。あまりにも件数が多いのでウンザリとなってしまいますが(笑)。

辞書データの作成

 出力フォーマットをそれぞれのOSのIMEに合わせて作り込めば良いかと思います。 mozcの場合はフォーマットがわかりますが、その他については私にはわかりません。既にWindowsは使っていませんから。


Windowsの場合 

 次のような記事を見つけました。2018/12月の記事なので2019年現在では、記事中で紹介されているツールが使えるのではないでしょうか。

kzstock.blogspot.com この記事の中で「MS-IMEと同じ配置となるように列の並びを調整するスキルがあれば、「郵便番号辞書登録お助けツール」は必須ではありません。」とあるので自作も簡単かも知れません。

 

mozcの場合
 mozcの辞書の更新用ファイルの仕様は次の様になっています。
 TAB区切りによるcsv形式です。
 辞書項目名 郵便番号項目名 
  読み  : 郵便番号 
  単語  : 都道府県名+市区町村名+町域名 
  品詞  : "短絡よみ"という文字定数です。
  コメント : 都道府県名カナ+市区町村名カナ+町域名

 例

014-0071/t秋田県大仙市蛭川/t短縮よみ/tアキタケンダイセンシヒルガワ

  (/tはタブを表しています)