王琛
摘 ?;要: 數據清洗是提高數據質量的有效手段。分析了從Web上抽取的數據存在的質量問題或錯誤,針對錯誤類型,給出屬性錯誤(包括不完整數據和異常數據)和重復與相似重復記錄的描述,并提出相應的清洗方法;設計了一個數據清洗系統框架,該框架由數據預處理、數據清洗引擎和質量評估三大部分組成,可以針對不同的錯誤類型,完成不同的清洗任務。實驗表明,該框架具有通用性和可擴展性。
關鍵詞: 數據質量; 數據清洗; 屬性錯誤; 重復記錄; 質量評估
中圖分類號:TP391 ?; ?; ?; ?; ?;文獻標志碼:A ?; ?; 文章編號:1006-8228(2014)12-42-03
Research on Webdata cleaning and its system framework
Wang Chen
(School of Information Media and Art,Jiangsu Institute of Architectural Technology, Xuzhou, Jiangsu 221116, China)
Abstract: Data cleaning is an effective means to improve the quality of data. The quality problems and the errors appearing when extracting data from Web are analyzed. According to the error type, the attribute (including incomplete data and abnormal data) and records on repeat, similar repeat are described. The corresponding cleaning method is given. A framework of data cleaning is constructed, including data preprocessing, data cleaning engines and quality assessment. When being faced with different types of errors, it can complete the task of cleaning differently. The experiment results show that the framework has great generality and extensibility.
Key words: data quality; data cleaning; attribute error; duplicate records; quality assessment
0 引言
Web信息集成的目的是獲取Web上的豐富數據資源,將其集成為用戶或某個應用所需要的有效信息。但是從Web上抽取的大量數據,往往存在一定的數據質量問題,如拼寫錯誤,空值,不合法數據,數據重復,以及不完整數據等等。因此必須進行數據清洗,消除數據的不一致與重復錯誤,提高數據的可用性,保證信息的質量,才能實現有效數據的高效查詢,以及用于后續的數據挖掘與知識發現。
本文針對前期從Web中抽取到的大量數據,檢測并消除其中存在的屬性錯誤和重復與相似重復記錄問題,提出一種通用的數據清洗系統框架,從而保證數據的可信度和可用性[1-2]。
1 屬性錯誤
清洗屬性錯誤主要用來解決不同數據源之間的數據不一致問題。屬性錯誤主要包括兩部分:不完整數據和異常數據。
1.1 不完整數據
不完整數據是指數據庫中的某條記錄的屬性出現空值或缺失值的現象,如表1所示。
表1 ?;不完整數據
這種現象主要是由數據源模式和抽取方式不同造成的,也是數據在抽取過程中出現質量問題的重要因素。如果某條記錄中的關鍵字或者數值型屬性不完整,則有可能導致錯誤數據模型的建立,還會引起決策支持系統的錯誤。因此,對于多個屬性值為空或者其關鍵字屬性為空的記錄,應直接進行刪除清洗。其余的不完整數據可以采用常量值替代、統計、分類和使用估算值的方法[3]進行清洗。
1.2 異常數據
異常數據是指數據庫中的某條記錄的屬性出現不精確,錯誤的值,或者屬性值違反業務規則,以及同一屬性采用不同的表現形式等現象,如表2所示。
表2是從當當、卓越網站抽取到的相關圖書數據,其中錯誤的數據為:“IT”(ID:2,屬性:類別),《WTO服務貿易法專論》不屬于IT類別;違反業務規則的數據為:“47”(ID:1,屬性:售價),此值與定價和折扣兩個字段的數值不符;數據發生的一致性錯誤為:ID為1的記錄(屬性:出版日期),出版日期為2012年9月1日,而ID為2的記錄為2006-4-1,同一屬性采用了不同的表示形式。
表2 ?;異常數據
一般采用層次聚類的方法,對異常數據進行檢測與清洗。首先將數據集的記錄分成若干組,使同一組的數據具有較高相似度,不同組中的數據記錄差別較大,散落在外,不能歸并到任何一類中的數據稱為“孤立點”;然后判斷是否有“孤立點”存在,若存在,則判斷該孤立點是否存在錯誤數據,若不存在,則根據規則庫再次判斷是否存在異常數據;最后,對獲取的錯誤數據進行清洗處理,修正錯誤。
2 重復與相似重復記錄
Web上的異構數據由于模式不同,數據的不完整,數據的縮寫等問題,在進行Web抽取時,會獲得大量重復數據,這些重復記錄不但導致數據冗余,占用大量存儲空間,而且還會給用戶提供很多相似信息,造成檢索結果的不準確性。數據清洗的核心工作就是要準確高效地檢測并消除數據源中的重復數據,并進行歸并。
在關系數據庫中,屬性值完全相同的記錄,即為重復記錄,它們表示同一對象;有些記錄不完全相同,有些屬性也不完全相同,但是它們表示同一對象,此類記錄稱為相似重復記錄[4-5],例如表3。
表3 ?;相似重復記錄
表3中的三條記錄來源于Web上不同數據源,仔細比較可知,這三條記錄中的出版日期、所屬類別、出版社這三個屬性值存在不同。例如,針對出版日期屬性,三條記錄的描述格式存在差異,可以根據規則庫中的相關函數將其轉化成統一的格式,如“2012-9-1”;針對出版社屬性,顯然“清華”、“清華大學”均是“清華大學出版社”的縮寫,可以根據數據字典中的定義將其統一為“清華大學出版社”;針對所屬類別屬性,“.Net”與“asp.net”均屬于“IT>;程序設計”中的子類,也可進行統一。由此可知,表3中列出的三條記錄為相似重復記錄。
但是數據清洗過程中,相似重復記錄的檢測過程非常復雜,主要通過判斷記錄之間的相似性來達到獲得重復記錄目的。具體實施為:首先優選記錄集中的特征屬性,設定權重值,根據權重值對記錄集進行聚類分組,使相似的記錄盡量排在相鄰的位置;再比較各組記錄中對應字段的相似度,完成字段匹配;最后通過計算各字段的權重,利用加權的方式,得到記錄的相似度,當超過某一閾值,則認為是相似的,從而完成記錄匹配。
3 數據清洗系統框架
數據清洗系統框架主要包括:數據預處理、數據清洗引擎和質量評估三大部分,如圖1所示。
圖1 ?;數據清洗系統框架模型
3.1 數據預處理
數據預處理主要包括數據分析與數據標準化兩個模塊。
⑴ 數據分析模塊
本模塊用來對從Web中抽取到的數據進行整體分析,獲得可能會出現的數據質量問題和錯誤類型,以便后續選擇適合的清洗規則和清洗算法。
⑵ 數據標準化
Web上的數據來源于不同的數據源,存儲的形式不同,同一數據的表達方式不同,縮寫的樣式也存在不同,因此,在清洗之前,要對數據進行標準化,從而提高后續清洗操作執行的有效性。
本模塊包括規范數據格式,統一數據表達方式和統一縮寫三項工作,例如將日期類型的字段統一為ISO8601國際標準,并使用YYYY-MM-DD的格式[6]。
3.2 數據清洗引擎
數據清洗引擎主要包括數據檢測、數據清洗兩大模塊。
⑴ 數據檢測模塊
數據檢測模塊用來檢測屬性錯誤(包括不完整數據和異常數據)和重復與相似重復記錄。進行統計后,獲得全面的臟數據信息,并歸檔。其中對于重復與相似重復記錄可以采用特征屬性的選擇、屬性權重的設定、聚類排序、字段匹配和記錄匹配等檢測操作。
⑵ 數據清洗模塊
對檢測出的臟數據進行清洗,對不完整數據采用刪除、常量值替代、統計、分類、使用估算值填充的清洗方法;對異常數據可采用聚類、基于規則庫的清洗等,從而完成屬性錯誤問題的修正;對檢測到的重復記錄進行歸并或清除工作。
這些工作均由算法庫或規則庫提供的預先定義好的清洗算法和清洗規則實行。當然在實際的操作工程中,可以隨時調整或更新自定義的算法和規則。對于無法自動清洗的數據,可提交給用戶,由其手動處理。通常先清洗異常錯誤,再清洗重復記錄,最后清洗不完整數據。
3.3 質量評估
質量評估主要是使用包含在評估庫中的評估方法和標準對數據清洗效果進行評估,并將結果反饋給用戶,來檢測是否達到了預定的清洗要求。通常用戶需要反復的評估和清洗才能滿足需求,最后獲得干凈數據。
4 實驗結果與分析
實驗中所用到的數據是從亞馬遜、淘寶、china-pub等網站中抽取到的12700多條圖書記錄所形成的關系數據集。每條記錄優選12個屬性,形成如表4的字段信息。
表4 ?;圖書元數據信息
說明:字段名即關系表中的屬性
經過數據清洗后,臟數據與干凈數據的對比如表5。
實驗表明,該清洗框架可以清洗屬性值錯誤、數據不精確、數據描述不規范等屬性錯誤和重復記錄問題,通過調用數據清洗引擎,可以對不同類型的錯誤,采用不同的清洗過程進行處理。能夠消除大部分的錯誤,從而提高數據質量。
5 結束語
數據清洗的目的就是利用現有的技術和手段,消除或減少數據中的錯誤與不一致問題,將其轉化成為滿足數據質量要求的數據。
本文分析了從Web上抽取到的數據存在的質量問題,給出包括不完整數據和異常數據在內的屬性錯誤以及重復與相似重復記錄的描述,并提出對應的清洗方法;設計了一個由數據預處理、數據清洗引擎和質量評估三部分共五個模塊組成的數據清洗系統框架,可以針對不同類型的臟數據,完成不同的清洗任務。實驗表明,該框架具有通用性和可擴展性。
參考文獻:
[1] Ragm,E., Do,H,H. Data cleaning: problems and current apporaches.
IEEE Data Engineering Bulletin,2005.23(4):3-13
[2] Pair Wand, Rihard Y Wang. Anchoring Data Quality Dimensions
in Ontological Foundations[J]. COMMUNICATIONS OF THE ACM,2006.39(11):86-95
[3] Batista G E A P A, Monard M C. An analysis of four missing data
treatment methods for supervised learning .Applied Artificial Intelligence,2003.17(5-6):519-533
[4] 佘春紅,許向陽.關系數據庫中近似重復記錄的識別[J].計算機應用
研究,2003.20(9):36-37
[5] 陳偉,丁秋林.數據清理中編輯距離的應用及Java編程實現[J].電腦
與信息技術,2003.17(6):33-35
[6] 張建中等.對基于SNM數據清洗算法的優化[J].中南大學學報(自然
科學版),2010.41(6):2240-2245