此篇紀錄處理門牌地址格式過程遇到的一些問題。
依地址-WIKI解說,台灣地址大致由下列部分組成
縣市_行政區_街道名稱_門牌編號
EX: 台中市_中區_台灣大道1段_1號
參考In 91前輩的regex作法,縣市、行政區、村里(如果有)比對規則如下 (因為找不到在markdown裡顯示 | 的方法,先用全形|頂著)
解析對象 | regular expression |
---|---|
縣市 | (\W+?[縣市]) |
行政區 | (\W+?市區|\W+?鎮區|\W+?[鄉鎮市區]) |
村里 | (\W+?村里|\W+?村村|\W+?里村|\W+?里里|\W+?[村里]) |
除了村里、鄰資訊,剩餘文字歸類到門牌與道路編號(還是有門牌地區名稱可能包含”村”、”里”、”鄰”字樣的,撰寫regexp規則請小心),或者建立字典查表,讓regex以此為基礎做查詢,除斷詞精準,也減少下列問題(異體字較有爭議,在此僅列出問題,不做解說)
例外種類 | 效正前 | 效正後 |
---|---|---|
異體字 | 雲林縣(臺)西鄉 | 雲林縣(台)西鄉 |
行政區改制 | 苗栗縣頭份(鎮) | 苗栗縣頭份(市) |
行政區合併&更名 | 台南市(中西區) | 台南市(中區)&台南市(西區) |
縣市改制&行政區改制 | 台中(縣)大雅(鄉) | 台中(市)大雅(區) |
如以不破壞原始資料為前提做分類,建議將提取出來的資訊,另開欄位額外處理,避免遺失資訊。以下連結為實做範例&案例展示:
Google 試算表link(左上方建立副本,內文地址為消防局&警局地址),下表為"分頁"底色解說:
解析對象 | regular expression |
---|---|
紅色底色 | 輸入分析的地址清單 |
綠色底色 | "regexp"與"regexp_字典查表"的拆解成果 |
藍色底色 | 地址正規名稱的參考詞典 |
黃色底色 | regex一般規則提取的修正參考 |
紫色底色 | 參考詞典的資料來源 |