住所の正規化

住所の正規化

[1] 「住所の正規化」 なるものの大多数が「正規形」として選んでいるのがオレオレ基準ばかりなのが謎。

[2] 本来ならオリジナルに近い「正規形」を選ぶのがセオリーだろうに、 オリジナルを持ってるはずの行政機関もオレオレ基準で勝手に変形して使ってたりするから闇。

[3] 住所正規化のデモ機能を作ったので、日本のヤバい住所を入力してみた, https://zenn.dev/sikkim/articles/bc86fbcac3a9fd

結論から言うと、「浦安市舞浜2-11」を一意に正規化するのは不可能です。「舞浜2番地11」と「舞浜二丁目11番」という住所がどちらも存在するため、「浦安市舞浜2-11」と書かれたら、人間でもどちらなのか判断できません。「舞浜二丁目11番」の方は、後ろに住居番号が付くはずだからその有無で判別できるのでは、と思われるかもしれません。では「浦安市舞浜2-11-101」は必ず「舞浜二丁目11番101号」(この住所は実際には存在しません)だと判断してよいでしょうか。残念ながら、そうとは限りません。「舞浜2番地11」の101号室を表している可能性があるからです。

というわけで、「浦安市舞浜2-11」は二丁目11番なのか、2番地11なのかという問題に正解はありません。Addressianでは今のところ、「浦安市舞浜2-11」を舞浜二丁目11だと判断するロジックを採用しています。

[4] 不可能だと理解しているのに、答えを1つだけ選ぶという設計にしているのが謎。

[5] 「住所の正規化」したい人達はデータの破壊を受け入れてまで「正規化」を重視するってこと!?

[6] ライブラリーだったらあり得る答えを全部提示してアプリケーションに判断を選ばせるか、 処理不能を返すかのどちらかを基本動作にするべきだよなあ。