日本郵便の郵便番号データを解析してみる 第1回~住所のマージ編~

郵便番号検索 – 日本郵便が提供している郵便番号データ(住所データ)は、郵便番号検索系のさまざまなサイトで利用されていますが、クセがある事でも知られています。
今回は、zipnaviの開発を行った中で見つけた「クセ」を何回かに渡って紹介していきたいと思います。

とりあえず第1回という事で、住所データのマージについて紹介したいと思います。
ご存知の方もいるかと思いますが、 日本郵便から提供されている郵便番号データは、同じ郵便番号で複数のレコードが存在するケースがあります。
また以下の様に複数のレコードの「町域名」、及び「町域名カナ」を繋げる事によって始めて1つの情報になる場合があります。※赤字の部分が町域名です。
町域名カナも同様ですが、基本的に町域名と同じなので、黒字のままにしています。

01224,”066 “,”0660005″,”ホッカイドウ”,”チトセシ”,”キョウワ(88-2、271-10、343-2、404-1、427-“,”北海道”,”千歳市”,”協和(88-2、271-10、343-2、404-1、427-“,1,0,0,0,0,0
01224,”066 “,”0660005″,”ホッカイドウ”,”チトセシ”,”3、431-12、443-6、608-2、641-8、814、842-“,”北海道”,”千歳市”,”3、431-12、443-6、608-2、641-8、814、842-“,1,0,0,0,0,0
01224,”066 “,”0660005″,”ホッカイドウ”,”チトセシ”,”5、1137-3、1392、1657、1752バンチ)”,”北海道”,”千歳市”,”5、1137-3、1392、1657、1752番地)“,1,0,0,0,0,0

※2010/2/26日更新分のデータより抜粋

上記の様なデータは町域名の文字を繋げないと、郵便番号検索エンジン用のデータとして扱うには無理があります。
同じ郵便番号で複数あるレコードの「町域名カナ」と「町域名」それぞれを繋げて1レコードにすると、以下の様な感じになります。

01224,”066 “,”0660005″,”ホッカイドウ”,”チトセシ”,”キョウワ(88-2、271-10、343-2、404-1、427-3、431-12、443-6、608-2、641-8、814、842-5、1137-3、1392、1657、1752バンチ)”,”北海道”,”千歳市”,”協和(88-2、271-10、343-2、404-1、427-3、431-12、443-6、608-2、641-8、814、842-5、1137-3、1392、1657、1752番地)“,1,0,0,0,0,0

では、どのような(判断)条件で複数レコードを1件にまとめたらよいのか?
郵便番号データの説明 – 日本郵便にはそれを断定するような情報は書かれていません。

という事は自力で何らかの法則を見つけ出す必要があるのですが、郵便番号データの落とし穴 | YU-TANG’s MS-Access Discoveryのサイトに詳しい情報が書かれています。

フラグ4(一つの郵便番号で二以上の町域を表す場合の表示)が 0(つまり一つの郵便番号で一つの町域を表す)で、尚かつ同一郵便番号のレコードが 2 レコード以上の場合、マージする必要がある

※ちなみにこちらのサイトは以前から何度か参考にさせてもらっています。

また以下の様な意見も同サイトに寄せられています。

「引用」2009/7の時点では、フラグ4を参照するのではなく開き括弧と閉じ括弧の対応をとっていけば確実にマージが可能です。

※2005/11/24の記事より
後者の内容について具体例を挙げると以下の様な感じです。
同一郵便番号で複数存在するレコードには、「町域名」が「」で始まるレコードと、「」で終わるレコードと、「(」と「)」のどちらもないレコードがあります。
」で始まるレコードを連続するデータの始まりとして、「」で終わるレコードを連続するデータの終わりとして、「(」と「)」のどちらもないレコードを挟めば、1件のデータとして繋げる事が出来るという事です。
(下記のケースを参照)

01224,”066 “,”0660005″,”ホッカイドウ”,”チトセシ”,”キョウワ(88-2、271-10、343-2、404-1、427-“,”北海道”,”千歳市”,”協和88-2、271-10、343-2、404-1、427-”,1,0,0,0,0,0
01224,”066 “,”0660005″,”ホッカイドウ”,”チトセシ”,”3、431-12、443-6、608-2、641-8、814、842-“,”北海道”,”千歳市”,”3、431-12、443-6、608-2、641-8、814、842-”,1,0,0,0,0,0
01224,”066 “,”0660005″,”ホッカイドウ”,”チトセシ”,”5、1137-3、1392、1657、1752バンチ)”,”北海道”,”千歳市”,”5、1137-3、1392、1657、1752番地“,1,0,0,0,0,0

両者2点について、簡単ですが自分なりに考察してみました。
先ず前者の方法ですが、2010/2/26現在の郵便番号データでは例外が2ケースほどあります。
※以下のデータです。

27142,”59001″,”5900111″,”オオサカフ”,”サカイシナカク”,”ミハラダイ(2チョウ11-7・9-17・21、3チョウ59-2-18・21-25、”,”大阪府”,”堺市中区”,”三原台(2丁11-7・9~17・21、3丁59-2~18・21~25、”,0,0,1,1,0,0
27142,”59001″,”5900111″,”オオサカフ”,”サカイシナカク”,”4チョウ60-1・107-3-12・16-21)”,”大阪府”,”堺市中区”,”4丁60-1・107-3~12・16~21)”,0,0,1,1,0,0

44203,”871 “,”8710046″,”オオイタケン”,”ナカツシ”,”カナヤ(ウエノチョウ、ナカノチョウ、ニシノチョウ、ホンマチ、ミナミノチョウ、”,”大分県”,”中津市”,”金谷(上ノ丁、中ノ丁、西ノ丁、本町、南ノ丁、”,0,0,0,1,0,0
44203,”871 “,”8710046″,”オオイタケン”,”ナカツシ”,”モリノチョウ、ヤマノカミ)”,”大分県”,”中津市”,”森ノ丁、山ノ神)”,0,0,0,1,0,0

上記2つのデータは、フラグ4(赤字部分)が1であるにも関わらず、複数のデータに分割されています。

また、後者については2009年7月現在は例外は無いようです。

上記の内容からすると、前者においては、この様な例外が発生している事から、フラグ4についての信頼性は現時点では低いと言えます。
※記事が書かれた2005/11/24時点では例外が無かったのかも知れませんが、その後例外が発生した可能性があります。
 当時のデータが無いので断定はできませんが・・・

とすると、現時点では後者の方が信頼性が高いと言えます。
ただ、これを示す明確な根拠が日本郵便より出ていないので、いつの日か例外が発生するかもしれません。

結果として郵便番号データをマージする際には、上記の様なクセに気につける必要があるという事です。
現実的には後者の方法がベストと言えますが、人の目で日々例外が発生しないかチェックする必要もありそうな感じでした。

上記のケースを考慮した結果は、郵便番号検索 -zipnavi-にて実際に確認できます。

カテゴリー: flashcast, zipnavi, 郵便番号検索 パーマリンク

日本郵便の郵便番号データを解析してみる 第1回~住所のマージ編~ への4件のフィードバック

  1. じふ のコメント:

    はじめまして.日本郵便のKEN_ALL.csvから何とか住所展開をしようと奮闘しています.

    SQL Serverで第1正規形の手前の非正規形まで持って行ってみました.Flag13を使う方法と,括弧の対応と両方をやってみました.ろっきーさんの方法はどんなものだったんでしょうか?よろしければ教えてください.

  2. じふ のコメント:

    回答ありがとうございました.大変参考になりました.

  3. ピンバック: my-hobby : 日本郵便の郵便番号データを解析してみる 第2回~括弧の意味編~

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です