--- title: WikiData 與 戶役政資訊系統資料代碼整合 # 簡報的名稱 tags: presentation # 簡報的標籤 slideOptions: # 簡報相關的設定 theme: night # 顏色主題 transition: 'fade' # 換頁動畫 # parallaxBackgroundImage: 'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg' --- COSCUP 2022 OpenStreetMap x Wikidata 開放內容議程軌 ## 【WikiData 與 戶役政資訊系統資料代碼整合】 [[User:Planetoid]] --- 簡報 ![](https://i.imgur.com/zP0XzVn.png =350x350) https://bit.ly/3OFMf5T --- ## 簡介 延續去在 COSCUP 的 Wikidata 資料品質的討論,今年嘗試將 Wikidata、OpenStreetMap 開放街圖資料、與政府公開資料「戶役政資訊系統資料代碼 」進行整合。分享真實世界的資料 QA 清理整合經驗。 --- ## 大綱 * 現有資料 * 社群需求 * 規劃介面功能 * 資料問題 * 功能開發 * 多資料源整合 * 網頁成果 --- ## 現有資料 內部政「連結介面戶役政資料代碼內容」 ![](https://i.imgur.com/Ei31bHY.png) --- 1. 全部村里代碼約7千多筆、 2. 村里代碼變動 * 新增村里代碼 * 刪除村里代碼 https://www.ris.gov.tw/documents/html/5/1/167.html --- ## 社群需求 * 需求1:政府公開資料與 WikiData 條目資料整合 * 需求2:村里代碼變動與新增 * 被整併消失的時間沒加上去,以及 * 新產生的村里對應關係 * 可以對應到「連結介面戶役政資料代碼內容」網頁的「刪除村里代碼」與「新增村里代碼」 * 「台南那邊,2018年那次整理量變動太大了」網頁提供可篩選縣市與變動的時間 * 需求3:與 OSM 條目資料整合、經緯度連結 --- ### 許願池的概念 ![](https://i.imgur.com/5NsSJwB.jpg) 圖片來源:https://star.ettoday.net/news/387755 --- ## 規劃介面功能 篩選/排序條件 * 顯示新增的村里代碼 * 顯示刪除的村里代碼 * 顯示近期未確認、已確認的村里代碼 * 顯示省縣名稱/省縣代碼/村里名稱/村里代碼 * 可篩選年份 --- 🎂 ### Before:一塊蛋糕 --- <!-- .slide: data-background="https://i.imgur.com/wt0tV6w.jpg" --> ⚔️ ### After:一出新手村,就遇到大魔王 圖片來源:(CC0) https://bit.ly/3OB3O7a --- ## 資料問題 1. 檔案格式不一致 2. 文字檔案編碼不一致 3. 欄位分隔符號不一致 4. 空白字元不一致 5. 識別碼資料問題 6. 異體字、豆腐字 8. 資料更新頻率不固定 --- ### 資料問題 1:檔案格式不一致 村里代碼檔案格式 * 純文字檔案 (txt) * WORD 97-2004 檔案 (doc) * WORD 檔案 (docx) --- 🧹 * txt 維持不變 * doc 檔案數量少,則用 LibreOffice 批次轉成 docx * docx 轉換成 html 再取出純文字 --- ### 資料問題 2:文字檔案編碼不一致 * Big5 * UTF-8 --- * 大五碼(英語:Big5,又稱為五大碼)是使用繁體中文(正體中文)社群中最常用的電腦漢字字元集標準,共收錄 13,060 個漢字。 * 缺字問題:游錫堃、張栢芝、陶喆等名字,寫成為「游錫方方土」、「張木百芝」和「陶吉吉」等 資料來源:[維基百科](https://zh.wikipedia.org/zh-tw/%E5%A4%A7%E4%BA%94%E7%A2%BC) --- 🧹 * 使用函數 `mb_detect_encoding` 偵測文字編碼 Big5, UTF-8 * 轉換成 UTF-8 --- ### 資料問題 3:文字檔案欄位分隔符號不一致 村里代碼與村里名稱間的分隔符號,可能是 * 逗號 * 空白 * 甚至沒有任何間隔符號 --- 檔案 1:新增村里代碼-11106.txt ![](https://i.imgur.com/4ue3GcC.png) 檔案 2:新增村里代碼-09109.txt ![](https://i.imgur.com/6y989Fw.png) --- 🧹 * 觀察資料 * 共通規則是前面是數字、後面是中文 * 就可以忽略中間是逗號、空白、或者沒有空白 --- 代碼對照表 ![](https://i.imgur.com/Ikns99U.png =500x467) --- 不同行政層級的最後一個字 * 縣市名稱: 縣/市 * 鄉鎮市區名稱: 鄉/鎮/市/區 * 村里名稱: 村/里 --- 不同代碼間關連: 村里代碼 (villageId) 共 11 碼 e.g. `66000010001=繼光里` * 取前 8 碼是`鄉鎮市區代碼` `66000010=臺中市中區` * 取前 8 碼,後 3 碼改成 0 e.g. `66000000=臺中市` 即縣市,但是跟 `縣市代碼` 不相同 `10019=臺灣省臺中市` --- ### 問題 4:空白字元不一致 * 半形空白 * 全形空白 `\u3000` --- 🧹 取代全形空白為半形空白 --- ### 資料問題 5:識別碼資料問題 * 村里代碼不存在於總表 `全部村里代碼` 檔案:2002/02 新增的村里代碼 `10019050045 中正里` 需要匯整到大表 * 村里代碼對應的名稱不一致 2017/6 ```刪除村里 屏東縣東港鄉 10013030023,大鵬里 ``` * `10013030023` 是 `屏東縣東港鎮 福德里` * `10013010072` 是 `屏東縣東港鄉 大鵬里`正確村里代碼 --- ![](https://i.imgur.com/NtviNbU.png) 我以為「予以唯一和完整標識的資料列或屬性的鍵」 (資料來源:[維基百科](https://zh.wikipedia.org/zh-tw/%E5%85%B3%E7%B3%BB%E9%94%AE)) --- ### 資料問題 6:異體字、豆腐字 * `󼱹裡里` * `嵵裡里` (村里代碼 `10016010031`) --- 🧹 * 原始資料 [連結介面戶役政資料代碼內容](https://www.ris.gov.tw/documents/html/5/1/167.html) 已經是豆腐字, * 改用 [行政院主計總處與內政部戶政司村里代碼對照表](https://view.officeapps.live.com/op/view.aspx?src=https%3A%2F%2Fwww.stat.gov.tw%2Fpublic%2FAttachment%2F712693030RPKUP4RX.xlsx&wdOrigin=BROWSELINK) 修正 --- ### 問題 7:資料更新頻率不固定 * 短:隔月 * 長:數年 ![](https://i.imgur.com/nrWTxFH.png) --- 🤖 CronJob 半天一次 * 抓取 [連結介面戶役政資料代碼內容](https://www.ris.gov.tw/documents/html/5/1/167.html) * 抓取 WikiData 資料 --- ## 功能開發 * 處理資料問題 * 網頁爬取 多資料源整合 * 抓取連結介面戶役政資料代碼內容網頁 * WikiData 資料整合 * OSM 資料整合 --- ## 多資料源整合 嘗試方法1:鄉鎮名稱作為關鍵字 * 鄉鎮名稱作為關鍵字,但 Wikidata 結果只有一筆,推測是對應的。 * 但是如果多筆結果,就無法直接確認,需要人工確認的步驟 --- 關鍵字搜尋策略: 1. 台、臺異體字 2. 市+區+里 3. 模糊、精準搜尋 --- 以康寧里為例 1. `台北市內湖區康寧里` 2. `"台北市內湖區康寧里"` (加上雙引號精準搜尋) 3. `"臺北市內湖區康寧里"` (加上雙引號精準搜尋) 4. `臺北市內湖區康寧里` 5. `康寧里` --- ❗ 解決方案衍生新的問題: * 7,000 筆村里 (逐漸增加) x 5 種關鍵字搜尋策略組合 * API 查詢數量太高 (3.5 萬次+) --- 嘗試方法2:以 WikiData 資料為主 * 標示沒有 WikiData ID 的村里代碼 * 使用 WikiData Query Service 直接查詢村里 * API 查詢次數:1 次 --- ![](https://i.imgur.com/NzKyF0u.png) https://w.wiki/4KQi --- ## 網頁成果 ![](https://i.imgur.com/le2Y4wX.png) --- 快速找到沒有 WikiData ID 的村里 ![](https://i.imgur.com/9K0mMXm.png) --- 欄位:維基數據標籤、新增刪除月份、經緯度、開放街圖ID ... 欄位可以排序 ![](https://i.imgur.com/VvBn2Bj.png) --- 搜尋欄位值 ![](https://i.imgur.com/kVjeMF6.png) --- <!-- .slide: data-background="https://i.imgur.com/dqPDo8i.jpg" --> <style> h2.raw { color: #999; } </style> ## 真實世界的資料 圖片來源 CC-BY [Flickr](https://www.flickr.com/photos/30478819@N08/50742478477) --- ## 後續計畫 * 村里改名:關廟南雄里改回舊地名「龜洞」 地方連署案通過明年元旦實施 - 生活 - 自由時報電子報 https://news.ltn.com.tw/news/life/breakingnews/3706988 ![](https://i.imgur.com/ZRAepqZ.png =400x225) 圖片來源:https://youtu.be/7uBqNgxAuBA?t=43 --- ## 相關連結 ![](https://i.imgur.com/zP0XzVn.png =350x350) * 簡報:https://bit.ly/3OFMf5T * 網站:https://bit.ly/3oLfHwK * 程式碼:https://bit.ly/3cQDGI5 (MIT Lincese)