王琛
摘 ?;要: 數(shù)據(jù)清洗是提高數(shù)據(jù)質(zhì)量的有效手段。分析了從Web上抽取的數(shù)據(jù)存在的質(zhì)量問題或錯誤,針對錯誤類型,給出屬性錯誤(包括不完整數(shù)據(jù)和異常數(shù)據(jù))和重復(fù)與相似重復(fù)記錄的描述,并提出相應(yīng)的清洗方法;設(shè)計(jì)了一個(gè)數(shù)據(jù)清洗系統(tǒng)框架,該框架由數(shù)據(jù)預(yù)處理、數(shù)據(jù)清洗引擎和質(zhì)量評估三大部分組成,可以針對不同的錯誤類型,完成不同的清洗任務(wù)。實(shí)驗(yàn)表明,該框架具有通用性和可擴(kuò)展性。
關(guān)鍵詞: 數(shù)據(jù)質(zhì)量; 數(shù)據(jù)清洗; 屬性錯誤; 重復(fù)記錄; 質(zhì)量評估
中圖分類號:TP391 ?; ?; ?; ?; ?;文獻(xiàn)標(biāo)志碼: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上的豐富數(shù)據(jù)資源,將其集成為用戶或某個(gè)應(yīng)用所需要的有效信息。但是從Web上抽取的大量數(shù)據(jù),往往存在一定的數(shù)據(jù)質(zhì)量問題,如拼寫錯誤,空值,不合法數(shù)據(jù),數(shù)據(jù)重復(fù),以及不完整數(shù)據(jù)等等。因此必須進(jìn)行數(shù)據(jù)清洗,消除數(shù)據(jù)的不一致與重復(fù)錯誤,提高數(shù)據(jù)的可用性,保證信息的質(zhì)量,才能實(shí)現(xiàn)有效數(shù)據(jù)的高效查詢,以及用于后續(xù)的數(shù)據(jù)挖掘與知識發(fā)現(xiàn)。
本文針對前期從Web中抽取到的大量數(shù)據(jù),檢測并消除其中存在的屬性錯誤和重復(fù)與相似重復(fù)記錄問題,提出一種通用的數(shù)據(jù)清洗系統(tǒng)框架,從而保證數(shù)據(jù)的可信度和可用性[1-2]。
1 屬性錯誤
清洗屬性錯誤主要用來解決不同數(shù)據(jù)源之間的數(shù)據(jù)不一致問題。屬性錯誤主要包括兩部分:不完整數(shù)據(jù)和異常數(shù)據(jù)。
1.1 不完整數(shù)據(jù)
不完整數(shù)據(jù)是指數(shù)據(jù)庫中的某條記錄的屬性出現(xiàn)空值或缺失值的現(xiàn)象,如表1所示。
表1 ?;不完整數(shù)據(jù)
這種現(xiàn)象主要是由數(shù)據(jù)源模式和抽取方式不同造成的,也是數(shù)據(jù)在抽取過程中出現(xiàn)質(zhì)量問題的重要因素。如果某條記錄中的關(guān)鍵字或者數(shù)值型屬性不完整,則有可能導(dǎo)致錯誤數(shù)據(jù)模型的建立,還會引起決策支持系統(tǒng)的錯誤。因此,對于多個(gè)屬性值為空或者其關(guān)鍵字屬性為空的記錄,應(yīng)直接進(jìn)行刪除清洗。其余的不完整數(shù)據(jù)可以采用常量值替代、統(tǒng)計(jì)、分類和使用估算值的方法[3]進(jìn)行清洗。
1.2 異常數(shù)據(jù)
異常數(shù)據(jù)是指數(shù)據(jù)庫中的某條記錄的屬性出現(xiàn)不精確,錯誤的值,或者屬性值違反業(yè)務(wù)規(guī)則,以及同一屬性采用不同的表現(xiàn)形式等現(xiàn)象,如表2所示。
表2是從當(dāng)當(dāng)、卓越網(wǎng)站抽取到的相關(guān)圖書數(shù)據(jù),其中錯誤的數(shù)據(jù)為:“IT”(ID:2,屬性:類別),《WTO服務(wù)貿(mào)易法專論》不屬于IT類別;違反業(yè)務(wù)規(guī)則的數(shù)據(jù)為:“47”(ID:1,屬性:售價(jià)),此值與定價(jià)和折扣兩個(gè)字段的數(shù)值不符;數(shù)據(jù)發(fā)生的一致性錯誤為:ID為1的記錄(屬性:出版日期),出版日期為2012年9月1日,而ID為2的記錄為2006-4-1,同一屬性采用了不同的表示形式。
表2 ?;異常數(shù)據(jù)
一般采用層次聚類的方法,對異常數(shù)據(jù)進(jìn)行檢測與清洗。首先將數(shù)據(jù)集的記錄分成若干組,使同一組的數(shù)據(jù)具有較高相似度,不同組中的數(shù)據(jù)記錄差別較大,散落在外,不能歸并到任何一類中的數(shù)據(jù)稱為“孤立點(diǎn)”;然后判斷是否有“孤立點(diǎn)”存在,若存在,則判斷該孤立點(diǎn)是否存在錯誤數(shù)據(jù),若不存在,則根據(jù)規(guī)則庫再次判斷是否存在異常數(shù)據(jù);最后,對獲取的錯誤數(shù)據(jù)進(jìn)行清洗處理,修正錯誤。
2 重復(fù)與相似重復(fù)記錄
Web上的異構(gòu)數(shù)據(jù)由于模式不同,數(shù)據(jù)的不完整,數(shù)據(jù)的縮寫等問題,在進(jìn)行Web抽取時(shí),會獲得大量重復(fù)數(shù)據(jù),這些重復(fù)記錄不但導(dǎo)致數(shù)據(jù)冗余,占用大量存儲空間,而且還會給用戶提供很多相似信息,造成檢索結(jié)果的不準(zhǔn)確性。數(shù)據(jù)清洗的核心工作就是要準(zhǔn)確高效地檢測并消除數(shù)據(jù)源中的重復(fù)數(shù)據(jù),并進(jìn)行歸并。
在關(guān)系數(shù)據(jù)庫中,屬性值完全相同的記錄,即為重復(fù)記錄,它們表示同一對象;有些記錄不完全相同,有些屬性也不完全相同,但是它們表示同一對象,此類記錄稱為相似重復(fù)記錄[4-5],例如表3。
表3 ?;相似重復(fù)記錄
表3中的三條記錄來源于Web上不同數(shù)據(jù)源,仔細(xì)比較可知,這三條記錄中的出版日期、所屬類別、出版社這三個(gè)屬性值存在不同。例如,針對出版日期屬性,三條記錄的描述格式存在差異,可以根據(jù)規(guī)則庫中的相關(guān)函數(shù)將其轉(zhuǎn)化成統(tǒng)一的格式,如“2012-9-1”;針對出版社屬性,顯然“清華”、“清華大學(xué)”均是“清華大學(xué)出版社”的縮寫,可以根據(jù)數(shù)據(jù)字典中的定義將其統(tǒng)一為“清華大學(xué)出版社”;針對所屬類別屬性,“.Net”與“asp.net”均屬于“IT>;程序設(shè)計(jì)”中的子類,也可進(jìn)行統(tǒng)一。由此可知,表3中列出的三條記錄為相似重復(fù)記錄。
但是數(shù)據(jù)清洗過程中,相似重復(fù)記錄的檢測過程非常復(fù)雜,主要通過判斷記錄之間的相似性來達(dá)到獲得重復(fù)記錄目的。具體實(shí)施為:首先優(yōu)選記錄集中的特征屬性,設(shè)定權(quán)重值,根據(jù)權(quán)重值對記錄集進(jìn)行聚類分組,使相似的記錄盡量排在相鄰的位置;再比較各組記錄中對應(yīng)字段的相似度,完成字段匹配;最后通過計(jì)算各字段的權(quán)重,利用加權(quán)的方式,得到記錄的相似度,當(dāng)超過某一閾值,則認(rèn)為是相似的,從而完成記錄匹配。
3 數(shù)據(jù)清洗系統(tǒng)框架
數(shù)據(jù)清洗系統(tǒng)框架主要包括:數(shù)據(jù)預(yù)處理、數(shù)據(jù)清洗引擎和質(zhì)量評估三大部分,如圖1所示。
圖1 ?;數(shù)據(jù)清洗系統(tǒng)框架模型
3.1 數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理主要包括數(shù)據(jù)分析與數(shù)據(jù)標(biāo)準(zhǔn)化兩個(gè)模塊。
⑴ 數(shù)據(jù)分析模塊
本模塊用來對從Web中抽取到的數(shù)據(jù)進(jìn)行整體分析,獲得可能會出現(xiàn)的數(shù)據(jù)質(zhì)量問題和錯誤類型,以便后續(xù)選擇適合的清洗規(guī)則和清洗算法。
⑵ 數(shù)據(jù)標(biāo)準(zhǔn)化
Web上的數(shù)據(jù)來源于不同的數(shù)據(jù)源,存儲的形式不同,同一數(shù)據(jù)的表達(dá)方式不同,縮寫的樣式也存在不同,因此,在清洗之前,要對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,從而提高后續(xù)清洗操作執(zhí)行的有效性。
本模塊包括規(guī)范數(shù)據(jù)格式,統(tǒng)一數(shù)據(jù)表達(dá)方式和統(tǒng)一縮寫三項(xiàng)工作,例如將日期類型的字段統(tǒng)一為ISO8601國際標(biāo)準(zhǔn),并使用YYYY-MM-DD的格式[6]。
3.2 數(shù)據(jù)清洗引擎
數(shù)據(jù)清洗引擎主要包括數(shù)據(jù)檢測、數(shù)據(jù)清洗兩大模塊。
⑴ 數(shù)據(jù)檢測模塊
數(shù)據(jù)檢測模塊用來檢測屬性錯誤(包括不完整數(shù)據(jù)和異常數(shù)據(jù))和重復(fù)與相似重復(fù)記錄。進(jìn)行統(tǒng)計(jì)后,獲得全面的臟數(shù)據(jù)信息,并歸檔。其中對于重復(fù)與相似重復(fù)記錄可以采用特征屬性的選擇、屬性權(quán)重的設(shè)定、聚類排序、字段匹配和記錄匹配等檢測操作。
⑵ 數(shù)據(jù)清洗模塊
對檢測出的臟數(shù)據(jù)進(jìn)行清洗,對不完整數(shù)據(jù)采用刪除、常量值替代、統(tǒng)計(jì)、分類、使用估算值填充的清洗方法;對異常數(shù)據(jù)可采用聚類、基于規(guī)則庫的清洗等,從而完成屬性錯誤問題的修正;對檢測到的重復(fù)記錄進(jìn)行歸并或清除工作。
這些工作均由算法庫或規(guī)則庫提供的預(yù)先定義好的清洗算法和清洗規(guī)則實(shí)行。當(dāng)然在實(shí)際的操作工程中,可以隨時(shí)調(diào)整或更新自定義的算法和規(guī)則。對于無法自動清洗的數(shù)據(jù),可提交給用戶,由其手動處理。通常先清洗異常錯誤,再清洗重復(fù)記錄,最后清洗不完整數(shù)據(jù)。
3.3 質(zhì)量評估
質(zhì)量評估主要是使用包含在評估庫中的評估方法和標(biāo)準(zhǔn)對數(shù)據(jù)清洗效果進(jìn)行評估,并將結(jié)果反饋給用戶,來檢測是否達(dá)到了預(yù)定的清洗要求。通常用戶需要反復(fù)的評估和清洗才能滿足需求,最后獲得干凈數(shù)據(jù)。
4 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)中所用到的數(shù)據(jù)是從亞馬遜、淘寶、china-pub等網(wǎng)站中抽取到的12700多條圖書記錄所形成的關(guān)系數(shù)據(jù)集。每條記錄優(yōu)選12個(gè)屬性,形成如表4的字段信息。
表4 ?;圖書元數(shù)據(jù)信息
說明:字段名即關(guān)系表中的屬性
經(jīng)過數(shù)據(jù)清洗后,臟數(shù)據(jù)與干凈數(shù)據(jù)的對比如表5。
實(shí)驗(yàn)表明,該清洗框架可以清洗屬性值錯誤、數(shù)據(jù)不精確、數(shù)據(jù)描述不規(guī)范等屬性錯誤和重復(fù)記錄問題,通過調(diào)用數(shù)據(jù)清洗引擎,可以對不同類型的錯誤,采用不同的清洗過程進(jìn)行處理。能夠消除大部分的錯誤,從而提高數(shù)據(jù)質(zhì)量。
5 結(jié)束語
數(shù)據(jù)清洗的目的就是利用現(xiàn)有的技術(shù)和手段,消除或減少數(shù)據(jù)中的錯誤與不一致問題,將其轉(zhuǎn)化成為滿足數(shù)據(jù)質(zhì)量要求的數(shù)據(jù)。
本文分析了從Web上抽取到的數(shù)據(jù)存在的質(zhì)量問題,給出包括不完整數(shù)據(jù)和異常數(shù)據(jù)在內(nèi)的屬性錯誤以及重復(fù)與相似重復(fù)記錄的描述,并提出對應(yīng)的清洗方法;設(shè)計(jì)了一個(gè)由數(shù)據(jù)預(yù)處理、數(shù)據(jù)清洗引擎和質(zhì)量評估三部分共五個(gè)模塊組成的數(shù)據(jù)清洗系統(tǒng)框架,可以針對不同類型的臟數(shù)據(jù),完成不同的清洗任務(wù)。實(shí)驗(yàn)表明,該框架具有通用性和可擴(kuò)展性。
參考文獻(xiàn):
[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] 佘春紅,許向陽.關(guān)系數(shù)據(jù)庫中近似重復(fù)記錄的識別[J].計(jì)算機(jī)應(yīng)用
研究,2003.20(9):36-37
[5] 陳偉,丁秋林.數(shù)據(jù)清理中編輯距離的應(yīng)用及Java編程實(shí)現(xiàn)[J].電腦
與信息技術(shù),2003.17(6):33-35
[6] 張建中等.對基于SNM數(shù)據(jù)清洗算法的優(yōu)化[J].中南大學(xué)學(xué)報(bào)(自然
科學(xué)版),2010.41(6):2240-2245