一種大數(shù)據(jù)集下相似性數(shù)據(jù)的快速識別算法
【專利摘要】一種大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,包括下述步驟:數(shù)據(jù)文件長度的修正;計算抽樣數(shù)據(jù)塊之間的距離;計算抽樣數(shù)據(jù)塊的位置;抽取數(shù)據(jù)塊;在數(shù)據(jù)文件首尾各抽取一個數(shù)據(jù)塊;計算抽取數(shù)據(jù)塊的特征值;通過集合運算判斷數(shù)據(jù)的相似性。一方面,本發(fā)明的時空開銷不隨著數(shù)據(jù)文件大小的增加而增長;其次,本發(fā)明通過位置影響因子修正數(shù)據(jù)文件的長度,避免抽樣數(shù)據(jù)塊位置偏移而導致相似性數(shù)據(jù)識別失?。涣硗庖环矫?,本發(fā)明通過信息檢索的方法有效的保證了本發(fā)明在相似性數(shù)據(jù)識別方面的有效性和準確性。
【專利說明】一種大數(shù)據(jù)集下相似性數(shù)據(jù)的快速識別算法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及大數(shù)據(jù)處理的【技術(shù)領(lǐng)域】,特別涉及一種大數(shù)據(jù)集下相似性數(shù)據(jù)的快速識別算法。
【背景技術(shù)】
[0002]在2013年IDC預測到2014年全球的數(shù)據(jù)總量將會到達4ZB,與2012年相比數(shù)據(jù)增長量到達50%。IBM用了 4V:volume、variety、value、veracity來描述這些數(shù)據(jù)的特性,這直接說明了這些數(shù)據(jù)非常復雜。比如,在這些數(shù)據(jù)中存在著大量結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)。正是因為這些復雜的特性,導致現(xiàn)有的數(shù)據(jù)處理方法仍然有許多問題未得到解決。其中,文件相似性在數(shù)據(jù)處理方法中具有非常重要的作用。比如,數(shù)據(jù)挖掘中的聚類分析、剽竊檢測、遠程文件備份、文件系統(tǒng)中相似數(shù)據(jù)的識別、熱點數(shù)據(jù)的識別等等。
[0003]盡管之前在相似性數(shù)據(jù)識別方面已經(jīng)有非常多的研究,但是仍然有非常多的問題沒有解決:
[0004]1.減小相似性數(shù)據(jù)識別的開銷:傳統(tǒng)的相似性數(shù)據(jù)識別算法屬于IO密集型和CPU密集型任務(wù)。當使用傳統(tǒng)相似性數(shù)據(jù)識別算法計算數(shù)據(jù)的摘要需要占用大量的CPU時間和大量的內(nèi)存空間,同時也會導致大量的磁盤10。需要指出的是這些磁盤訪問是隨機的,這就嚴重的降低相似性數(shù)據(jù)識別的性能。此外,傳統(tǒng)相思數(shù)據(jù)識別算法的計算開銷隨著數(shù)據(jù)集的增長而增長。
[0005]2.縮短相似性數(shù)據(jù)識別的時間:在數(shù)據(jù)集下,傳統(tǒng)的相似性數(shù)據(jù)識別算法需要大量的時間進行相似數(shù)據(jù)的識別,這直接導致了非常嚴重的延遲。對于一些實時和高吞吐量的應(yīng)用來說,這樣的延遲是無法接受的。
[0006]3.保證相似性識別的有效性和準確性:如何在識別出相似性數(shù)據(jù)的同時保證識別的有效性和準確是一個挑戰(zhàn)。傳統(tǒng)的相似性算法常常在這兩者時間進行折衷。
[0007]雖然典型的相似性算法Shingle和Simhash的確能夠有效識別相似性數(shù)據(jù),但是在大數(shù)據(jù)集這兩個算法時空開銷非常大,特別的這個兩個算法的時空開銷隨著數(shù)據(jù)文件大小增加而成倍增加。因此,在大數(shù)據(jù)集下這個兩個典型的相似性算法并不能有效解決上述挑戰(zhàn)。
[0008]傳統(tǒng)的抽樣相似性算法雖然識別時間較短,而且開銷固定,不隨著數(shù)據(jù)文件長度的增加而增加,但是傳統(tǒng)的抽樣相似性算法對于數(shù)據(jù)文件內(nèi)容的修改非常敏感。比如,數(shù)據(jù)文件內(nèi)容一個字節(jié)的修改就會導致傳統(tǒng)的相似性識別算法檢測失敗。
[0009]因此,我們亟須一種在大數(shù)據(jù)集下低開銷、檢測時間短和同時保證算法的有效性和準確性的相似性數(shù)據(jù)識別算法。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的是實現(xiàn)一個針對大數(shù)據(jù)集下低開銷、檢測時間短和能夠保證有效性和準確性的相似性數(shù)據(jù)識別算法。本發(fā)明抽取固定數(shù)量的數(shù)據(jù)塊,可以保證算法的開銷不會隨著數(shù)據(jù)文件內(nèi)容的增長而增加;通過集合運算結(jié)合內(nèi)存數(shù)據(jù)數(shù)據(jù)庫保證檢測時間較短;通過信息檢索的方法,保證算法的有效性和準確性。
[0011]為了達到上述目的,本發(fā)明采用以下技術(shù)方案:
[0012]一種大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,包括:
[0013](I)、數(shù)據(jù)文件長度的修正,在對數(shù)據(jù)文件進行相似性判斷之前,首先獲取數(shù)據(jù)文件的長度,將數(shù)據(jù)文件的長度除以一個位置影響因子,然后將得到的商乘以位置影響因子,最后將所得的積作為修正后的數(shù)據(jù)文件長度;
[0014](2)、計算抽樣數(shù)據(jù)塊之間的距離;
[0015](3)、計算抽樣數(shù)據(jù)塊的位置,根據(jù)抽取順序、抽樣數(shù)據(jù)塊之間的距離和抽樣數(shù)據(jù)的長度進行計算;
[0016](4)、抽取數(shù)據(jù)塊,根據(jù)計算出來的抽樣數(shù)據(jù)塊的位置,設(shè)置數(shù)據(jù)文件的讀取位置,然后抽取長度等于抽樣數(shù)據(jù)塊長度的數(shù)據(jù)塊;
[0017](5)、在數(shù)據(jù)文件首尾各抽取一個數(shù)據(jù)塊;
[0018](6)、計算抽取數(shù)據(jù)塊的特征值,通過將每一個抽取的數(shù)據(jù)通過哈希函數(shù)計算一個出哈希值,用這個哈希值代表該數(shù)據(jù)塊; [0019](7)、通過集合運算判斷數(shù)據(jù)的相似性,將計算出來的哈希值集合同已經(jīng)存儲的哈希值集合進行集合運算,得到值作為兩個數(shù)據(jù)的相似程度值T ;T值大于等于0,小于等于I ;當T接近O時,代表這個兩個數(shù)據(jù)相似程度非常低;當T接近I時,代表這兩個數(shù)據(jù)相似程
度非常高。
[0020]優(yōu)選的,步驟(1)中,所述位置影響因子是避免因為數(shù)據(jù)文件內(nèi)容修改造成抽樣數(shù)據(jù)塊位置偏移的算法參數(shù),位置影響因子是一個大于等于I的數(shù)字,可以選取一個固定的值,也可以根據(jù)當前數(shù)據(jù)集的特性動態(tài)的調(diào)整。
[0021]優(yōu)選的,步驟(2)中,計算抽樣數(shù)據(jù)塊之間的距離的步驟為:將修正后的數(shù)據(jù)文件長度減去抽樣數(shù)據(jù)長度乘以抽樣數(shù)據(jù)數(shù)量的乘積,然后將得到的差值除以抽樣數(shù)據(jù)塊數(shù)量減一,將得到的商作為抽樣數(shù)據(jù)塊之間的距離;最后,判斷這個值是否大于0,如果小于0,則使抽樣數(shù)據(jù)塊之間的距離等于O ;反之,不做任何處理。
[0022]優(yōu)選的,步驟(3)中,計算抽樣數(shù)據(jù)塊的位置具體為:對于第i個數(shù)據(jù)數(shù)塊,其中:
I= <i<抽樣數(shù)據(jù)塊數(shù)量,將i減一后乘以抽樣數(shù)據(jù)塊長度加上抽樣數(shù)據(jù)塊之間距離的和,最后將得到的乘積作為第i塊抽樣數(shù)據(jù)塊在數(shù)據(jù)文件中位置偏移值。
[0023]優(yōu)選的,步驟(4)中,具體是在數(shù)據(jù)文件的首和數(shù)據(jù)的文件尾各抽取一個數(shù)據(jù)塊。
[0024]優(yōu)選的,步驟(5)中,還包括判斷數(shù)據(jù)讀取是否完整和是否出現(xiàn)錯誤的步驟。
[0025]優(yōu)選的,步驟(6)中,對于每一個抽樣數(shù)據(jù)塊的哈希值,只取其數(shù)據(jù)的高8位。
[0026]優(yōu)選的,步驟(7)中,進行集合運算的具體步驟為:
[0027]首先進行集合交運算,然后進行集合并運算,最后將交集的成員個數(shù)除以并集的成員個數(shù),得到的值作為兩個數(shù)據(jù)的相似程度值。
[0028]本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點和有益效果:
[0029](I)、本發(fā)明主要用于大數(shù)據(jù)集下相似性數(shù)據(jù)的快速識別,與其他同類算法相比,本發(fā)明計算開銷固定,不會隨著數(shù)據(jù)文件大小的增加而增加。非常適合大數(shù)據(jù)集下相似性數(shù)據(jù)的快速識別。[0030](2)、本發(fā)明避免了傳統(tǒng)抽樣相似性識別算法的弊端,不會因為數(shù)據(jù)文件內(nèi)容的修改而導致抽樣數(shù)據(jù)塊位置的偏移,而導致相似性檢測失敗。
[0031](3)、本發(fā)明應(yīng)用信息檢索的方法保證了相似性檢測的有效性和準確性。通過信息的檢索方法的指標召回率和準確率,來保證和作為相似性臨界值選取的依據(jù)。
【專利附圖】
【附圖說明】
[0032]圖1為本發(fā)明的快速識別算法流程圖;
[0033]圖2為本發(fā)明抽取數(shù)據(jù)塊的示意圖。
【具體實施方式】
[0034]下面結(jié)合實施例及附圖對本發(fā)明作進一步詳細的描述,但本發(fā)明的實施方式不限于此。
[0035]實施例
[0036]如圖1所示,本發(fā)明的算法流程如下步驟:
[0037](I)、數(shù)據(jù)文件長度的修正,在對數(shù)據(jù)文件進行相似性判斷之前,首先獲取數(shù)據(jù)文件的長度,將數(shù)據(jù)文件的長度除以一個位置影響因子,然后將得到的商乘以位置影響因子,最后將所得的積作為修正后的數(shù)據(jù)文件長度。數(shù)據(jù)文件長度的修正是為了避免因為數(shù)據(jù)文件的修改,造成抽樣數(shù)據(jù)位置的偏移而導致相似性數(shù)據(jù)識別失敗。
[0038](2)、計算抽樣數(shù)據(jù)塊之間的距離,將修正后的數(shù)據(jù)文件長度減去抽樣數(shù)據(jù)長度乘以抽樣數(shù)據(jù)塊數(shù)量的乘積,然后將得到的差值除以抽樣數(shù)據(jù)塊數(shù)量減一的差,將得到的商作為抽樣數(shù)據(jù)塊之間的距離。最后判斷這個值是否大于0,如果小于0,則使抽樣數(shù)據(jù)塊之間的距離等于O ;反之不做任何處理。
[0039](3)、計算抽樣數(shù)據(jù)塊的位置,對于第i塊抽樣數(shù)據(jù)塊(抽樣數(shù)據(jù)塊數(shù)量〉i> = I),將i減一后乘以抽樣數(shù)據(jù)塊長度加上抽樣數(shù)據(jù)塊之間距離的和,最后將得到的乘積作為第i塊抽樣數(shù)據(jù)塊在數(shù)據(jù)文件中的位置偏移值。
[0040](4)、抽取數(shù)據(jù)塊,根據(jù)計算出來的抽樣數(shù)據(jù)塊的位置,設(shè)置數(shù)據(jù)文件的讀取位置,然后抽取長度等于抽樣數(shù)據(jù)塊長度的數(shù)據(jù)塊。在這里要防止數(shù)據(jù)塊抽取不完整或者抽取錯誤。
[0041](5)、在數(shù)據(jù)文件首尾各抽取一個數(shù)據(jù)塊,為了使本算法能夠有效的識別出相似的數(shù)據(jù)文件,本算法在數(shù)據(jù)文件的首和數(shù)據(jù)的文件尾各抽取一個數(shù)據(jù)塊。
[0042](6)、計算抽取數(shù)據(jù)塊的特征值,通過直接比較抽取的數(shù)據(jù)塊,首先不僅僅需要占用大量的存儲空間,另外數(shù)據(jù)塊一個個字節(jié)的比較將會導致相似性數(shù)據(jù)識別的速度大大減慢。本算法將每一個抽取的數(shù)據(jù)通過哈希函數(shù)計算一個出哈希值,用這個哈希值代表該數(shù)據(jù)塊。另外為了進一步減小空間的占用,對于每一個指紋,本算法只取其高8位。
[0043](7)、通過集合運算判斷數(shù)據(jù)的相似性,將計算出來的哈希值集合同已經(jīng)存儲的哈希值集合進行集合運算,首先進行集合交運算,然后進行集合并運算,最后將交集的成員個數(shù)除以并集的成員個數(shù),得到的值便作為兩個數(shù)據(jù)的相似程度值T。這個T值大于等于0,小于等于I。當這個T值接近O時,代表這個兩個數(shù)據(jù)相似程度非常低;當這個T值接近I時,代表這兩個數(shù)據(jù)相似程度非常高。[0044]通過上述步驟便可以避免數(shù)據(jù)文件內(nèi)容的修改造成抽樣數(shù)據(jù)塊的位置的偏移,如圖2所示。通過修正文件長度之后,就可以保證抽樣數(shù)據(jù)塊位置不偏移,同時為了提高識別的準確性,在文件頭和文件尾各抽取一個數(shù)據(jù)塊。舉例來說,文件A和文件B相似,我們可以認為文件B在文件A的基礎(chǔ)之上增加內(nèi)容得來,在這里我們增加5K的內(nèi)容得到文件B,文件B1、B2、B3分別對應(yīng)文件頭、文件中、文件尾的修改情況。當選取位置影響因子為28K時,可以得到如圖的2抽樣示意位置和對應(yīng)的抽樣數(shù)據(jù)塊。
[0045]另外本算法可以用如下的偽代碼來描述:
【權(quán)利要求】
1.一種大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,其特征在于,包括: (1)、數(shù)據(jù)文件長度的修正,在對數(shù)據(jù)文件進行相似性判斷之前,首先獲取數(shù)據(jù)文件的長度,將數(shù)據(jù)文件的長度除以一個位置影響因子,然后將得到的商乘以位置影響因子,最后將所得的積作為修正后的數(shù)據(jù)文件長度; (2)、計算抽樣數(shù)據(jù)塊之間的距離; (3)、計算抽樣數(shù)據(jù)塊的位置,根據(jù)抽取順序、抽樣數(shù)據(jù)塊之間的距離和抽樣數(shù)據(jù)的長度進行計算; (4)、抽取數(shù)據(jù)塊,根據(jù)計算出來的抽樣數(shù)據(jù)塊的位置,設(shè)置數(shù)據(jù)文件的讀取位置,然后抽取長度等于抽樣數(shù)據(jù)塊長度的數(shù)據(jù)塊; (5)、在數(shù)據(jù)文件首尾各抽取一個數(shù)據(jù)塊; (6)、計算抽取數(shù)據(jù)塊的特征值,通過將每一個抽取的數(shù)據(jù)通過哈希函數(shù)計算一個出哈希值,用這個哈希值代表該數(shù)據(jù)塊; (7)、通過集合運算判斷數(shù)據(jù)的相似性,將計算出來的哈希值集合同已經(jīng)存儲的哈希值集合進行集合運算,得到值作為兩個數(shù)據(jù)的相似程度值T ;T值大于等于O,小于等于I ;當T接近O時,代表這個兩個數(shù)據(jù)相似程度非常低;當T接近I時,代表這兩個數(shù)據(jù)相似程度非常聞。
2.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,其特征在于,步驟(1)中,所述位置影響因子 是避免因為數(shù)據(jù)文件內(nèi)容修改造成抽樣數(shù)據(jù)塊位置偏移的算法參數(shù),位置影響因子是一個大于等于I的數(shù)字,可以選取一個固定的值,也可以根據(jù)當前數(shù)據(jù)集的特性動態(tài)的調(diào)整。
3.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,其特征在于,步驟(2)中,計算抽樣數(shù)據(jù)塊之間的距離的步驟為:將修正后的數(shù)據(jù)文件長度減去抽樣數(shù)據(jù)長度乘以抽樣數(shù)據(jù)數(shù)量的乘積,然后將得到的差值除以抽樣數(shù)據(jù)塊數(shù)量減一,將得到的商作為抽樣數(shù)據(jù)塊之間的距離;最后,判斷這個值是否大于O,如果小于O,則使抽樣數(shù)據(jù)塊之間的距離等于O ;反之,不做任何處理。
4.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,其特征在于,步驟(3)中,計算抽樣數(shù)據(jù)塊的位置具體為:對于第i個數(shù)據(jù)數(shù)塊,其中:1 = <i〈抽樣數(shù)據(jù)塊數(shù)量,將i減一后乘以抽樣數(shù)據(jù)塊長度加上抽樣數(shù)據(jù)塊之間距離的和,最后將得到的乘積作為第i塊抽樣數(shù)據(jù)塊在數(shù)據(jù)文件中位置偏移值。
5.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,其特征在于,步驟(4)中,具體是在數(shù)據(jù)文件的首和數(shù)據(jù)的文件尾各抽取一個數(shù)據(jù)塊。
6.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,其特征在于,步驟(5)中,還包括判斷數(shù)據(jù)讀取是否完整和是否出現(xiàn)錯誤的步驟。
7.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,其特征在于,步驟(6)中,對于每一個抽樣數(shù)據(jù)塊的哈希值,只取其數(shù)據(jù)的高8位。
8.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)下相似性數(shù)據(jù)快速識別算法,其特征在于,步驟(7)中,進行集合運算的具體步驟為: 首先進行集合交運算,然后進行集合并運算,最后將交集的成員個數(shù)除以并集的成員個數(shù),得到的值作為兩個數(shù)據(jù)的相似程度值。
【文檔編號】G06F17/30GK104021179SQ201410247704
【公開日】2014年9月3日 申請日期:2014年6月5日 優(yōu)先權(quán)日:2014年6月5日
【發(fā)明者】鄧玉輝, 周永濤 申請人:暨南大學