周世杰,婁淵勝
(河海大學(xué)計算機與信息學(xué)院,江蘇 南京 211100)
隨著社會工業(yè)化和信息化水平的不斷提高,存儲在數(shù)據(jù)倉庫中的數(shù)據(jù)迅速增加。通過數(shù)據(jù)挖掘可在這些海量的數(shù)據(jù)中找出蘊含的重要信息,這些信息往往對信息決策支持系統(tǒng)有重要作用,但挖掘的前提是有高質(zhì)量的數(shù)據(jù)。高質(zhì)量的數(shù)據(jù)是充分發(fā)揮其蘊含的效能的前提和基礎(chǔ),而低質(zhì)量的數(shù)據(jù)可能對決策產(chǎn)生不利的影響[1,2]。數(shù)據(jù)清洗可以對存儲在數(shù)據(jù)倉庫中的“問題”數(shù)據(jù)進行剔除或改正[3],從而提高數(shù)據(jù)質(zhì)量,為決策分析提供數(shù)據(jù)支撐。數(shù)據(jù)清洗的主要清洗對象是不完整數(shù)據(jù)、沖突數(shù)據(jù)和重復(fù)數(shù)據(jù)[4],其中需要解決的主要問題是對相似重復(fù)數(shù)據(jù)的查找與去除。相似重復(fù)數(shù)據(jù)是指對于現(xiàn)實世界的同一或類似實體,由于在各數(shù)據(jù)源存儲時可能出現(xiàn)的格式或拼寫錯誤、結(jié)構(gòu)或表述不同等問題,數(shù)據(jù)庫管理系統(tǒng)DBMS(Database Management System)不能準(zhǔn)確識別而存儲的多條不完全相同的記錄[5]。在信息管理系統(tǒng)中,重復(fù)數(shù)據(jù)的存在會影響存儲效率,造成數(shù)據(jù)冗余,識別和消除無用數(shù)據(jù)可以提高數(shù)據(jù)質(zhì)量,保證決策數(shù)據(jù)的可靠性。
清除相似重復(fù)記錄常用“排序-合并”的方式,其思想是將待檢測的數(shù)據(jù)集按照某個或某些屬性排序,使得數(shù)據(jù)集中的相似重復(fù)記錄彼此靠近,然后通過比對鄰近位置的記錄判斷是否為相似重復(fù)記錄。常見的排序-合并算法包括鄰近排序算法SNM(Sorted-Neighborhood Method)[6]、多趟鄰近排序算法MPN (Multi-Pass Sorted Neighborhood)[7]和優(yōu)先隊列算法[8]等。其中,鄰近排序算法SNM是一種比較流行的排序-合并算法,因其思想簡單、效果明顯和易于實現(xiàn)的優(yōu)點而被人們廣泛使用。SNM算法在排序后的數(shù)據(jù)集上設(shè)置一個固定大小的窗口,每次只比對窗口內(nèi)的數(shù)據(jù),窗口內(nèi)的數(shù)據(jù)比對完畢后向下移動窗口再次進行比對,這種方式極大地減少了比對次數(shù),從而加快了檢測的速度。
雖然SNM算法加快了檢測的速度,但依然存在一些缺點:(1)對排序關(guān)鍵字依賴程度大;(2)字段權(quán)重多為單一用戶或領(lǐng)域?qū)<以O(shè)定,主觀程度大;(3)窗口的大小難以確定;(4)記錄匹配過程采用笛卡爾乘積的方式,比對時間較長。許多研究人員針對上述缺點提出了一些改進方案。文獻[7]采用的方式是多次獨立地執(zhí)行SNM算法,每次選用不同的關(guān)鍵字對數(shù)據(jù)集排序,然后在小窗口中進行比對,此方法可以減少關(guān)鍵字選取不當(dāng)所帶來的影響,但該方式需要頻繁計算傳遞閉包,降低了查準(zhǔn)率。文獻[9,10]使用的屬性確定方法結(jié)合了客觀數(shù)理統(tǒng)計方法和主觀經(jīng)驗,雖然可以較為客觀地確定屬性權(quán)值,但此方法需要多用戶的參與,在實際運用中耗時過長且不易實現(xiàn)。文獻[11,12]依據(jù)窗口內(nèi)重復(fù)記錄的總數(shù)與窗口大小的比例動態(tài)調(diào)整滑動窗口的大小,但此種方式將SNM歸并過程的時間復(fù)雜度從O(WN)提高到O(N2)(N為數(shù)據(jù)集總記錄數(shù),W為窗口的大小),時間效率不高。文獻[13,14]提出了長度過濾算法,在識別重復(fù)記錄前根據(jù)字符串的長度比例去除不相似的數(shù)據(jù)集,減少記錄比較次數(shù),提高檢測效率,但如果屬性值采用簡寫的方式或?qū)傩允欠潜靥铐?,采用此方式可能會將重?fù)記錄排除,致使算法精度降低。
綜上,本文提出了一種SNM的改進算法ISNM(Improved Sorted-Neighborhood Method)。該算法采用屬性區(qū)分法客觀地計算權(quán)值,提高了檢測精度;采用字段過濾算法計算記錄相似度,減少了比對次數(shù);采用可變窗口來防止漏配,減少了無用的記錄比對。實驗結(jié)果表明,ISNM算法提高了檢測精度,加快了記錄比對速度。
基本的SNM算法主要包括以下3步:
(1) 選取排序關(guān)鍵字。抽取記錄的重要屬性作為記錄排序關(guān)鍵字。
(2) 排序。根據(jù)(1)中選取的關(guān)鍵字排序數(shù)據(jù)集。排序后重復(fù)記錄會彼此靠近,從而將比對限定到一定范圍內(nèi)。
(3) 相似重復(fù)記錄檢測。設(shè)置一個大小為W的窗口,在第(2)步的基礎(chǔ)上向下移動窗口。窗口的末尾記錄與其余的W-1條記錄比對,比對完成后將首條記錄移出,將第W+1條記錄移入,重復(fù)上述步驟直到所有記錄都完成比對。
圖1為SNM算法滑動窗口示意圖。
Figure 1 Sliding window in SNM algorithm
由上述描述可知,SNM算法將記錄的比對限定在大小為W的固定窗口中,總比對次數(shù)為N(W-1)次;而傳統(tǒng)的方法是將每一條記錄與剩余的N-1條記錄進行比對,總比對次數(shù)為N(N-1)/2。由此可見,SNM算法極大地減少了比對次數(shù),因此極大地加快了檢測速度,提高了運行效率。但是,SNM算法也存在以下不足:
(1) 對選取的排序關(guān)鍵字依賴性較大。選用不合適的關(guān)鍵字對數(shù)據(jù)集排序,會使相似重復(fù)記錄不能同時出現(xiàn)在同一個窗口中,因無法比對而造成漏配。例如表1的2條記錄,無論是按照Name屬性排序,還是按照Address屬性排序,或者2個屬性組合排序,都存在因它們存儲的位置不相鄰而產(chǎn)生漏配的可能。
Table1 Example of similar duplicate records
(2)難以確定滑動窗口的大小W。如果W較大會增加無用的比對,降低檢測效率;如果W較小又可能導(dǎo)致漏配,降低檢測精度。
(3)確定屬性權(quán)值的主觀性大。屬性權(quán)值大多是采用單一用戶或者專家打分的方法來確定,因此主觀性大。
(4)在重復(fù)相似度檢測過程中,相似記錄的判別基本上都是采用笛卡爾積的方式,采用該種方式會導(dǎo)致記錄的匹配時間較長,檢測效率不高。
本文針對SNM算法的缺點提出了改進的ISNM算法,其思想是:首先通過屬性區(qū)分法計算各屬性權(quán)值,并通過權(quán)值來確定排序關(guān)鍵字;其次采用字段過濾算法進行判重,提高檢測效率;最后使用可變窗口進行比對。ISNM算法流程圖如圖2所示。
Figure 2 Flow of ISNM algorithm
記錄的屬性體現(xiàn)了現(xiàn)實實體的某個特性,屬性的權(quán)值又代表了該特性對實體的重要性,屬性權(quán)值越大,則該屬性對其所表示的現(xiàn)實實體的重要程度就越大,因此權(quán)值的設(shè)定不應(yīng)該有較強的主觀性。本文提出使用“屬性區(qū)分度”來確定屬性權(quán)值,一方面避免了權(quán)值設(shè)定的主觀性,另一方面不需要多用戶參與,在實際應(yīng)用中容易實現(xiàn)。
屬性區(qū)分度是指屬性區(qū)分?jǐn)?shù)據(jù)集中不同記錄的能力,某個屬性取值種類越多,則該屬性的屬性區(qū)分度就越大。屬性的區(qū)分度代表了該屬性記錄的差異性,因此屬性區(qū)分度越大,該屬性的權(quán)值就越大。將計算得到的屬性區(qū)分度值歸一化處理后得各屬性權(quán)值。
為方便描述,假設(shè)待檢測的數(shù)據(jù)集D={D1,D2,…,DN},N為記錄總數(shù),每條記錄有p個屬性,即Di={Attr1,Attr2,…,Arrtp},則每個屬性的區(qū)分度計算公式為:
(1)
其中,YAttri表示屬性Attri的取值種類數(shù),也就是說如果按照屬性Attri的不同取值進行聚類,會有YAttri個簇。將各個屬性的區(qū)分度值進行歸一化處理后,得到屬性的權(quán)值向量W={W1,W2,…,Wp}。屬性區(qū)分算法如算法1所示。
算法1屬性區(qū)分算法
輸入:數(shù)據(jù)集D={D1,D2,…,DN}。
輸出:字段權(quán)值(W1,W2,…,Wp)(p表示記錄的屬性個數(shù))。
1.Fori=1 topDo
2. 計算屬性i的取值種類數(shù)YAttri;
3.Endfor
4.Fori=1 topDo
5. 根據(jù)式(1)計算屬性i的屬性區(qū)分度Attrdisi;
6.Endfor
7.對Attrdisi進行歸一化處理;
8.ReturnWi
由3.1節(jié)可知,屬性的區(qū)分度代表了該屬性記錄的差異性,選擇區(qū)分度大的屬性對數(shù)據(jù)集進行排序,可以最大程度保證相似重復(fù)記錄位置靠近,并將非相似重復(fù)記錄分隔開。對數(shù)據(jù)集中每條數(shù)據(jù)的各個屬性利用算法1計算其屬性權(quán)值,并按由大到小順序排序,根據(jù)實際情況選取排名靠前的屬性作為排序關(guān)鍵屬性,并從每個關(guān)鍵屬性中提取一部分組成排序關(guān)鍵字對數(shù)據(jù)集進行排序。如針對滁河流域水文數(shù)據(jù)集,經(jīng)過上述方法處理后,最終選取“站點名稱”“地區(qū)”“獲取數(shù)據(jù)時間”和“傳感器編號”作為排序關(guān)鍵屬性,取每個關(guān)鍵屬性的前4個字符作為排序關(guān)鍵字對數(shù)據(jù)集進行排序。
對數(shù)據(jù)集進行排序之前,首先把字段中標(biāo)點符號、不能辨別的或有標(biāo)示性含義的符號刪除,例如銀行系統(tǒng)的“¥”“$”等;其次將字段中的單詞按照字典序排列;最后再按照排序關(guān)鍵字對整個數(shù)據(jù)集進行排序。假設(shè)選擇表1中Name和Address屬性的組合作為排序關(guān)鍵字,按照上述方法對記錄進行排序后的結(jié)果如表2所示。由此可見,經(jīng)過預(yù)處理之后,可以使這2條記錄存儲位置相距較近,確保它們在同一個窗口中。
Table 2 Record sorting results table after preprocessing
SNM算法檢測相似重復(fù)記錄常用的方法是求出2條記錄各屬性值的相似度,并加權(quán)求和得到記錄相似度,然后將該值與相似度閾值對比來判定記錄是否相似重復(fù)。然而字段比對大多采用的是笛卡爾乘積的方式[15],采用這種方式的問題是記錄匹配時間過長,效率不高。本節(jié)針對該問題提出使用字段過濾算法來提高檢測效率。
字段過濾算法的核心思想是:記錄的不同屬性值可以區(qū)分不同的記錄,且關(guān)鍵屬性的屬性值對記錄的區(qū)分度更高。若對關(guān)鍵屬性的相似度進行加權(quán)求和后可以確定2條記錄為相似重復(fù)記錄,則無需計算剩余屬性的相似度;否則需要計算所有屬性的相似度,加權(quán)求和后判斷2條記錄是否為相似重復(fù)記錄。因此,在進行相似度檢測時,首先選擇關(guān)鍵屬性進行比較,將關(guān)鍵屬性的相似度與權(quán)值相乘并求和得到記錄相似度,然后將其與相似度閾值相對比,若前者大于后者,則斷定這2條記錄相似重復(fù),同時完成屬性比對,否則,繼續(xù)比對剩余屬性。
(2)
否則有:
(3)
字段過濾算法如算法2所示。
算法2字段過濾算法
輸入:待比較的記錄Di和Dj,相似度閾值U。
輸出:SimR(Di,Dj)。
1.Fort=1 tomDo
2.SimR(Di,Dj)=SimA(Dit,Djt)Wt;
3.Endfor
4.If(SimR(Di,Dj)
5.Fort=m+1 topDo
6.SimR(Di,Dj)+=SimA(Dit,Djt)Wt;
7.Endfor
8.Endif
字段過濾算法極大地減少了字段比對的次數(shù),從而加快了檢測速度。
原SNM算法滑動窗口的大小不易確定,窗口設(shè)置得太大會增加很多無用的記錄比對,降低檢測效率;窗口設(shè)置得太小又可能導(dǎo)致重復(fù)記錄的漏配,降低檢測精度。使用可變窗口可以在檢測過程中動態(tài)調(diào)整窗口的大小,從而減小固定窗口給檢測結(jié)果帶來的影響。本文根據(jù)相似重復(fù)記錄的位置動態(tài)調(diào)整滑動窗口的大小,其基本思想是:假設(shè)窗口C的開始大小為W,若新移入C的記錄Rw與即將移出C的記錄R1是相似重復(fù)記錄,則Rw+1與R1相似的概率較高,此時應(yīng)當(dāng)增大窗口的大小,避免相似重復(fù)記錄的漏配;若與Rw互為相似重復(fù)的記錄Ri(1≤i≤w)距離Rw較近,則應(yīng)該縮小窗口大小,減少無用的比對。設(shè)窗口C大小的最大最小值分別為Wmax和Wmin,窗口C大小的初始值Wn設(shè)定為Wmin。C中記錄的位置為[1,w],位置為1的記錄為C內(nèi)的首條記錄,位置為w的記錄為新移入C中的記錄,則動態(tài)計算滑動窗口大小的方法如式(4)所示:
(4)
其中,Bi表示第i條記錄是否與末尾記錄Rw互為相似重復(fù)記錄,若是,則Bi=1,否則,Bi=0。由式(4)不難看出,若C內(nèi)的所有記錄都相似重復(fù),則下一輪C的大小從Wn變成Wmax,若C內(nèi)的所有記錄都不相似重復(fù),則下一輪C的大小從Wn變成Wmin,距離末尾紀(jì)錄Rw越遠的相似重復(fù)記錄對C的取值作用越大。
ISNM算法的基本流程是:使用屬性區(qū)分法計算各屬性權(quán)值,并在權(quán)值的基礎(chǔ)上選擇排序關(guān)鍵字,對字段預(yù)處理后,再按照排序關(guān)鍵字排列數(shù)據(jù)集中的記錄,在窗口內(nèi)對數(shù)據(jù)子集進行判重,在判重的過程中使用字段過濾算法提高檢測效率,然后調(diào)整窗口大小并向下移動窗口,重復(fù)進行判重。ISNM算法流程如算法3所示。
算法3ISNM算法
輸入:數(shù)據(jù)記錄集D,相似度閾值U,窗口最大值Wmax與最小值Wmin。
輸出:去重后的數(shù)據(jù)集。
步驟1計算屬性權(quán)值。
使用算法1計算記錄各屬性的權(quán)值Wi。
步驟2關(guān)鍵字的選取與數(shù)據(jù)記錄預(yù)處理。
根據(jù)3.2節(jié)描述的方法選取排序關(guān)鍵字
Fori=1 toNDo/*N表示數(shù)據(jù)總量。去除字段中的無用符號,并將字段中的單詞按照字典序排列*/
Endfor
步驟3按照排列關(guān)鍵字對數(shù)據(jù)集進行排列。
步驟4在滑動窗口中使用字段過濾算法進行重復(fù)記錄檢測,并動態(tài)調(diào)整窗口的大小。
While(滑動窗口沒有滑到數(shù)據(jù)集的尾部)
使用算法2計算相似度值;
If(SimR(Di,Dj)≥U)
D=D-Ri;∥Ri表示第i條記錄
Endif
根據(jù)式(4)計算下一個滑動窗口大??;
向下滑動窗口;
Endwhile
本次實驗數(shù)據(jù)來自滁河流域近3年各站點所觀測的水位記錄,記錄了站點名稱、數(shù)據(jù)獲取時間、地區(qū)、傳感器編號和水位等內(nèi)容。由于記錄過程中傳感器異常導(dǎo)致同一時間重復(fù)記錄水位信息,因此采集到的數(shù)據(jù)存在大量的重復(fù)數(shù)據(jù)。
實驗環(huán)境為Intel(R) Core(TM) i5-1035G1 CPU @ 2.2 GHz,16 GB內(nèi)存,Windows 10操作系統(tǒng)。數(shù)據(jù)存儲在MySQL 5.6中,采用IntelliJ IDEA編程工具和Java語言實現(xiàn)優(yōu)化算法,jdk版本為1.8。
4.2.1 性能實驗
實驗1為了更好地分析ISNM算法帶來的性能提升,本次實驗把ISNM算法與傳統(tǒng)的SNM算法、文獻[14]的LF-SNM(SNM based on Length Filtering and Dynamic Fault-tolerance)算法、文獻[16]的SNM改進方法(在本文中稱為chen-SNM算法)、MPN(Multi-Pass Sorted Neighborhood)算法進行對比實驗。實驗每一次從數(shù)據(jù)集中隨機抽出10萬,20萬,30萬,40萬和50萬條記錄,分別用上述5種算法進行檢測。為了便于統(tǒng)計實驗結(jié)果,將上述各數(shù)據(jù)集處理成包含0.12萬,0.25萬,0.43萬,0.56萬和0.71萬條相似重復(fù)記錄的數(shù)據(jù)集,用人工統(tǒng)計的方式判斷實驗得出的相似重復(fù)數(shù)據(jù)集是否正確。實驗中設(shè)定相似度閾值為0.75,可變窗口的最小值為40,最大值為60,固定大小的窗口值為40。
實驗2為了檢驗ISNM算法在相同數(shù)據(jù)規(guī)模、不同相似重復(fù)記錄條數(shù)下的有效性,設(shè)置如下實驗:從數(shù)據(jù)集中隨機抽取20萬條記錄,并將此數(shù)據(jù)集處理成包含0.09萬,0.12萬,0.18萬,0.25萬和0.31萬條相似重復(fù)記錄的數(shù)據(jù)集,仍采用人工統(tǒng)計的方式處理實驗結(jié)果。此次實驗設(shè)定相似度閾值為0.75,可變窗口的最小值為40,最大值為60。
4.2.2 不同窗口大小對消除結(jié)果的影響
實驗3為了看出不同窗口對實驗結(jié)果的影響,設(shè)置可變窗口的最小值為60,最大值為80,可變窗口與固定窗口的初始值為80,在與實驗1同樣的實驗環(huán)境中進行實驗,并將實驗結(jié)果與實驗1的結(jié)果進行比較分析。
實驗4為了檢驗ISNM算法在相同數(shù)據(jù)規(guī)模和相似重復(fù)記錄條數(shù)下,不同窗口范圍對實驗結(jié)果的影響,設(shè)置如下實驗:從數(shù)據(jù)集中隨機抽取20萬條記錄,并將此數(shù)據(jù)集處理成包含0.25萬條相似重復(fù)記錄的數(shù)據(jù)集,將可變窗口的最小最大值分別設(shè)置成[20,40],[40,60],[60,80],[80,100]和[100,120],設(shè)定窗口的初始值取窗口的最小值,相似度閾值為0.75。
4.2.3 評價指標(biāo)
實驗性能評價指標(biāo)采用查準(zhǔn)率(precision) 、查全率(recall)[17]和運行時間開銷。查全率和查準(zhǔn)率定義如式(5)和式(6)所示:
(5)
(6)
其中,tp表示檢測出來的相似重復(fù)記錄是正確的數(shù)量,fp表示檢測出來的相似重復(fù)記錄是錯誤的數(shù)量,fn表示沒有檢測出來的相似重復(fù)記錄的數(shù)量[17]。故tp+fp表示檢測出來的相似重復(fù)記錄的總量,tp+fn表示數(shù)據(jù)集中原本存在的重復(fù)記錄總量。
4.3.1 性能實驗
基于上述實驗方案,使用各算法在相同的實驗環(huán)境下對待檢測的數(shù)據(jù)集進行重復(fù)記錄檢測,實驗結(jié)果如圖3~圖5所示。
Figure 3 Comparison of precision of each algorithm
由圖3可以看出,ISNM算法的查全率優(yōu)于其他各算法的。ISNM算法采用屬性區(qū)分法確定字段權(quán)值,解決了權(quán)值主觀性過強的問題,在排序之前對排序關(guān)鍵字進行預(yù)處理,使相似重復(fù)記錄存儲在靠近的位置以避免漏配,并使用大小可變的窗口進行檢測,避免了因窗口過小而引起的漏配,從而提高了查全率。MPN算法多次獨立地執(zhí)行SNM算法,每次選用不同的關(guān)鍵字對數(shù)據(jù)集進行排序,故查全率較高,但MPN算法固定移動窗口大小,窗口設(shè)置得太大或太小對查全率都有比較大的影響,因此MPN算法的查全率低于ISNM算法的。LF-SNM算法與chen-SNM算法采用的字段權(quán)值調(diào)整方法需先人為設(shè)定再進行調(diào)整,仍具有一定的主觀性,故查全率較低。
Figure 4 Comparison of recall of each algorithm
由圖4可以看出,ISNM算法的查準(zhǔn)率要優(yōu)于其他算法的。ISNM采用了伸縮滑動窗口的方式,當(dāng)窗口較大時可以動態(tài)縮小窗口,避免了因不必要的記錄比對導(dǎo)致檢測出來的記錄是錯誤的情況,并且使用字段過濾算法減少了比較次數(shù),而不使用傳遞閉包的方式,降低了誤識別率,故查準(zhǔn)率高。而chen-SNM算法、LF-SNM算法和MPN算法均采用傳遞閉包的方式整合重復(fù)記錄,會產(chǎn)生很多的誤識別,因此這3種算法的查全率不如ISNM算法的。
Figure 5 Comparison of running time of each algorithm
由圖5可以看出,在同樣的實驗環(huán)境中ISNM算法的時間效率優(yōu)于其他算法的。ISNM算法使用了可變窗口的方式,避免了無用的記錄比對,并同時使用字段過濾算法計算記錄的相似度,提高了記錄的比對效率,因此ISNM算法的時間開銷小。chen-SNM算法與LF-SNM算法分別采用了伸縮窗口和長度過濾的方式來提高效率,但這2個算法需要計算傳遞閉包,因此這2個算法的時間開銷與ISNM算法的相近但低于ISNM算法的。MPN算法需要多次獨立執(zhí)行SNM算法,每次選擇不同的關(guān)鍵字排列數(shù)據(jù)集,并且合并數(shù)據(jù)集合時需要計算傳遞閉包,因此時間開銷較大。
4.2.1節(jié)中的實驗2的實驗結(jié)果如圖6所示。
Figure 6 Comparison results under different similar repeat scales
由圖6可以看出,ISNM算法在相同數(shù)據(jù)規(guī)模、不同相似重復(fù)記錄條數(shù)下,查全率與查準(zhǔn)率一直處于相對穩(wěn)定的狀態(tài),并同時保持了較高水準(zhǔn)。其次運行時間隨著相似重復(fù)數(shù)的增加而逐漸增大,但是仍在可接受的范圍內(nèi),由此可進一步證明本文所提算法的優(yōu)越性。
4.3.2 不同窗口大小對消除結(jié)果的影響
基于4.2.2節(jié)中的實驗3的實驗結(jié)果如圖7~圖9所示。
Figure 7 Comparison of precision between ISNM algorithm and SNM algorithm
Figure 8 Comparison of recall between ISNM algorithm and SNM algorithm
Figure 9 Comparison of running time between ISNM algorithm and SNM algorithm
由圖7和圖8可以看出,ISNM算法的查全率和查準(zhǔn)率明顯優(yōu)于SNM算法的。隨著窗口的增大,窗口內(nèi)覆蓋的重復(fù)記錄變多,避免了目標(biāo)記錄的漏配,故SNM算法的查全率會提高,但查準(zhǔn)率會下降,這是因為固定窗口不能調(diào)節(jié)大小,增加了無用的記錄比對導(dǎo)致誤識別增多。初始值為80的窗口幾乎包括了所有目標(biāo)記錄,故ISNM算法的查全率變化不大,但查準(zhǔn)率會稍微下降,這也是由于窗口增大造成誤識別增多導(dǎo)致的,但可變窗口會及時縮小窗口大小來避免這種情況的發(fā)生。
由圖9可以看出,ISNM算法的時間開銷要優(yōu)于SNM算法的。隨著窗口的增大,增加了窗口內(nèi)的記錄比對次數(shù),故ISNM算法與SNM算法的時間開銷都會變大,其中SNM算法的時間開銷變化較大,而ISNM算法由于采用了可變窗口,可以及時調(diào)整窗口的大小,所以時間開銷變化的幅度不大。
基于4.2.2節(jié)中的實驗4的實驗結(jié)果如圖10所示。
Figure 10 Comparison results of different window ranges
由圖10可以看出,隨著窗口范圍的增大,查全率先增大,然后趨于平穩(wěn);而查準(zhǔn)率先增大,然后減小。在此使用查全率和查準(zhǔn)率的調(diào)和均值F值來反映ISNM算法的性能。從圖10中的折線可以看出,窗口大小在[60,80]和[80,100]時F值達到最大,再結(jié)合2個范圍的運行時間可以得出,針對本文的實驗數(shù)據(jù),最優(yōu)的窗口為[60,80]。
數(shù)據(jù)清洗可以有效地提高數(shù)據(jù)源的數(shù)據(jù)質(zhì)量,消除數(shù)據(jù)中的重復(fù)記錄是其中的一個熱門課題。本文分析了傳統(tǒng)SNM算法,并指出了傳統(tǒng)SNM算法的缺陷,針對原算法的缺陷提出了基于SNM的改進算法——ISNM算法。主要提出了4點改進:(1)采用屬性區(qū)分法確定屬性權(quán)值,解決了單一用戶設(shè)定固定權(quán)值的不足,提高了算法檢測的精度;(2)根據(jù)權(quán)值選取排序關(guān)鍵字,避免了關(guān)鍵字選取不當(dāng)對SNM算法精度的影響,并對關(guān)鍵字進行預(yù)處理,使得相似重復(fù)記錄位置彼此靠近以避免漏配;(3)使用字段過濾算法計算相似度,減少了窗口內(nèi)記錄屬性的比對次數(shù),加快了算法的檢測速度;(4)使用可變窗口的方式進行檢測,既防止了記錄的漏配,也減少了無用的匹配。通過對實際系統(tǒng)中的數(shù)據(jù)進行實驗,采用查全率、查準(zhǔn)率和運行時間評價標(biāo)準(zhǔn)驗證了ISNM算法的可行性與優(yōu)勢。然而改進算法無法識別文字不同但語義相同的相似重復(fù)記錄,另外相似度閾值的取值范圍也是一個亟需解決的問題,過大或過小的閾值都會對查重精度產(chǎn)生影響,下一步將針對這些問題進行研究。