【技术实现步骤摘要】
一种基于改进MinHash算法的检索方法、装置、存储介质及终端
[0001]本专利技术涉及数据安全
,尤其涉及一种基于改进MinHash算法的检索方法、装置、存储介质及终端。
技术介绍
[0002]在文档、网页、二进制文件等的相似度检测中,常常需要计算集合的相似度,为了快速高效计算集合相似度,目前传统的方法都是使用MinHash算法对原始集合对象求的局部敏感哈希值,利用哈希值的相似度来近似原始对象的相似度,并使用bbit
‑
MinHash算法对每个哈希值只提取b个bit,拼接成最终的哈希值。
[0003]但是现有的方法中对特征权重值不做区分,导致重要的特征哈希值和普通特征权重一样,这种情况下,只能依靠特征的数量来计算相似度,而忽略了特征本身包含的信息;比如在二进制检测场景,某些特征只在特定的二进制组件和其版本出现,另一些特征可能在很多不同的组件中都出现,两者应该具有不同的权重,显然前者包含的信息量更大,更有区分性;如图1所示,现有方法则不能区分相似度,假设集合A、B、C的特征数量相等,且重合的特征数量也相等,即A∪B=B∪C and A∩B=B∩C,从特征重合的数量上,现有技术方案无法区分sim(A,B)与sim(B,C),但如果集合A、B重合的特征包含的信息量更低,则应该给予这两组集合不同的相似度;因此,如何解决现有方法存在的问题,是现阶段需要考虑的。
[0004]需要说明的是,在上述
技术介绍
部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员 ...
【技术保护点】
【技术特征摘要】
1.一种基于改进MinHash算法的检索方法,其特征在于:所述检索方法包括:S1、下载m个不同类型和不同版本的二进制组件库,得到组件集合S;S2、对组件集合S中的每个组件分别进行特征提取;S3、通过特征赋权重模块计算特征值的权重值,通过MinHash算法计算组件哈希值,如果最小哈希值选到了特征f
i
,则记录下其哈希值的同时,关联其特征权重值w(f
i
);S4、再通过相似度计算公式计算两个组件之间的相似度。2.根据权利要求1所述的一种基于改进MinHash算法的检索方法,其特征在于:所述检索方法还包括构建索引步骤,执行于S3和S4之间,所述构建索引步骤包括:设共生成6次最小哈希值,每个最小哈希值提取4个bit,即共生成24位bit,则24位哈希值被分成3部分,每8个bit对应一桶号,一共生成3个哈希表,每个哈希表包含256个桶,前8bit对应10进制值为155的哈希值,被分配到哈希表1到155号桶,形成一个列表,桶内哈希值相似度高,桶间哈希值相似度低,在检索的时候,只需要比较特定桶下面的候选值,这样减少了计算量。3.根据权利要求1所述的一种基于改进MinHash算法的检索方法,其特征在于:所述通过特征赋权模块计算特征值的权重值具体包括:设某一组件中某个特征f
i
出现了k次,n个特征值一共出现t次,则tf(f
i
)=k/t,tf表示词频,如果特征f
i
在x个组件中出现,则idf(f
i
)=log(m/x),idf表示倒文档频率,特征f
i
对应的权重值w1(f
i
)=k/t*log(m/x);设特征f
i
在所有组件中出现的次数分别为C={c1,c2,c3,
…
,cm},采用随机变量Y表示特征f
i
在组件中出现的次数,则引入随机变量Y的信息熵表示为H(Y)=∑
j
P(cj)*log(P(cj)),其中P(cj)表示cj的概率,即值cj在C中出现次数除以C的总数,设特征f
i
的覆盖率acd(f
i
)=x/m,得到特征的权重值w2=acd(fi)*H(Y);得到最终的特征权重值w(f
i
)=alpha*w1+beta*w2;其中alpha和beta都为人为设定的经验值。4.根据权利要求1所述的一种基于改进MinHash算法的检索方法,其特征在于:所述通过相似度计算公式计算两个组件之间的相似度具体包括:设组件A的指纹为集合{a1,a2,
···
,a
m
},组件B对应的指纹为集合{b1,b2,
···
,b
m
},通过特征赋权模块计算可以得到每个特征的权重值,在生成MinHash指纹时,保留对应特征的权重,则两个组件对应的特征向量分别{w
a,1
,w
a,2
,
···
,w
a,m
},{w
b,1
,w
b,2
,
···...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。