一种基于改进MinHash算法的检索方法、装置、存储介质及终端制造方法及图纸

技术编号:37331447 阅读:20 留言:0更新日期:2023-04-21 23:08
本发明专利技术涉及一种基于改进MinHash算法的检索方法、装置、存储介质及终端,所述检索方法包括:S1、下载m个不同类型和不同版本的二进制组件库,得到组件集合S;S2、对组件集合S中的每个组件分别进行特征提取;S3、通过特征赋权重模块计算特征值的权重值,通过MinHash算法计算组件哈希值,如果最小哈希值选到了特征f

【技术实现步骤摘要】
一种基于改进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]需要说明的是,在上述
技术介绍
部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0005]本专利技术的目的在于克服现有技术的缺点,提供了一种基于改进MinHash算法的检索方法、装置、存储介质及终端,解决了现有传统方法中存在的不足。
[0006]本专利技术的目的通过以下技术方案来实现:一种基于改进MinHash算法的检索方法,所述检索方法包括:
[0007]S1、下载m个不同类型和不同版本的二进制组件库,得到组件集合S;
[0008]S2、对组件集合S中的每个组件分别进行特征提取;
[0009]S3、通过特征赋权重模块计算特征值的权重值,通过MinHash算法计算组件哈希值,如果最小哈希值选到了特征f
i
,则记录下其哈希值的同时,关联其特征权重值w(f
i
);
[0010]S4、再通过相似度计算公式计算两个组件之间的相似度。
[0011]所述检索方法还包括构建索引步骤,执行于S3和S4之间,所述构建索引步骤包括:设共生成6次最小哈希值,每个最小哈希值提取4个bit,即共生成24位bit,则24位哈希值被分成3部分,每8个bit对应一桶号,一共生成3个哈希表,每个哈希表包含256个桶,前8bit对应10进制值为155的哈希值,被分配到哈希表1到155号桶,形成一个列表,桶内哈希值相似度高,桶间哈希值相似度低,在检索的时候,只需要比较特定桶下面的候选值,这样减少了
计算量。
[0012]所述通过特征赋权模块计算特征值的权重值具体包括:
[0013]设某一组件中某个特征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);
[0014]设特征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);
[0015]得到最终的特征权重值w(f
i
)=alpha*w1+beta*w2;其中alpha和beta都为人为设定的经验值。
[0016]所述通过相似度计算公式计算两个组件之间的相似度具体包括:
[0017]设组件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
,
···
,w
b,m
},则通过相似度计算公式计算得到两个组件之间的相似度P,其中T为组件A和B相同的指纹的下标集合。
[0018]一种基于改进MinHash算法的检索装置,它包括组件集合模块、特征提取模块、特征赋权重模块和相似度计算模块;
[0019]所述组件集合模块:用于下载m个不同类型和不同版本的二进制组件库,得到组件集合S;
[0020]所述特征提取模块:用于对组件集合S中的每个组件分别进行特征提取;
[0021]所述特征赋权重模块:用于计算特征值的权重值,通过MinHash算法计算某组件哈希值,如果最小哈希值选到了特征f
i
,则记录下其哈希值的同时,关联其特征权重值w(f
i
);
[0022]所述相似度计算模块:用于通过相似度计算公式计算两个组件之间的相似度。
[0023]还包括索引构建模块,所述索引构建模块:用于设共生成6次最小哈希值,每个最小哈希值提取4个bit,即共生成24位bit,则24位哈希值被分成3部分,每8个bit对应一桶号,一共生成3个哈希表,每个哈希表包含256个桶,前8bit对应10进制值为155的哈希值,被分配到哈希表1到155号桶,形成一个列表,桶内哈希值相似度高,桶间哈希值相似度低,在检索的时候,只需要比较特定桶下面的候选值,这样减少了计算量。
[0024]所述特征赋权重模块包括第一特征权重计算单元、第二特征权重计算单元和特征权重计算单元;
[0025]所述第一特征权重计算单元:用于设某一组件中某个特征f
i
出现了k次,n个特征值一共出现t次,则tf(f
i
)=k/t,tf表示词频,如果特征f
i
在x个组件中出现,则idf(f
i
)=log(m/x),idf表示倒文档频率,特征f
i
对应的权重值w1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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
,
···...

【专利技术属性】
技术研发人员:朱辉张晗
申请(专利权)人:软安科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1