1.一種用于確定相似字符串的方法,包括:
步驟1:獲取樣本文件的字符數(shù)組和待檢測(cè)的目標(biāo)文件的字符數(shù)組;
步驟2:構(gòu)建矩陣M,其中,矩陣M的行和列分別對(duì)應(yīng)所述樣本文件的字符數(shù)組和所述目標(biāo)文件的字符數(shù)組;
步驟3:在所述矩陣M中查找滿足相似字符串條件的子方陣,其中,所述相似字符串條件設(shè)置為:如果該子方陣中的元素對(duì)應(yīng)的行和列的字符相同,則所映射的字符串被確定為相似字符串,其中,k表示該子方陣的階數(shù),j1、j2、j3、…jk是1、2、…、k的一個(gè)排列。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述樣本文件的字符數(shù)組和所述目標(biāo)文件的字符數(shù)組中的每個(gè)元素對(duì)應(yīng)對(duì)文件內(nèi)容進(jìn)行分詞處理之后的字符。
3.根據(jù)權(quán)利要求1所述的方法,其中,步驟2包括:
對(duì)于所述矩陣M中的每個(gè)元素,如果行對(duì)應(yīng)的字符和列對(duì)應(yīng)的字符相等,則將該元素設(shè)置為1,否則設(shè)置為0。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述在矩陣M中查找滿足相似字符串條件的子方陣的步驟包括:
步驟11:設(shè)置待查找的子方陣A1的階數(shù)k;
步驟12:遍歷矩陣M,以查找符合所述相似字符串條件子方陣A1,其中,子方陣A1中的元素滿足不為0;
步驟13:基于所找到的子方陣A1進(jìn)一步查找滿足所述相似字符串條件的子方陣A2,其中,A1是子方陣A2的子集;
步驟14:確定所述子方陣A2映射的相似字符串和該相似字符串在所述目標(biāo)文件中的位置。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述子方陣A1的階數(shù)k大于預(yù)定的閾值。
6.一種用于文件查重的方法,包括:
步驟21:利用權(quán)利要求1至5中的任一項(xiàng)所述的方法查找所述目標(biāo)文件和所述樣本文件中的相似字符串;
步驟22:根據(jù)所述相似字符串計(jì)算所述樣本文件和所述目標(biāo)文件的相似比。
7.一種利用hadoop集群進(jìn)行文件查重的方法,包括以下步驟:
步驟31:利用map函數(shù)將查找一個(gè)目標(biāo)文件相對(duì)于多個(gè)樣本文件的查重任務(wù)分解為多個(gè)查找一個(gè)目標(biāo)文件相對(duì)于一個(gè)樣本文件的子任務(wù);
步驟32:利用reduce函數(shù)根據(jù)權(quán)利要求6所述的方法并行查找對(duì)應(yīng)每個(gè)子任務(wù)的相似比。
8.根據(jù)權(quán)利要求7所述的方法,其中,在步驟32之后,還包括當(dāng)所述相似比超過(guò)相似比閾值時(shí),輸出所述目標(biāo)文件與每個(gè)樣本文件的相似比的列表。
9.根據(jù)權(quán)利要求8所述的方法,其中,所述相似比的列表包括章節(jié)相似比和全文相似比。
10.一種用于文件查重的系統(tǒng),包括:
用于利用權(quán)利要求1至5中的任一項(xiàng)所述的方法查找所述目標(biāo)文件和所述樣本文件中的相似字符串的模塊;
用于根據(jù)所述相似字符串計(jì)算所述樣本文件和所述目標(biāo)文件的相似比的模塊。