資料清理不只是把字串改得整齊。看起來相似的紀錄,需要證據才能確認身分;違反限制條件的資料,可能有不只一種修復方法;最後產出的乾淨版本,也應該能交代是怎麼來的。
這篇用五組互動圖串起這個過程。例子依 CS 513 講義的機制重新設計,全部使用小型合成資料,不是客戶紀錄,也不是完整的清理引擎。SQL 語法留在原本的筆記,這裡看資料與判斷如何一步一步改變。
按「下一步」前進、「上一步」比較、「重設」重播。切換情境會從頭開始;窄螢幕可左右捲動圖。操作只在瀏覽器內,不會修改檔案或傳送資料到外部服務。
從相似名稱到確認對照
Text facet 先幫我們統計不同值,找出空白和寫法差異;clustering 再提出「可能代表同一件事物」的候選群。但它們都還沒有證明身分。
例子裡的 Harbor Cafe、CAFE HARBOR,以及多了空白的名字,會得到同一個詞彙 key。不過,其中一筆在另一個城市;就算同樣在台北,也不能只靠名稱與城市就斷定是同一家。
切換「證據不足」和「兩筆已查證」。讓結果不同的,不是更激進的字串規則,而是多了一份可信來源的身分對照:這個情境裡,兩筆紀錄有相同且經查證的店家 ID。
這裡只示範這組 ASCII 名稱的 key 計算,並沒有完整重製 OpenRefine。官方 clustering 文件也區分了字串層級的相似與語意上的 reconciliation。講義則用不同城市、名字相近的兩家飯店提醒同一件事。
另外,統一 canonical name 不等於刪除重複列。兩筆資料可能是同一家店在不同日期的觀察紀錄。先確認「一列代表什麼」,才知道能不能合併。
完整操作脈絡可接著看 OpenRefine 清理筆記。
符合規則的修復不一定就是真相
假設一個學號只能對應一個姓名。現在有兩組學號出現姓名衝突,另一組沒有。限制條件可以證明:這些衝突的 tuple 不能同時保留。但它無法證明哪個名字才對。
圖中只准刪除 tuple,也只檢查 ID → name 這一條 functional dependency。這裡的 set-minimal 是指:不能只做目前刪除集合的一個更小子集,就讓資料一致。換個角度說,把任何一筆刪掉的資料加回來,都會重新出現衝突。
這個例子的四種修復恰巧刪除一樣多筆,但一般情況下,「刪除集合不能再縮小」和「刪除筆數全局最少」是不同定義。
最後一步切換查詢。如果問「學號與姓名」,只有 (107, Wu) 是每版共同的答案;如果只問「有哪些學號」,三個 ID 都確定存在。應該先在每個修復版本做同一個查詢,再對答案取交集;不能先把資料庫取交集,再以為查到的就是全部確定答案。
四個版本是邏輯上的可能性,不是要你真的執行四次刪除。實際採用哪一種,還需要政策與證據。延伸看 Database Repair。
從結果倒著追查來源
別人問一份清理後的檔案怎麼來的,只給檔名不夠。還需要輸入版本、做過的處理、當時的規則,以及誰負責。
這些連結採用 W3C PROV 的基本概念:Entity 是資料產物,Activity 是發生過的處理,Agent 是對活動負責的人、組織或軟體,不是特指 AI agent。
注意箭頭的文字:輸出指回產生它的 activity。這張圖是沿著來源往回追,不是在畫資料向前傳送。此例只記錄 dataset 層級的依賴;若要回答某個儲存格怎麼產生,還需要更細的紀錄。
試著切換「規則紀錄缺漏」。不能因為知道原始資料和輸出,就補上一套看起來合理的規則。溯源讓結果可以被查證,但不會自動證明結果正確。
食譜和這次做菜的紀錄是兩件事
同一套清理流程,可以吃不同資料,也可以採用不同人工決策。光看流程圖,無法知道昨天那次到底做了什麼。
Prospective provenance 是流程的設計;retrospective provenance 是某次實際執行留下的證據。切換兩種視角,注意資訊從「需要什麼」變成「當時用了哪一份」。
YesWorkflow 能從 script annotation 整理出宣告的流程結構。不過,寫了宣告,不等於程式真的跑過;執行證據仍要另外擷取或重建。如果有人確認了一組名稱對照,也應把決策存成可引用的資料產物。重跑程式,不會自動還原沒記錄的人工判斷。
真正的可重現還需要可取得的資料、程式、執行環境與外部依賴。延伸看 Workflow Automation 與 Data Provenance。
名稱相同也要比較涵蓋範圍
兩個組織都使用「North」這個分類,不代表它們把相同地區放進去。這已經不是改拼字,而是要對齊概念的範圍。
選一個情境,逐步展開各自成員。這裡使用虛構地區 ID,並假設成員已完整列出。「部分重疊」需要兩者有交集,且各自都有另一方不包含的部分。只知道有交集,仍不能排除包含或相等。
這是 Taxonomy Alignment 的局部積木,不是完整推理器。真的整合兩棵分類樹,還要確認整個階層的父子關係、覆蓋假設與互斥限制能否同時成立。證據不足時,也可能保留多個合理版本。
講義依據與示意範圍
互動圖是依下列 CS 513 課程內容重新設計的教學例子,不是直接複製投影片圖像:
03-OpenRefine-Introduction.pdf,尤其第 35–36 頁的 clustering 與誤判提醒,以及 OpenRefine introduction transcript。05-Datalog-123.pdf第 11–15 頁,搭配 From IC Checking to IC Repair、Repair with DLV。圖解把課堂較大的修復例子縮成兩組獨立衝突。07-Workflow-Automation-and-Provenance.pdf,尤其第 14–16 頁,搭配 From Workflow Automation to Provenance。08-Data-Provenance.pdf與 Finer Points of Provenance。11-Taxonomy-Alignment.pdf,包括第 10–14 頁的對齊問題與可能結果。
把這幾件事連起來,清理流程就不只是「改值」:先提出候選,確認憑什麼能改,沒有證據的地方保留不確定性,再記下實際做過什麼。資料看起來更整齊,不代表我們就更了解它。