「とにかく日本の住所のヤバさをもっと知るべきだと思います」に、住所正規化コンバータはどこまで応えられるのか、やってみた

note.com

を読みました。私自身も日本の住所の扱いを何とかしないと業務アプリケーションの運用に支障が出ると感じ、2003年に「住所正規化コンバータ」というソフトウェアをリリースし、20年が経過しました。現在は国際航業株式会社様に取り扱っていただいています。

www.kkc.co.jp

このブログにあるような指摘にどこまで応えられただろうかということで、社内で試してみました。利用したバージョンは最新の R7.2.0 で、住所マスタは2022年秋版と組み合わせました。その結果を公開します。

住居表示

丁目表記と地番表記の混在に対応しています。

浦安市舞浜2-1-1

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
2790031 千葉県 浦安市 舞浜 2 1-1 号レベル

浦安市舞浜2-11

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
2790031 千葉県 浦安市 舞浜 2 11 番地(番)レベル

[2023.6.10追記] 舞浜は "2丁目11番" が存在します。そのため入力が "2-11" のとき、"2番地11" との違いを判定できません。この場合は丁目を優先させるようにしています。なお入力文字列が "2番地11" と書かれている場合は、小字・丁目なしで、番地・号を "2-11" と解釈します。

"丁目" という町域

静岡県下田市2丁目4-26

市の次に、"丁目" という町域をもつパターンです。

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
4150022 静岡県 下田市 二丁目 4-26 号レベル

"二丁目" を町域名として認識しています。マッチレベルも正しく号レベルです。

いきなり番地

奈良県御所市1-3

やってみましょう。

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
6392200 奈良県 御所市 1-3 号レベル

できました。なお内部ではカナおよびローマ字もあるので「ゴセシ (Gose-Shi)」も取得できます。

丁目番地がアルファベット等

大阪、ユニークですね。

大阪市中央区上町A-12

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
5400005 大阪府 大阪市中央区 上町 A-12 号レベル

番地号に「A」が入りました。

大阪市中央区久太郎町4丁目渡辺

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
5410056 大阪府 大阪市中央区 久太郎町 4 渡辺 番地(番)レベル

番地号に「渡辺」が入りました。

千葉県香取市佐原イ2685

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
2870003 千葉県 香取市 佐原 2685 番地(番)レベル(「号」情報の存在しない番地)

マッチレベルに "(「号」情報の存在しない番地)" と但し書きが含まれています。

千葉県八街市八街は18番地2

ヤチマタシ、ですね。

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
2891107 千葉県 八街市 八街 18-2 号レベルマッチ

号レベルでマッチしています。

千葉県八街市八街八18-2

誤って "は" を "八" と入力されたら、どうなるでしょうか。

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 正規化できなかった文字列 マッチレベル
2891103 千葉県 八街市 八街 八18-2 号レベルマッチ

"八" にマッチする町域や小字は、ない、と正しく解釈しています。なおこれらの文字は捨てるのではなく、正規化できなかった文字列として扱われます。

同じ名称が連発

インパクトがある住所です。

長野県長野市南長野県町477-1

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
3800838 長野県 長野市 南長野 県町 477-1 番地(番)レベル(「号」情報の存在しない番地)

"県町" (アガタマチ)が小字として認識されています。

同じ住所でビルが別

渋谷区道玄坂2-6-2

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
1500043 東京都 渋谷区 道玄坂 2 6-2 号レベルマッチ

号レベルで認識されました。ちなみに、建物名を含む住所が入力された場合、番地号以降の文字列を建物名として扱います。

異体字

住所正規化コンバータは異体字も解釈します。

千葉県香取市佐原ロ2127

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
2870001 千葉県 香取市 佐原 2127 番地(番)レベルマッチ

ロ (Ro) を解釈できています。

千葉県香取市佐原ろ2127

Ro をひらがなで入力しても…

郵便番号 都道府県 市区町村 町域 小字・丁目 番地・号 マッチレベル
2870001 千葉県 香取市 佐原 2127 番地(番)レベルマッチ

結果は同じになりました。同じ結果になる = 正規化処理が正しく動作している、となります。

その他の機能

上の例には記載していませんが、住所コード、建物名、かな、緯度経度付与など、さまざまな機能があります。また入力文字列も漢数字混在や、さまざまな長音記号の認識、"霞ヶ関" の "ヶ" を "ケ" や "が" とした場合も正しく処理されます。旧住所入力や、合併処理にも対応しています。さらにオプションで、緯度経度から住所への変換機能も用意しています。(リバース・ジオコーディング)

まとめ

今回はヤバい住所がこれでもか、とでてきましたが、すべて対応できていることを確認できました。

この変換精度に至るまで、パターンマッチングルールを地道に実装してきた開発者、そして住所データ整備に日々、ご尽力いただいている多くの関係者にあらためて敬意を表します。