CN109271614B - 一种数据查重方法 - Google Patents
一种数据查重方法 Download PDFInfo
- Publication number
- CN109271614B CN109271614B CN201811274839.9A CN201811274839A CN109271614B CN 109271614 B CN109271614 B CN 109271614B CN 201811274839 A CN201811274839 A CN 201811274839A CN 109271614 B CN109271614 B CN 109271614B
- Authority
- CN
- China
- Prior art keywords
- simhash
- data
- signature
- value
- resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种利用DBCursor光标和hashMap进行海量数据查重的方法,对海量资源数据采用DBCursor光标读取数据,使用.next()按顺序读取数据库中数据,读取结束后以close()关闭连接;分批次遍历资源数据列表,使用simHash算法将资源数据库中的文本计算为simHash指纹签名,存储成String类型,并将指纹签名分成n个片段,其中n为自然数;用上述得到的simHash签名分成的片段作为key,对应的sinHash+堆号作为value值;利用hashMap的键值执行目标文本的查重。该方法克服了传统方法效率低下,内存占用率高的问题,兼顾了效率和准确率的平衡。
Description
技术领域
本发明涉及大数据查重领域,具体涉及一种利用DBCursor光标和hashMap进行海量数据查重的方法。
背景技术
随着大数据技术的发展以及互联网的推广,数据增长迅速,因此如何有效地利用有限的存储空间来对这些数据进行存储成为一个亟待解决的问题。众所周知,在海量数据中有大量的数据是相同或相似的,大量的重复数据会占据数据存储空间。如今各种数据去重技术在解决数据存储过程中重复数据的处理中发展迅猛,然而这些数据去重技术或多或少都会面临效率和准确率的问题。传统的数据去重技术通常都包括三个部分:分块、哈希计算、和重复数据去除。若仅采用基于分块的去重方案,它总是机械的执行已有的去重过程而不考虑是否真实存在相似的重复文件,这样的方式非常低效且耗费巨大,同时在去重过程中会产生大量的元数据,这些元数据的管理和存储也很复杂,会很大程度上限制现有存储系统的可扩展性,特别是在云存储技术的情况下。由此可知,现有的去重技术存在很大的问题,有很多可以改进的空间。
发明内容
有鉴于此,本发明提供一种利用DBCursor光标和hashMap来进行海量数据查重的方法,能够兼顾速度和内存压力,实现高效的大数据查重处理,提高了工作效率。
为了实现上述目的,本发明提供如下技术方案:
第一方面,本发明提供一种对数据进行查重的方法,其特征在于:
对海量资源数据采用DBCursor光标读取数据,使用.next()按顺序读取数据库中数据,读取结束后以close()关闭连接;
分批次遍历资源数据列表,使用simHash算法将资源数据库中的文本计算为simHash指纹签名,存储成String类型,并将指纹签名分成n个片段,其中n为自然数;
用上述得到的simHash签名分成的片段作为key,对应的sinHash+堆号作为value值;
利用hashMap的键值执行目标文本的查重。
根据本发明的具体实施方式,优选的,计算simHash签名的方法为:
对资源数据进行过滤清洗,采用分词的方法提取特征关键词;
对所提取的特征关键词进行权重计算;
对特征关键词进行hash降维形成0和1组成的签名;
进行向量加权计算,得到每个关键词的特征向量;
将上述特征向量合并相加,得到最终向量,然后降维,得到最终的simHash指纹签名。
所述的n个片段为4个片段。
根据本发明的具体实施方式,优选的,所述的hashMap键值查找执行map.get(“key1”)。
根据本发明的具体实施方式,优选的,所述权重以特征关键词出现的频率表示。
根据本发明的具体实施方式,优选的,特征向量的计算方法为:对于特征关键词进行hash降维后形成的0和1组成的签名,如果值为1,则特征向量为hash值乘以权重,如果值为0,则特征向量为hash值乘以(-1)乘以权重。
根据本发明的具体实施方式,优选的,特征向量合并相加后的降维方法为:对于计算得到的特征向量,如果大于0,则为1,否则为0。
所述查重过程中判定所述n个片段的海明距离是否小于设定阈值,如果小于阈值,则判定为重复数据,如果大于阈值,则判定为不重复数据。
对于查重处理后的数据的入库,采用延时入库的方式,设定一定的累积量阈值,当达到该阈值时指定批量入库操作。
与现有技术相比,本发明实施例的有益效果是:
通过DBCursor光标进行海量数据的读取能够大大提高数据读取效率,解决了传统的分量一次读取中速度慢和内存占用率高的缺陷;而采用hashMap键值进行查重操作,结合了数组和链表的优势,能够显著提高查找速度;为了减少数据库连接时间,采用延时存储入库的方式,当查找数据累积量达到阈值时再进行批量入库操作。
附图说明
为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例提供的数据查重方法流程图。
图2是本发明实施例提供的查重逻辑示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述……,但这些……不应限于这些术语。这些术语仅用来将……区分开。例如,在不脱离本发明实施例范围的情况下,第一……也可以被称为第二……,类似地,第二……也可以被称为第一……。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
发明人在研究本发明的过程中,发现现有技术存在问题:基于分块的去重方案,它总是机械的执行已有的去重过程而不考虑是否真实存在相似的重复文件,这样的方式非常低效且耗费巨大,同时在去重过程中会产生大量的元数据,这些元数据的管理和存储也很复杂,会很大程度上限制现有存储系统的可扩展性;同时,在查重过程中涉及到的多次数据读取、数据库的交互会严重影响操作性能,降低了数据处理的效率
下面结合附图详细说明本发明的优选实施例。
实施例1
如图1所示,第一方面,本发明提供一种数据查重处理方法,包括如下步骤:
步骤S100:对海量资源数据采用DBCursor光标读取数据,使用.next()按顺序读取数据库中数据,读取结束后以close()关闭连接;
步骤S102:分批次遍历资源数据列表,使用simHash算法将资源数据库中的文本计算为simHash指纹签名,存储成String类型,并将指纹签名分成n个片段,其中n为自然数;
步骤S104:用上述得到的simHash签名分成的片段作为key,对应的sinHash+堆号作为value值;
S106:利用hashMap的键值执行目标文本的查重,判定所述n个片段的海明距离是否小于设定阈值,如果小于阈值,则判定为重复数据,如果大于阈值,则判定为不重复数据。
根据本发明的具体实施方式,优选的,计算simHash签名的方法为:
对资源数据进行过滤清洗,采用分词的方法提取m个特征关键词;
对所提取的特征关键词进行权重计算,一般采用分词后的词频作为权重值,如果对于某一具体领域,可以根据语料库的定义取值;
对特征关键词进行hash降维形成0和1组成的签名;
进行向量加权计算,得到每个关键词的特征向量,一般意义上,对于特征关键词采用6位simHash签名的每一位二进制数,如果是1,则向量加权计算方式为hash值乘以权重值,如果是0,则向量加权的计算方式为hash值乘以权重值再乘以(-1);
合并所有的特征向量并相加,得到最终向量,然后进行降维处理,得到最终的simHash指纹签名;具体的降维方法为:对于计算得到的特征向量,如果大于0,则为1,否则为0。
所述的n个片段为4个片段。
根据本发明的具体实施方式,优选的,所述的hashMap键值查找执行map.get(“key1”)。
对于查重处理后的数据的入库,采用延时入库的方式,设定一定的累积量阈值,当达到该阈值时指定批量入库操作。
实施例2
如图2所示,第二方面,本发明提供一种数据查重的逻辑流程图,包括:
数据读取,采用DBCursor光标读取资源数据库中数据;
数据查询,通过目标资源数据id查询simHash表中是否存在当前资源信息;如果是,则结束当前数据查重,如果否,则进一步将当前数据进行计算simHash指纹签名操作,并将指纹签名分段;
遍历分段后的每段simHash片段,到资源数据签名列表中匹配目标资源数据的分段simHash指纹:如果不存在匹配项,则进一步查询堆号信息表,将该堆号信息+1存入缓存;如果存在匹配项,则取出所有匹配的资源simHash列表,逐一计算与当前资源数据的海明距离,并判断所得到的海明距离是否小于设定阈值并且小于设定阈值的队列标志是否一致,若是,则将当前目标资源数据的simHash指纹签名、资源ID值、以及堆号+1存入资源数据simHash表中,若否,则逐一计算与当前资源的相似度,选取相似度最高的堆号,将响应信息存入simHash表中。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种对数据进行查重的方法,其特征在于:
采用DBCursor光标读取数据,使用.next()按顺序读取数据库中数据,读取结束后以close()关闭连接;
分批次遍历资源数据列表,使用simHash算法,将资源数据库中的文本计算为simHash指纹签名,存储成String类型,并将指纹签名分成n个片段,其中n为自然数;遍历分段后的每段simHash片段,到资源数据签名列表中匹配目标资源数据的分段simHash指纹:如果不存在匹配项,则进一步查询堆号信息表,将该堆号信息+1存入缓存;如果存在匹配项,则取出所有匹配的资源simHash列表,逐一计算与当前资源数据的海明距离,并判断所得到的海明距离是否小于设定阈值并且小于设定阈值的队列标志是否一致,若是,则将当前目标资源数据的simHash指纹签名、资源ID值、以及堆号+1存入资源数据simHash表中,若否,则逐一计算与当前资源的相似度,选取相似度最高的堆号,将响应信息存入simHash表中,
其中,计算simHash签名的方法为:
对资源数据进行过滤清洗,采用分词的方法提取特征关键词,
对所提取的特征关键词进行权重计算,
对特征关键词进行hash降维形成0和1组成的签名,
进行向量加权计算,得到每个关键词的特征向量,其中,特征向量的计算方法为:对于特征关键词进行hash降维后形成的0和1组成的签名,如果值为1,则特征向量为hash值乘以权重,如果值为0,则特征向量为hash值乘以(-1)乘以权重,
将上述特征向量合并相加,得到最终向量,然后降维,得到最终的simHash指纹签名;
用上述得到的simHash签名分成的片段作为key,对应的sinHash+堆号作为value值;
利用hashMap的键值执行目标文本的查重;
对于查重处理后的数据的入库,采用延时入库的方式,设定一定的累积量阈值,当达到该阈值时指定批量入库操作。
2.根据权利要求1所述的方法,其特征在于,所述的n个片段为4个片段。
3.根据权利要求1所述的方法,其特征在于,所述的hashMap键值查找执行map.get(“key1”)。
4.根据权利要求1所述的方法,其特征在于,所述权重以特征关键词出现的频率表示。
5.根据权利要求1所述的方法,其特征在于,特征向量合并相加后的降维方法为:对于计算得到的特征向量,如果大于0,则为1,否则为0。
6.根据权利要求1所述的方法,其特征在于,所述查重过程中判定所述n个片段的海明距离是否小于设定阈值,如果小于阈值,则判定为重复数据,如果大于阈值,则判定为不重复数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811274839.9A CN109271614B (zh) | 2018-10-30 | 2018-10-30 | 一种数据查重方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811274839.9A CN109271614B (zh) | 2018-10-30 | 2018-10-30 | 一种数据查重方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271614A CN109271614A (zh) | 2019-01-25 |
CN109271614B true CN109271614B (zh) | 2022-12-13 |
Family
ID=65194571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811274839.9A Active CN109271614B (zh) | 2018-10-30 | 2018-10-30 | 一种数据查重方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271614B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111859063B (zh) * | 2019-04-30 | 2023-11-03 | 北京智慧星光信息技术有限公司 | 一种用于监控互联网中转载文章信息的控制方法及装置 |
CN110909019B (zh) * | 2019-11-14 | 2022-04-08 | 湖南赛吉智慧城市建设管理有限公司 | 大数据查重方法、装置、计算机设备及存储介质 |
US20230359551A1 (en) * | 2021-03-19 | 2023-11-09 | Micron Technology, Inc. | Techniques for a fragment cursor |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636319A (zh) * | 2013-11-11 | 2015-05-20 | 腾讯科技(北京)有限公司 | 一种文本去重方法和装置 |
US9594678B1 (en) * | 2015-05-27 | 2017-03-14 | Pure Storage, Inc. | Preventing duplicate entries of identical data in a storage device |
CN106873964A (zh) * | 2016-12-23 | 2017-06-20 | 浙江工业大学 | 一种改进的SimHash代码相似度检测方法 |
CN107169011A (zh) * | 2017-03-31 | 2017-09-15 | 百度在线网络技术(北京)有限公司 | 基于人工智能的网页原创性识别方法、装置及存储介质 |
CN108132929A (zh) * | 2017-12-25 | 2018-06-08 | 上海大学 | 一种海量非结构化文本的相似性计算方法 |
CN108446363A (zh) * | 2018-03-13 | 2018-08-24 | 北京奇安信科技有限公司 | 一种kv引擎的数据处理方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937389B2 (en) * | 2007-11-01 | 2011-05-03 | Ut-Battelle, Llc | Dynamic reduction of dimensions of a document vector in a document search and retrieval system |
US9639461B2 (en) * | 2013-03-15 | 2017-05-02 | Sandisk Technologies Llc | System and method of processing of duplicate data at a data storage device |
-
2018
- 2018-10-30 CN CN201811274839.9A patent/CN109271614B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636319A (zh) * | 2013-11-11 | 2015-05-20 | 腾讯科技(北京)有限公司 | 一种文本去重方法和装置 |
US9594678B1 (en) * | 2015-05-27 | 2017-03-14 | Pure Storage, Inc. | Preventing duplicate entries of identical data in a storage device |
CN106873964A (zh) * | 2016-12-23 | 2017-06-20 | 浙江工业大学 | 一种改进的SimHash代码相似度检测方法 |
CN107169011A (zh) * | 2017-03-31 | 2017-09-15 | 百度在线网络技术(北京)有限公司 | 基于人工智能的网页原创性识别方法、装置及存储介质 |
CN108132929A (zh) * | 2017-12-25 | 2018-06-08 | 上海大学 | 一种海量非结构化文本的相似性计算方法 |
CN108446363A (zh) * | 2018-03-13 | 2018-08-24 | 北京奇安信科技有限公司 | 一种kv引擎的数据处理方法及装置 |
Non-Patent Citations (6)
Title |
---|
java hashmap不能判断重复键值的问题;MI4o;《CSDN》;20170801;全文 * |
一种在去重备份系统中的源端去重算法;韩莹等;《科技通报》;20160131(第01期);全文 * |
基于MapReduce的网络爬虫设计与实现;李晨等;《山东科学》;20150415(第02期);全文 * |
基于Simhash算法的重复数据删除技术的研究与改进;陈春玲等;《南京邮电大学学报(自然科学版)》;20160629(第03期);全文 * |
基于语义指纹的海量文本快速相似检测算法研究;姜雪等;《电脑知识与技术》;20161225(第36期);全文 * |
近似镜像网页去重方法研究;陈剑;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170515(第5期);I139-88 * |
Also Published As
Publication number | Publication date |
---|---|
CN109271614A (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346257B2 (en) | Method and device for deduplicating web page | |
US8073818B2 (en) | Co-location visual pattern mining for near-duplicate image retrieval | |
CN109241274B (zh) | 文本聚类方法及装置 | |
CN109271614B (zh) | 一种数据查重方法 | |
CN105426426B (zh) | 一种基于改进的K-Medoids的KNN文本分类方法 | |
CN109948125B (zh) | 改进的Simhash算法在文本去重中的方法及系统 | |
Dal Bianco et al. | A practical and effective sampling selection strategy for large scale deduplication | |
WO2012165135A1 (ja) | 近似最近傍探索に係るデータベースの登録方法および登録装置 | |
CN110298024B (zh) | 涉密文档的检测方法、装置及存储介质 | |
CN112434167B (zh) | 一种信息识别方法及装置 | |
CN113011194B (zh) | 融合关键词特征和多粒度语义特征的文本相似度计算方法 | |
CN110909540B (zh) | 短信垃圾新词识别方法、装置及电子设备 | |
CN107357895B (zh) | 一种基于词袋模型的文本表示的处理方法 | |
Zhang et al. | Dynamic time warping under product quantization, with applications to time-series data similarity search | |
CN110837555A (zh) | 海量文本去重筛选的方法、设备和存储介质 | |
CN112381038A (zh) | 一种基于图像的文本识别方法、系统和介质 | |
CN109716660B (zh) | 数据压缩装置和方法 | |
US11928107B2 (en) | Similarity-based value-to-column classification | |
JP2013246739A (ja) | 高次元の特徴ベクトル集合で表現されるコンテンツを高精度で検索する検索装置及びプログラム | |
Zhou et al. | A novel locality-sensitive hashing algorithm for similarity searches on large-scale hyperspectral data | |
Waykar et al. | Intent aware optimization for content based lecture video retrieval using Grey Wolf optimizer | |
Sinha et al. | Efficient Cohort Nearest Neighbor (CNN) technique to leverage recommender systems | |
Liu et al. | Imbalanced Nodes Classification for Graph Neural Networks Based on Valuable Sample Mining | |
Górecki et al. | An experimental evaluation of time series classification using various distance measures | |
Sun et al. | DLSH: a distribution-aware LSH scheme for approximate nearest neighbor query in cloud computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |