本发明涉及一种检测方法,具体涉及一种大规模文档相似性检测方法,属于计算机算法领域。
背景技术:
随着大数据时代的到来,数据化信息增长迅速,数据占用空间越来越大,如此海量的数据带来了巨大的存储问题。研究发现,存储的数据中冗余数据比例大于六成,并且冗余比例在未来会继续增加。冗余数据降低了用户检索和查询数据的效率,并且大量存储资源浪费于存储冗余数据,并且用户也不希望看到一堆内容相同或近似的检索结果。另一方面,数据挖掘开发者通过网络爬取的数据同样面临数据重复、冗余的问题。因此文档相似性检测和去重已经成为国内外重要的研究课题。
传统的哈希算法通过计算将输入数据映射成特定长度的哈希值输出,输入数据的差异越大,映射出的签名值差异也越大。但传统的哈希算法,如sha-1、md5,对1比特差距的输入数据都会产生完全不同的输出哈希值,因此无法检测出相似文档,需要对原有哈希算法进行改进,使得相似文档可以输出相似的哈希值。
为了解决上述问题,目前还出现一种simhash算法,该算法由3位google的工程师g.s.manku、a.jain和a.d.sarma于2007年提出。究其本质而言,simhash算法是一种经过改进的哈希算法,旨在解决相似数据的去重,但将其实际应用于文档相似性检测后,人们发现,这一算法仍然存在着准确率不够高,效率较低的问题。
综上所述,如何克服上述现有技术上的不足,提出一种准确率高、执行效率高的大规模文档相似性检测方法,就成为了本领域内的技术人员亟待解决的问题。
技术实现要素:
鉴于现有技术存在上述缺陷,本发明的目的是提出一种大规模文档相似性检测方法。
本发明的目的,将通过以下技术方案得以实现:
一种大规模文档相似性检测方法,包括如下步骤:
s1、输入文档集,计算文档集中文档其他信息的相似度;
s2、文档集中每一篇文档内容对应一个初始化为0、长度为f的签名s,和一个初始化为0的f维向量v;
s3、通过nlpir分词系统对文档内容进行分词处理,过滤掉语气词、助词,并去掉干扰符号后将文档内容转换为一组特征词;
s4、特征词x的权重综合使用tf-idf技术和单词的主题相关性计算,将中文术语长度函数作为特征词x的主题相关性函数,中文术语长度函数为
特征词x的权重计算公式为
s5、将所有特征词使用相同的哈希函数映射为长度为f的签名h,遍历h的每一位,若h的第i位为1,i介于1到f之间,v的第i位加上该特征词的权重,否则减去;
s6、遍历v,如果v的第i位大于0,签名s的第i位设为1,否则设为0,最终生成的签名s就是文档内容对应的simhash签名值;
s7、将文档内容对应的simhash签名值分为n块,对同块的签名值使用相同的哈希函数,映射到桶,检查每一个桶中的元素,判断元素数量有没超过(1+μ1)×aven,其中aven为桶中元素的平均值,μ1为权重,桶中元素数量超过的话进行二次哈希;
s8、同一个桶的文档作为候选对,先使用文档内容对应的simhash签名值进行海明距离的计算,然后使用第一步文档其它信息的相似度综合计算文档间的相似度,文档间的相似度的计算公式为
s9、判断同一个桶中文档之间的相似度是否小于m值,
若同一个桶中文档之间的相似度小于m值,即输出为相似文档,
若同一个桶中文档之间的相似度不小于m值,即输出为非相似文档。
优选地,s1中所述文档其他信息包括文档关键字、文档的标签以及文档的引用文献。
优选地,s1中所述计算文档集中文档其他信息的相似度,包括如下步骤:
s11、提取文档中的其他信息,并将提取出的其他信息用集合的形式表示,将这一系列集合组成特征矩阵;
s12、使用minhash的方法计算特征矩阵对应列之间的jaccard相似度。
优选地,s12中所述使用minhash的方法计算特征矩阵对应列之间的jaccard相似度,包括如下步骤:
s121、对特征矩阵进行n次随机打乱生成签名矩阵;
s122、选用的n个随机哈希函数为hi(x)=(x+i)modn(i=1,2,3…n),通过签名矩阵对应列之间的jaccard相似度来估计特征矩阵对应列之间的jaccard相似度。
优选地,s9中所述m值为0.25。
与现有技术相比,本发明的创新之处及其突出效果表现为:第一,本发明从多个维度入手,包括文档内容、文档关键字、文档的标签、文档的引用文献等综合计算文档的相似度,并且综合使用tf-idf技术和单词的主题相关性计算关键词权重,提高了文档相似性检测的准确率。第二,在本发明的检索过程中,在出现哈希到桶但分布不均匀的情时,会进行二次哈希,减少候选对的数量并且使分布更加均匀,可以在保证相同文档检测量的前提下,以较短的时间完成检测操作,从而提升了提高文档相似性检测的执行效率。
综上所述,本发明检测的准确率较高,执行效率较高。可广泛用于数据检索、数据存储等互联网大规模数据挖掘中。
以下便结合实施例附图,对本发明的具体实施方式作进一步的详述,以使本发明技术方案更易于理解、掌握。
附图说明
图1是本发明的实现流程图;
图2是本发明与原simhash算法在五个主题上相似性文档检测准确率对比图;
图3是本发明与原simhash算法在五个主题上相似性文档检测召回率对比图;
图4是本发明与原simhash算法在相似性文档检测执行时间对比图。
具体实施方式
为了更加详细的描述本发明提出的种服务器集群的服务节点之间所执行的负载均衡方法。结合图1,具体说明如下。
一种大规模文档相似性检测方法,包括如下步骤:
s1、输入文档集,计算文档集中文档其他信息的相似度。
s2、文档集中每一篇文档内容对应一个初始化为0、长度为f的签名s,和一个初始化为0的f维向量v。
s3、通过nlpir分词系统对文档内容进行分词处理,过滤掉语气词、助词,并去掉干扰符号后将文档内容转换为一组特征词。
s4、特征词x的权重综合使用tf-idf技术和单词的主题相关性计算,将中文术语长度函数作为特征词x的主题相关性函数,中文术语长度函数为
特征词x的权重计算公式为
s5、将所有特征词使用相同的哈希函数映射为长度为f的签名h,遍历h的每一位,若h的第i位为1,i介于1到f之间,v的第i位加上该特征词的权重,否则减去。
s6、遍历v,如果v的第i位大于0,签名s的第i位设为1,否则设为0,最终生成的签名s就是文档内容对应的simhash签名值。
s7、将文档内容对应的simhash签名值分为n块,对同块的签名值使用相同的哈希函数,映射到桶,检查每一个桶中的元素,判断元素数量有没超过(1+μ1)×aven,其中aven为桶中元素的平均值,μ1为权重,桶中元素数量超过的话进行二次哈希。
s8、同一个桶的文档作为候选对,先使用文档内容对应的simhash签名值进行海明距离的计算,然后使用第一步文档其它信息的相似度综合计算文档间的相似度,文档间的相似度的计算公式为
s9、判断同一个桶中文档之间的相似度是否小于m值,
若同一个桶中文档之间的相似度小于m值,即输出为相似文档,
若同一个桶中文档之间的相似度不小于m值,即输出为非相似文档。
在本实施例中,所述m值为0.25。
需要说明的是,s1中所述的文档其他信息包括但不限于文档关键字、文档的标签以及文档的引用文献。
s1中所述计算文档集中文档其他信息的相似度,具体包括如下步骤:
s11、提取文档中的其他信息,并将提取出的其他信息用集合的形式表示,将这一系列集合组成特征矩阵。
s12、使用minhash的方法计算特征矩阵对应列之间的jaccard相似度。
s12中所述使用minhash的方法计算特征矩阵对应列之间的jaccard相似度,具体又包括如下步骤:
s121、对特征矩阵进行n次随机打乱生成签名矩阵。
s122、选用的n个随机哈希函数为hi(x)=(x+i)modn(i=1,2,3…n),通过签名矩阵对应列之间的jaccard相似度来估计特征矩阵对应列之间的jaccard相似度。
本发明的方法性能、相似性文档检测的准确率和召回率通过如下实例进一步说明:
在实施例中,本发明使用的文档集是互联网、医疗、教育、ai、住房五大主题中的1000份文档,和混入的5000份不相关混杂文档。
如图2和图3所示,本发明从多个维度,包括文档内容、文档关键字、文档的标签、文档的引用文献等综合计算文档的相似度,并且综合使用tf-idf技术和单词的主题相关性计算关键词权重,提高相似性文档检测的准确率,所以本发明在五个主题上相似性文档检测准确率和召回率与原simhash算法相比较高且波动较小。
如图4所示,本发明在检索步骤中,哈希到桶的时候应对分布不均匀的情况,进行二次哈希,减少候选对的数量并且使分布更加均匀,可以在较短的时间内完成相同的数据量,提高相似性文档检测的执行效率,所以本发明在相似性文档检测执行时间与原simhash算法相比较短。
综上所述,本发明检测的准确率较高,执行效率较高。可广泛用于数据检索、数据存储等互联网大规模数据挖掘中。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神和基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内,不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。