HeadlinesBriefing favicon HeadlinesBriefing.com

日本郵便CSVの解析

Hacker News •
×

数年前にposutoをリリースしました。これは日本郵便データを扱いやすい形式で提供するパッケージです。これは日本郵便が発布したデータに基づいており、広く利用されているが解析が難しいとして知られています。私が日本郵便データに初めて気づいたのは、オンラインフォームに郵便コードを入力すると住所が"XXX-borough(除以下建物外)"として自動補完されたことでした。その丸括弧内の内容が何を指しているのかわからなかったので、郵便データの一般的な情報源を探し、CSVを見つけて問題を発見しました。実はCSVファイルには、CSVファイルを読み込む人のための丸括弧内注釈が含まれており、行の順序に関する参照を含んでいます。これは問題を引き起こします。このデータは主に1行ずつ利用する場合に丸括弧内の注釈は無意味です。CSVはフィールド区切り形式であるため、丸括弧は不要です―単に注釈フィールドを追加すればよいのです。これはken_all.csvの問題の1つにすぎません。Twitterで定期的に人々がこれを嘆いているのを見つけることができ、また一時期ブログがこの問題についてウェブ全体からの投稿を収集していました。特に面白いツイートは、人間の意志に従おうとするコンピュータに対する期待に応えず、永遠にken_all.csvを解析し続けることで地獄で罰せられるという描写です。このファイルのREADMEにより、フィールドが極端に長い行は複数の行に分割されることが説明されています。具体的には、地域名が38文字を超える場合、または半角カタカナの読み仮名フィールドが76文字を超える場合、行は2つの行に分割されます。極端に長い地域フィールドは継続され、すべての他のフィールドは複製されます。また、長さの制限は記載されているが、長い行での改行位置は文字制限や通常の語の境界ではなく、ランダムに表示されることに注意すべきです。CSVの問題のいくつかは本質的に技術的なものではないことにも注目すべきです。郵便番号は常に複雑です。CSVで最も行数が多い郵便番号――驚くべき66行――は〒452-0961であり、愛知県清津市のHaruhi地域を指します。このためには各地域ごとに別々の行が必要なのです。一方、上記の改行ルールを使用して最も長い継続行は、〒602-8368または〒602-8374のエントリであり、いずれも8行の長さです。どちらも京都の数少ないエリアで、独自の不自然な交差点ベースの住所システムを使用しています。多くのエリアには「全域」郵便番号があり、地域が"除以下"として指定され、正確な文字列を探して除外するしかありません。類似した文字列は多数あり、すべて捕捉できたかどうかは不明です。他のコメントの例としては、一円が挙げられます。通常は"一円"とは一円のことですが、これは「周辺地域」を意味し、CSV内の注釈であり、地域名から削除すべきです、ただし...