Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
romajip: 日本の住所CSVデータを活用した英語住所変換ライブラリを作った話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
sangun kang
November 22, 2024
Programming
0
3.5k
romajip: 日本の住所CSVデータを活用した英語住所変換ライブラリを作った話
https://jsconf.jp/2024/talk/kang-sangun/
sangun kang
November 22, 2024
Tweet
Share
More Decks by sangun kang
See All by sangun kang
ペパボ ホスティング事業部のブラウザレンダリング基本知識 2022 / Browser Rendering Basics of pepabo hosting division
sangunkang
0
9.7k
Other Decks in Programming
See All in Programming
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
620
AgentCoreとHuman in the Loop
har1101
5
250
CSC307 Lecture 02
javiergs
PRO
1
780
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
Raku Raku Notion 20260128
hareyakayuruyaka
0
370
Metaprogramming isn't real, it can't hurt you
okuramasafumi
0
100
CSC307 Lecture 07
javiergs
PRO
1
560
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
130
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
Oxlint JS plugins
kazupon
1
1k
Python’s True Superpower
hynek
0
110
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Crafting Experiences
bethany
1
55
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
Navigating Weather and Climate Data
rabernat
0
110
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Everyday Curiosity
cassininazir
0
130
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
190
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Transcript
romajip 📮 日本の住所データを活用した英語住所変換ライブラリを作った話 2024-11-23 / JSConfJP / Sangun Kang
姜 相雲(カン サンウン) / 韓国 日本6年目 / GMOペパボ
もくじ • 「romajip」ってなに? • 巨大な住所の世界へ ◦ こだわり ◦ 苦労した部分 •
今後やること
「romajip」ってなに? 普段の英語住所を検索する方法
「romajip」ってなに? https://romajip-demo.vercel.app/ 郵便番号を使わず、 「日本語住所」を「英語住所」に変換するライブラリ
• WHOISで必要な英語住所情報入力 を簡単にしたい • リポジトリだけ作って1年放置 • お盆休みで作った ムームードメイン 「romajip」ってなに?
巨大な住所の世界へ
都道府県: 43 市区町村: 1,714 町名: めっちゃ多い romajiでは小字は除外 巨大な住所の世界へ
巨大な住所の世界へ 日本の住所マスタは郵便局とデジタル庁がCSVで提供 郵便番号ベースの郵便局 もっと具体的な住所を集めたデジタル庁
巨大な住所の世界へ 一般的には郵便局の住所を利用
巨大な住所の世界へ 「romajip」はデジタル庁のデータを利用 目的は「日本語」住所を「英語」に変換
こだわり
巨大な住所の世界へ - こだわり 男は数字に 頼らない 郵便番号を使わないと決心 → 郵便番号使った方が圧倒的に楽 → 「日本語」を使うパタンがない
→ データセットの設計、処理に苦労 設定Zero,すぐ使えるOSSを目指す → デカいCSVを必要な情報だけ最適化して ライブラリのバンドルに含める その結果。。
巨大な住所の世界へ - こだわり ユーティル系ライブラリとして許せないサイズ
苦労した部分
• 標準化されてそうで そうでもない各自の住所 • 日本橋と日本橋 • 志布志市志布志町志布志 • 兵庫県南あわじ市市市 巨大な住所の世界へ
- 苦労した部分
巨大な住所の世界へ - 苦労した部分 • 初期は行政区画の基準にデータ セットを生成 • 日本語住所もそれを基準にSplit • 探せないケース多い
• 地域によって少し違う
巨大な住所の世界へ - 苦労した部分 • 初期のデータセットを捨てる • 各地域の関係性を単純に 上位Treeと下位Treeに変更 • split
-> Longest Match
事前に用意されたデータセットを基準に 日本語住所を「longest match」し、下 位Nodeが無くなるまで繰り返す 住所のデータセットは 日本語 : 英語 形 式のオブジェクトになる
「Longest Match」とは? 入力文字列の先頭から、一番長く一致する部分を探す手法 例えば「福岡県福岡市中央区」の場合: 1. 最上位Nodeでは「福岡県」が一致する -> 「Fukuoka-ken」を返す 2. 下位Nodeでは「福岡市」が一致する -> 「Fukuoka-shi」を返す 3. 下位Nodeでは「中央区」が一致する -> 「chuo-ku」を返す これにより、市市(イチシ)のように行政区画名が入る地名も安全に検索ができる 巨大な住所の世界へ - 苦労した部分
巨大な住所の世界へ - 苦労した部分 デジタル庁の でマスタデータは150MB
• 必要情報だけ抽出 • 小字を消す ◦ 字は住所体系から廃止 • 「町、村」など接尾辞を略語にする ◦ 処理で担保
◦ 塵を集めて大山を作る(5MB程度) 巨大な住所の世界へ - 苦労した部分
今後やること • バンドルサイズを縮小 ◦ データセットが4MB ◦ ビルドのやり方を改善 • 郡、市から検索できるように ◦
都道府県は省略するケースが多い • いろんな読み方に対応
📮ありがとうございました 📮 github.com/Sangun-Kang/romajip x.com/ksu_302