歷史的降維打擊:將「竹塹五書」煉成 HGIS 空間知識庫
當我們開始嘗試將 AI 與歷史地理資訊系統 (HGIS) 結合時,最初是在探勘總體性的《臺灣通史》。但歷史的魔鬼往往藏在地方的細節裡。 為了驗證我們的架構是否具備「橫向擴展」到區域史料的能力,我將目光轉向了北台灣早期的政經中心——竹塹 (新竹)。這次,我決定一次挑戰五本重量級的地方方志:《新竹縣採訪冊》、《淡水廳志》、《樹杞林志》、《新竹縣志初稿》、《新竹縣制度考》。 這五本書,總計 34 卷、9,000 多條史料片段。如果單靠純文本搜尋,那就像是在汪洋中撈針。 今天,我正式在 Taiwan History Atlas 專案中,釋出了這套針對新竹史料開發的「多書跨卷整合與空間對合框架」,並同步上線了 竹塹五書歷史知識地圖。 🏗️ L0-L1-L2:史料的階梯式煉金術 要讓 AI 不會在這 9,000 多條文獻中「幻覺」,我們採用了嚴謹的「分散式溯源,集中式建模」三層架構: 1. L0 文獻底座 (Text ETL) 有別於單一文本,地方方志的卷次編排極度不一致。透過 hsinchu_multi_loader.py,我們實作了多種 Regex 解析器,一次性將五本史書的目錄、卷次、條目全部打散又重組,完美塞入 hsinchu_history.db 的標準 Documents -> Volumes -> Contents 結構中。 2. L1 實體萃取與降維對合 (Entities & Linkage) 光有文字不夠,我們需要提取「有意義」的節點。 透過 AI 輔助腳本,我們一口氣從五書中抓出了三類實體: Infrastructure (基礎建設):1,410 筆(橋樑、隘口、古道、城門等)。 Location (聚落空間):4,343 筆(堡、里、庄、社、窠、坑等)。 Irrigation (水利開發):834 筆(陂圳、埤塘、水門等)。 但困難來了:古地名在地圖上是找不到座標的! 例如史書寫「隆恩圳」或「林先坤陂」,現代 Google Map 根本不知道在哪。 這時我們啟動了 「地理特徵降維打擊」 的演算法。我們寫了清洗函數(如 clean_infra_name, clean_water_name),把地名的尾巴(像是 xxx庄、xxx圳、xxx城門)全部剁掉,只保留核心字根。 ...