CN103970722A - 一种文本内容去重的方法 - Google Patents
一种文本内容去重的方法 Download PDFInfo
- Publication number
- CN103970722A CN103970722A CN201410190227.7A CN201410190227A CN103970722A CN 103970722 A CN103970722 A CN 103970722A CN 201410190227 A CN201410190227 A CN 201410190227A CN 103970722 A CN103970722 A CN 103970722A
- Authority
- CN
- China
- Prior art keywords
- text
- library
- cryptographic hash
- paragraph
- bloom
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种文本内容去重的方法,通过文件指纹的对比、正文内容指纹的对比以及文本各段落指纹的对比判断待判重文本是否和文本库中的文本是否相同。本发明计算开销低、判重速率快、响应速度快,可以精确地对排版不同而内容相同文本的判重处理,且可以精确地对少量内容不同的文本的判重处理。本发明使用范围广,如文库上传判重处理,网络爬虫网页处理,论文和试卷抄袭检测等。
Description
技术领域
本发明涉及文本内容相似度比较。
背景技术
随着各种各样信息的不断增长,网络信息共享给人们带来了极大的方便,但同时引入了大量转载信息。目前,文本去重已应用于多种应用场景。在搜索引擎方面,去除重复网页可以提高搜索引擎的搜索效率,减少海量数据存储空间,改善用户的体验;在个人知识产权保护中,利用文本去重方法可以识别文件内容的相似性,用于追踪科技文献的相似性,从而识别论文和专利抄袭现象;在文库中,文档去重既可以减少数据存储空间,也可以减少传输网络流量。
文本去重任务关注的是从文本数据集中找到相同或者高度相似的文本。如何高效地识别相同或相似文本是文本内容去重的挑战之一。目前主要的文本去重方法有以下两种:
(1)基于文件级指纹相同数据判重技术:对每个要处理的文本,使用整个文本的内容计算一个哈希值(MD5,SHA-1),然后在已存的哈希值库中进行检索匹配,如果检测到相同的哈希值,说明该文本已存在。这种方法比较简单,数据处理速度很快,但是数据处理粒度过粗,不能检测到内部排版不同但是内容相同的文本,例如转载后的网页。也不能检测到数据相似的文本,例如被少量修改的文本。
(2)基于相似数据判重技术:通过为每个文档提取一组特征值,从而将文本相似性问题简化为集合相似性问题,然后在集合库中找到相似度最高的集合,并根据设置的阀值来对该文本进行判重处理,当相似度大于阀值,则说明重复,否则说明不重复。该方法简单易实现,但是计算开销很高,而且检测的精度取决于取样技术,容易出现较大的偏差。
现有的文本去重技术各有所长,适合于不同的应用场景。目前还没有一种通用高效的文本去重方法,针对不同的应用场景,进行有效的去重。
发明内容
本发明所要解决的问题:提高现有文本判重的效率。
为解决上述问题,本发明采用的方案如下:
一种文本内容去重的方法,包括以下步骤:
S1:通过文件指纹的对比判断待判重文本是否和文本库中的文本是否相同;
S2:通过对正文内容指纹的对比判断待判重文本是否和文本库中的文本是否相同;
S3:通过对文本各段落指纹的对比判断待判重文本是否和文本库中的文本是否相同;
其中,所述步骤S3包括以下步骤:
S31:采用哈希函数对文本库中各文本各个段落分别计算哈希值,得到各文本的段落哈希值集合 ;其中,hli为文本库中第i个文本的段落哈希值的集合,hli,j为文本库中第i个文本的第j段落的哈希值,si为文本库中第i个文本的段落数;
S32:采用哈希函数对待判重文本中各个段落分别计算哈希值,得到待判重文本的段落哈希值集合;其中hti为待判重文本的第i段落的哈希值,st为待判重文本的段落数;
S33:根据文本库中各文本的段落哈希值集合hli和待判重文本的段落哈希值集合ht计算文本库中各文本与待判重文本的相似度得到相似度集合R={r1,r2,...,rN};其中,N为文本库中文本的数量,ri为文本库第i个文本与待判重文本的相似度,或;
S34:判断相似度集合R={r1,r2,...,rN}中是否存在rm大于预先设定的阈值rthreshold。
进一步,根据本发明的文本内容去重的方法,所述步骤S1包括:
S11:分配m位大小的位数组B并初始化位数组B内的数据为0;
S12:将文本库内的各个文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值b1,b2,...,bK,并置数组B内的第b1,b2,...,bK 位为1;
S13:将待判重的文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值bt1,bt2,...,btK;
S14:判断数组B内的第bt1,bt2,...,btK位是否全为1;如果全为1,则返回文本库存在相同的文本并结束;否则执行步骤S2;
所述布隆函数为函数值均匀分于[1..m]的哈希函数;所述K个布隆函数Bloom1,Bloom2,...,BloomK各不相同。
进一步,根据本发明的文本内容去重的方法,所述步骤S2包括:
S21:采用哈希函数计算文本库内各个文本的文本首段和文本正文的哈希值分别为hdi,hci;得到文本库正文内容的哈希集合hlc={{hd1,hc1},{hd2,hc2},...,{hdN,hcN}};其中,hdi为文本库中第i个文本的文本首段哈希值,hci为文本库中第i个文本的文本正文哈希值,N为文本库中文本的数量;
S22:采用哈希函数计算待判重的文本的文本首段和文本正文的哈希值分别为hdt,hct;
S23:从文本库正文内容的哈希集合hlc查找元素{hdt,hct};如果找到,则返回文本库存在相同的文本并结束;否则执行步骤S3。
进一步,根据本发明的文本内容去重的方法,其特征在于,所述步骤S11还包括构建种子数组BF的步骤;所述种子数组BF包含K个种子元素;所述布隆函数执行运算的过程包括以下步骤:
B1:根据布隆函数的序号k从从种子数组BF中获取BFk ;其中k∈[1..K];
B2:待运算的数据和种子元素BFk合并得到数据Temp;
B3:采用哈希函数对Temp进行运算得到哈希值htemp;
B4:将哈希值htemp映射至区间[1..m]。
一种文本内容去重的方法,包括数据库初始化步骤、构建布隆过滤器步骤和去重检测步骤;
其中,所述数据库初始化步骤包括以下步骤:
S101:文本库中各个文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值bli={bli,1,bli,2,...,bli,K};其中bli,j为文本库中第i个文本的第i个布隆函数值;所述布隆函数为函数值均匀分于[1..m]的哈希函数;所述K个布隆函数Bloom1,Bloom2,...,BloomK各不相同;
S102:采用哈希函数计算文本库内各个文本的文本首段和文本正文的哈希值分别为hdi,hci;其中hdi和hci分别为文本库中第i个文本的文本首段哈希值和文本正文哈希值;
S103:采用哈希函数对文本库中各文本各个段落分别计算哈希值,得到各文本的段落哈希值集合;其中,hli为文本库中第i个文本的段落哈希值的集合,hli,j为文本库中第i个文本的第j段落的哈希值,si为文本库中第i个文本的段落数;
S104:将bli={bli,1,bli,2,...,bli,K}、hdi,hci、hli与对应的文本存入检测数据库;
所述构建布隆过滤器步骤包括以下步骤:
S201:分配m位大小的位数组B并初始化位数组B内的数据为0;
S202:从检测数据库中读取各个文本的布隆函数值bli,1,bli,2,...,bli,K,并置数组B内的第bli,1,bli,2,...,bli,K位为1;
所述去重检测步骤包括以下步骤:
S301:将待判重的文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值bt1,bt2,...,btK;
S302:判断数组B内的第bt1,bt2,...,btK 位是否全为1;如果全为1,则返回文本库存在相同的文本并结束;
S303:采用哈希函数计算待判重的文本的文本首段和文本正文的哈希值分别为hdt,hct;
S304:从检测数据库与hdt,hct相对应的hdi,hci;如果找到,则返回文本库存在相同的文本并结束;
S305:采用哈希函数对待判重文本中各个段落分别计算哈希值,得到待判重文本的段落哈希值集合;其中hti为待判重文本的第i段落的哈希值,st为待判重文本的段落数;
S306:根据检测数据库中的集合hli和待判重文本的段落哈希值集合ht计算文本库中各文本与待判重文本的相似度得到相似度集合R={r1,r2,...,rN};其中,N为文本库中文本的数量,ri为文本库第i个文本与待判重文本的相似度,或;
S307:判断相似度集合R={r1,r2,...,rN}中是否存在rm大于预先设定的阈值rthreshold。
本发明的技术效果如下:
1. 计算开销低,判重速率快,响应速度快。
2. 可以精确地对排版不同而内容相同文本的判重处理。
3. 可以精确地对少量内容不同的文本的判重处理。
4. 使用范围广,如文库上传判重处理,网络爬虫网页处理,论文和试卷抄袭检测等。
附图说明
图1本发明文本内容去重方法的整体流程图。
具体实施方式
下面结合附图对本发明做进一步详细说明。
本发明的文本内容去重方法的输入是待判重文本和文本库。通过待判重文本与文本库内文本的比较,判断文本库内是否存在与待判重文本相似的文本。
如图1所示,本发明的文本内容去重方法主要包括三个步骤:基于文件级指纹检测、基于正文内容指纹检测、基于正文段落指纹检测。
基于文件级指纹检测,即为前述的步骤S1,通过文件指纹的对比判断待判重文本是否和文本库中的文本是否相同。假如文本库中存在文本的文件指纹与待判重文本相同,则结束;否则继续执行基于正文内容指纹检测的步骤。
基于正文内容指纹检测,即为前述的步骤S2,通过对正文内容指纹的对比判断待判重文本是否和文本库中的文本是否相同。假如文本库中存在文本的正文内容指纹与待判重文本相同,则结束;否则继续执行基于正文段落指纹检测的步骤。
基于正文段落指纹检测,即为前述的步骤S3,通过对文本各段落指纹的对比判断待判重文本是否和文本库中的文本是否相同。
需要说明的是,这里的指纹是哈希函数通过对文本运算得到的哈希值。哈希函数又称为杂凑函数、单向散列函数。现有技术下,哈希函数的算法有很多,比如MD5、SHA-1、SHA-2、SHA-3等等。
一、基于文件级指纹检测
文件级指纹即为哈希函数通过对文本文件进行哈希运算后得到的哈希值。简单的方法是为文本库内的各文本计算文件级指纹存入文件级指纹数据库。然后对待判重文本的文件进行哈希函数运算得到待判重文本的文件级指纹。然后从文件级指纹数据库中查找待判重文本的文件级指纹,假如能找到,则认为文本库内存在与待判重文本相同的文本。
为加快检测速度,本发明在文件级指纹检测步骤中采用了布隆过滤器(Bloom Filter)。具体的步骤如下:
S11:分配m位大小的位数组B并初始化位数组B内的数据为0。
S12:将文本库内的各个文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值b1,b2,...,bK,并置位数组B内的第b1,b2,...,bK 位为1;
S13:将待判重的文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值bt1,bt2,...,btK;
S14:判断位数组B内的第bt1,bt2,...,btK位是否全为1;如果全为1,则返回文本库存在相同的文本并结束;否则执行步骤S2。
需要说明的是,布隆函数为函数值均匀分于[1..m]的哈希函数。 K个布隆函数Bloom1,Bloom2,...,BloomK各不相同。
比如,文本库中有三个文本文件分别为:TextA,TextB,TextC。步骤S11中,位数组B为32位大小的位数组,即m=32。布隆函数有四个,分别为:Bloom1,Bloom2,Bloom3,Bloom4。这四个布隆函数的函数值在1~32范围内。四个布隆函数对三个文本文件TextA、TextB、TextC计算分别得到四个函数值,总共12个函数值,得到结果如下:
Bloom1 | Bloom2 | Bloom3 | Bloom4 | |
TextA | 1 | 29 | 6 | 17 |
TextB | 11 | 2 | 31 | 4 |
TextC | 23 | 11 | 9 | 13 |
根据上述12个函数值将位数组B中相应的位置1,即:
B[1]=1 ,B[29]=1,B[6]=1,B[17]=1;
B[11]=1 ,B[2]=1,B[31]=1,B[4]=1;
B[23]=1 ,B[11]=1,B[9]=1,B[13]=1。
对于待判重文本TextX,采用四个布隆函数运算后得到四个函数值分别为:a,b,c,d。步骤S14中,只需要判断B[a]、B[b]、B[c] 、B[d]是否全为1。假如,B[a]、B[b]、B[c] 、B[d]都为1,则文本库内存在与待判重文本相同的文本,返回结束。
需要说明的是,这里的位数组B是以位为单位的数组。上述32位大小的位数组只需要4字节。m的取值大小与布隆函数的个数K以及文本库中文本数量N相关:m≥2×K×N。
布隆函数的函数值位于区间[1..m]。而一般哈希函数,都有较大的函数值。比如MD5的函数值为128位,SHA-1的函数值为160位。因此本发明的布隆函数为特殊的哈希函数。为此,本发明的布隆函数采用了如下步骤:
B1:根据布隆函数的序号k从种子数组BF中获取种子元素BFk ;其中k∈[1..K];
B2:待运算的数据和种子元素BFk合并得到数据Temp;
B3:采用哈希函数对Temp进行运算得到哈希值htemp;
B4:将哈希值htemp映射至区间[1..m]。
这里,种子数组BF包含K个种子元素,K个种子元素各不相同,为预先构建。具体来说,可以在前述的步骤S11中增加构建种子数组BF的步骤。种子数组BF中的种子元素可以通过随机方法生成,也可以预先固定设置的数据。
步骤B4中的“将哈希值htemp映射至区间[1..m]”,简单地实施方式为:m取值为2n,然后从哈希值htemp中选取前n位或后n位作为最终的函数值。具体举例:m为216,步骤B3中的哈希函数采用MD5,得到的哈希值htemp为128位的整型数。从128位的整型数htemp取最后16位,即可得到最终的布隆函数值。该布隆函数值的取值范围为[1..216]。
二、基于正文内容指纹检测
需要说明的是文本库中的文本以及待判重的文本一般为复合文本,包含图片、表格、文字等内容。因此前述基于文件级指纹的检测是对图片、表格、文字等内容组合而成的复合文本的判重检测。而本步骤则是对文字内容的指纹检测,因此需要重复合文本中提取文字内容。文字内容可以使用复合文档文本信息抽取工具(例如Tika)完成。正文内容指纹即为哈希函数通过对文本的文字内容进行哈希运算后得到的哈希值。简单的方法是为文本库内的各文本的文字内容计算正文内容指纹存入正文内容指纹数据库。然后对待判重文本的文件的文字内容进行哈希函数运算得到待判重文本的正文内容指纹。然后从正文内容指纹数据库中查找待判重文本的正文内容指纹,假如能找到,则认为文本库内存在与待判重文本相同的文本。
本发明,正文内容指纹分成两部分:文本首段和文本正文。文本首段是文字内容中的第一段落的文本。文本正文是文字内容中除了第一段落之外的文本。具体的步骤如下:
S21:采用哈希函数计算文本库内各个文本的文本首段和文本正文的哈希值分别为hdi,hci;得到文本库正文内容的哈希集合hlc={{hd1,hc1},{hd2,hc2},...,{hdN,hcN}};其中,hdi为文本库中第i个文本的文本首段哈希值,hci为文本库中第i个文本的文本正文哈希值,N为文本库中文本的数量;
S22:采用哈希函数计算待判重的文本的文本首段和文本正文的哈希值分别为hdt,hct;
S23:从文本库正文内容的哈希集合hlc查找元素{hdt,hct};如果找到,则返回文本库存在相同的文本并结束;否则执行步骤S3。
三、基于正文段落指纹检测
本步骤通过对文本各段落指纹的对比判断待判重文本是否和文本库中的文本是否相同,即将待判重文本拆分成各个文本段落,计算各个文本段落的指纹,然后将各文本段落的指纹与文本库内的各个文本的各个段落比较。具体步骤如下:
S31:采用哈希函数对文本库中各文本各个段落分别计算哈希值,得到各文本的段落哈希值集合;其中,hli为文本库中第i个文本的段落哈希值的集合,hli,j为文本库中第i个文本的第j段落的哈希值,si为文本库中第i个文本的段落数;
S32:采用哈希函数对待判重文本中各个段落分别计算哈希值,得到待判重文本的段落哈希值集合;其中hti为待判重文本的第i段落的哈希值,st为待判重文本的段落数;
S33:根据文本库中各文本的段落哈希值集合hli和待判重文本的段落哈希值集合ht计算文本库中各文本与待判重文本的相似度得到相似度集合R={r1,r2,...,rN};其中,N为文本库中文本的数量,ri为文本库第i个文本与待判重文本的相似度,或;
S34:判断相似度集合R={r1,r2,...,rN}中是否存在rm大于预先设定的阈值rthreshold。
现以《两小儿辩日》去重检测为例。《两小儿辩日》分成七个段落,分别为:
第一段 孔子东游,见两小儿辩斗,问其故。
第二段 一儿曰:“我以日始出时去人近,而日中时远也。”
第三段 一儿以日初出远,而日中时近也。
第四段 一儿曰:“日初出大如车盖,及日中则如盘盂,此不为远者小而近者大乎?”
第五段 一儿曰:“日初出沧沧凉凉,及其日中如探汤,此不为近者热而远者凉乎?”
第六段 孔子不能决也。
第七段 两小儿笑曰:“孰为汝多知乎?”
第一至第七段的段落指纹分别为A、B、C、D、E、F、G。某一待判重文本包含八个段落,八个段落指纹分别为:A、B、C、D、E、X、F、G。=7/8=0.875。
四、完整的过程
文本库通过数据库实现。文本库内的文本相对固定,而哈希函数也相对固定。因此前述的各种指纹,比如布隆函数值、文本的正文内容指纹以及段落指纹等,均可以事先存入数据库内。由此当对某个文档进行判重检测时,不需要重复计算各种指纹。因此,本发明在具体实施可分为三个步骤:数据库初始化步骤、构建布隆过滤器步骤和去重检测步骤。其中,数据库初始化步骤包括以下步骤:
S101:文本库中各个文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值bli={bli,1,bli,2,...,bli,K};其中bli,j为文本库中第i个文本的第i个布隆函数值;所述布隆函数为函数值均匀分于[1..m]的哈希函数;所述K个布隆函数Bloom1,Bloom2,...,BloomK各不相同;
S102:采用哈希函数计算文本库内各个文本的文本首段和文本正文的哈希值分别为hdi,hci;其中hdi和hci分别为文本库中第i个文本的文本首段哈希值和文本正文哈希值;
S103:采用哈希函数对文本库中各文本各个段落分别计算哈希值,得到各文本的段落哈希值集合;其中,hli为文本库中第i个文本的段落哈希值的集合,hli,j为文本库中第i个文本的第j段落的哈希值,si为文本库中第i个文本的段落数;
S104:将bli={bli,1,bli,2,...,bli,K}、hdi,hci、hli与对应的文本存入检测数据库。
上述步骤S101、S102、S103、S104的目的,也即数据库初始化步骤,是将在检测过程中需要使用到的各种指纹存入检测数据库。检测数据库可以是独立的数据库,也可以是文本库的一部分。步骤S101、S102、S103分别与前述的步骤S12、S21、S31相对应。
构建布隆过滤器步骤包括以下步骤:
S201:分配m位大小的位数组B并初始化位数组B内的数据为0;
S202:从检测数据库中读取各个文本的布隆函数值bli,1,bli,2,...,bli,K,并置数组B内的第bli,1,bli,2,...,bli,K位为1;
上述步骤中S201与前述步骤S11对应。步骤S202对应于前述步骤的S12,也即是步骤S12拆分成了两个步骤分别为步骤S101和步骤S202。
去重检测步骤包括以下步骤:
S301:将待判重的文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值bt1,bt2,...,btK;
S302:判断数组B内的第bt1,bt2,...,btK 位是否全为1;如果全为1,则返回文本库存在相同的文本并结束;
S303:采用哈希函数计算待判重的文本的文本首段和文本正文的哈希值分别为hdt,hct;
S304:从检测数据库与hdt,hct相对应的hdi,hci;如果找到,则返回文本库存在相同的文本并结束;
S305:采用哈希函数对待判重文本中各个段落分别计算哈希值,得到待判重文本的段落哈希值集合;其中hti为待判重文本的第i段落的哈希值,st为待判重文本的段落数;
S306:根据检测数据库中的集合hli和待判重文本的段落哈希值集合ht计算文本库中各文本与待判重文本的相似度得到相似度集合R={r1,r2,...,rN};其中,N为文本库中文本的数量,ri为文本库第i个文本与待判重文本的相似度,或;
S307:判断相似度集合R={r1,r2,...,rN}中是否存在rm大于预先设定的阈值rthreshold。
上述步骤中,步骤S301和S302分别等同于前述步骤S13和S14。步骤S303和S304分别等同于前述步骤S22和S23。步骤S305、S306和S307分别等同于前述步骤S32、S33和S34。
需要说明的是,数据库初始化步骤和构建布隆过滤器步骤均为初始化的步骤,当需要对待判重文本去重检测时,只需要执行去重检测步骤,因此本发明判重检测速度快。
Claims (6)
1.一种文本内容去重的方法,其特征在于,包括以下步骤:
S1:通过文件指纹的对比判断待判重文本是否和文本库中的文本是否相同;
S2:通过对正文内容指纹的对比判断待判重文本是否和文本库中的文本是否相同;
S3:通过对文本各段落指纹的对比判断待判重文本是否和文本库中的文本是否相同;
其中,所述步骤S3包括以下步骤:
S31:采用哈希函数对文本库中各文本各个段落分别计算哈希值,得到各文本的段落哈希值集合 ;其中,hli为文本库中第i个文本的段落哈希值的集合,hli,j为文本库中第i个文本的第j段落的哈希值,si为文本库中第i个文本的段落数;
S32:采用哈希函数对待判重文本中各个段落分别计算哈希值,得到待判重文本的段落哈希值集合;其中hti为待判重文本的第i段落的哈希值,st为待判重文本的段落数;
S33:根据文本库中各文本的段落哈希值集合hli和待判重文本的段落哈希值集合ht计算文本库中各文本与待判重文本的相似度得到相似度集合R={r1,r2,...,rN};其中,N为文本库中文本的数量,ri为文本库第i个文本与待判重文本的相似度,或;
S34:判断相似度集合R={r1,r2,...,rN}中是否存在rm大于预先设定的阈值rthreshold。
2.如权利要求1所述的文本内容去重的方法,其特征在于,所述步骤S1包括:
S11:分配m位大小的位数组B并初始化位数组B内的数据为0;
S12:将文本库内的各个文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值b1,b2,...,bK,并置数组B内的第b1,b2,...,bK 位为1;
S13:将待判重的文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值bt1,bt2,...,btK;
S14:判断数组B内的第bt1,bt2,...,btK位是否全为1;如果全为1,则返回文本库存在相同的文本并结束;否则执行步骤S2;
所述布隆函数为函数值均匀分于[1..m]的哈希函数;所述K个布隆函数Bloom1,Bloom2,...,BloomK各不相同。
3.如权利要求1所述的文本内容去重的方法,其特征在于,所述步骤S2包括:
S21:采用哈希函数计算文本库内各个文本的文本首段和文本正文的哈希值分别为hdi,hci;得到文本库正文内容的哈希集合hlc={{hd1,hc1},{hd2,hc2},...,{hdN,hcN}};其中,hdi为文本库中第i个文本的文本首段哈希值,hci为文本库中第i个文本的文本正文哈希值,N为文本库中文本的数量;
S22:采用哈希函数计算待判重的文本的文本首段和文本正文的哈希值分别为hdt,hct;
S23:从文本库正文内容的哈希集合hlc查找元素{hdt,hct};如果找到,则返回文本库存在相同的文本并结束;否则执行步骤S3。
4.如权利要求2所述的文本内容去重的方法,其特征在于,所述步骤S11还包括构建种子数组BF的步骤;所述种子数组BF包含K个种子元素;所述布隆函数执行运算的过程包括以下步骤:
B1:根据布隆函数的序号k从从种子数组BF中获取BFk ;其中k∈[1..K];
B2:待运算的数据和种子元素BFk合并得到数据Temp;
B3:采用哈希函数对Temp进行运算得到哈希值htemp;
B4:将哈希值htemp映射至区间[1..m]。
5.一种文本内容去重的方法,其特征在于,包括数据库初始化步骤、构建布隆过滤器步骤和去重检测步骤;
其中,所述数据库初始化步骤包括以下步骤:
S101:文本库中各个文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值bli={bli,1,bli,2,...,bli,K};其中bli,j为文本库中第i个文本的第i个布隆函数值;所述布隆函数为函数值均匀分于[1..m]的哈希函数;所述K个布隆函数Bloom1,Bloom2,...,BloomK各不相同;
S102:采用哈希函数计算文本库内各个文本的文本首段和文本正文的哈希值分别为hdi,hci;其中hdi和hci分别为文本库中第i个文本的文本首段哈希值和文本正文哈希值;
S103:采用哈希函数对文本库中各文本各个段落分别计算哈希值,得到各文本的段落哈希值集合;其中,hli为文本库中第i个文本的段落哈希值的集合,hli,j为文本库中第i个文本的第j段落的哈希值,si为文本库中第i个文本的段落数;
S104:将bli={bli,1,bli,2,...,bli,K}、hdi,hci、hli与对应的文本存入检测数据库;
所述构建布隆过滤器步骤包括以下步骤:
S201:分配m位大小的位数组B并初始化位数组B内的数据为0;
S202:从检测数据库中读取各个文本的布隆函数值bli,1,bli,2,...,bli,K,并置数组B内的第bli,1,bli,2,...,bli,K位为1;
所述去重检测步骤包括以下步骤:
S301:将待判重的文本分别用K个布隆函数Bloom1,Bloom2,...,BloomK进行运算得到函数值bt1,bt2,...,btK;
S302:判断数组B内的第bt1,bt2,...,btK 位是否全为1;如果全为1,则返回文本库存在相同的文本并结束;
S303:采用哈希函数计算待判重的文本的文本首段和文本正文的哈希值分别为hdt,hct;
S304:从检测数据库与hdt,hct相对应的hdi,hci;如果找到,则返回文本库存在相同的文本并结束;
S305:采用哈希函数对待判重文本中各个段落分别计算哈希值,得到待判重文本的段落哈希值集合;其中hti为待判重文本的第i段落的哈希值,st为待判重文本的段落数;
S306:根据检测数据库中的集合hli和待判重文本的段落哈希值集合ht计算文本库中各文本与待判重文本的相似度得到相似度集合R={r1,r2,...,rN};其中,N为文本库中文本的数量,ri为文本库第i个文本与待判重文本的相似度,或;
S307:判断相似度集合R={r1,r2,...,rN}中是否存在rm大于预先设定的阈值rthreshold。
6.如权利要求5所述的文本内容去重的方法,其特征在于,所述步骤S11还包括构建种子数组BF的步骤;所述种子数组BF包含K个种子元素;所述布隆函数执行运算的过程包括以下步骤:
B1:根据布隆函数的序号k从从种子数组BF中获取BFk ;其中k∈[1..K];
B2:待运算的数据和种子元素BFk合并得到数据Temp;
B3:采用哈希函数对Temp进行运算得到哈希值htemp;
B4:将哈希值htemp映射至区间[1..m]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410190227.7A CN103970722B (zh) | 2014-05-07 | 2014-05-07 | 一种文本内容去重的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410190227.7A CN103970722B (zh) | 2014-05-07 | 2014-05-07 | 一种文本内容去重的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103970722A true CN103970722A (zh) | 2014-08-06 |
CN103970722B CN103970722B (zh) | 2017-04-05 |
Family
ID=51240240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410190227.7A Active CN103970722B (zh) | 2014-05-07 | 2014-05-07 | 一种文本内容去重的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103970722B (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104408182A (zh) * | 2014-12-15 | 2015-03-11 | 北京国双科技有限公司 | 分布式系统上网络爬虫数据的处理方法和装置 |
CN105373605A (zh) * | 2015-11-11 | 2016-03-02 | 中国农业大学 | 数据文件批量存储方法及系统 |
CN105653984A (zh) * | 2015-12-25 | 2016-06-08 | 北京奇虎科技有限公司 | 文件指纹校验方法及装置 |
CN105701206A (zh) * | 2016-01-13 | 2016-06-22 | 湖南通远网络科技有限公司 | 一种基于采样的文献检测方法及系统 |
CN105843926A (zh) * | 2016-03-28 | 2016-08-10 | 北京掌沃云视媒文化传媒有限公司 | 现实信息索引的建立方法和基于云平台的全文检索系统 |
CN105956070A (zh) * | 2016-04-28 | 2016-09-21 | 优品财富管理有限公司 | 一种整合重复记录的方法及系统 |
CN106294350A (zh) * | 2015-05-13 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种文本聚合方法及装置 |
CN106547780A (zh) * | 2015-09-21 | 2017-03-29 | 北京国双科技有限公司 | 文章转载量的统计方法及装置 |
CN106919626A (zh) * | 2015-12-28 | 2017-07-04 | 北京国双科技有限公司 | 数据处理方法和装置以及数据查询方法和装置 |
CN107025218A (zh) * | 2017-04-07 | 2017-08-08 | 腾讯科技(深圳)有限公司 | 一种文本去重方法和装置 |
CN107783904A (zh) * | 2017-09-27 | 2018-03-09 | 武汉斗鱼网络科技有限公司 | 单元测试桩去重方法、装置、计算机可读存储介质及设备 |
CN107870976A (zh) * | 2017-09-25 | 2018-04-03 | 平安科技(深圳)有限公司 | 简历识别装置、方法及计算机可读存储介质 |
CN108197120A (zh) * | 2017-12-28 | 2018-06-22 | 中译语通科技(青岛)有限公司 | 一种基于双语平行语料库的相似语句去重系统 |
CN108345586A (zh) * | 2018-02-09 | 2018-07-31 | 重庆誉存大数据科技有限公司 | 一种文本去重方法及系统 |
CN108733664A (zh) * | 2017-04-13 | 2018-11-02 | 腾讯科技(深圳)有限公司 | 一种文件归类方法及装置 |
CN109241505A (zh) * | 2018-10-09 | 2019-01-18 | 北京奔影网络科技有限公司 | 文本去重方法及装置 |
CN109710729A (zh) * | 2018-12-14 | 2019-05-03 | 麒麟合盛网络技术股份有限公司 | 一种文本数据的采集方法及装置 |
CN110019642A (zh) * | 2017-08-06 | 2019-07-16 | 北京国双科技有限公司 | 一种相似文本检测方法及装置 |
CN110442803A (zh) * | 2019-08-09 | 2019-11-12 | 网易传媒科技(北京)有限公司 | 由计算设备执行的数据处理方法、装置、介质和计算设备 |
CN111191436A (zh) * | 2020-01-03 | 2020-05-22 | 北大方正集团有限公司 | 版式文档的比对方法、装置、设备及计算机存储介质 |
CN111324750A (zh) * | 2020-02-29 | 2020-06-23 | 上海爱数信息技术股份有限公司 | 一种大规模文本相似度计算及文本查重方法 |
WO2021109850A1 (zh) * | 2019-12-03 | 2021-06-10 | 世强先进(深圳)科技股份有限公司 | 一种pdf文件去重存储方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156689A (zh) * | 2011-03-31 | 2011-08-17 | 百度在线网络技术(北京)有限公司 | 文档检测方法及装置 |
CN102323934A (zh) * | 2011-08-31 | 2012-01-18 | 深圳市彩讯科技有限公司 | 基于滑动窗口的邮件指纹提取方法及邮件相似判断方法 |
US20120203717A1 (en) * | 2011-02-04 | 2012-08-09 | Microsoft Corporation | Learning Similarity Function for Rare Queries |
-
2014
- 2014-05-07 CN CN201410190227.7A patent/CN103970722B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120203717A1 (en) * | 2011-02-04 | 2012-08-09 | Microsoft Corporation | Learning Similarity Function for Rare Queries |
CN102156689A (zh) * | 2011-03-31 | 2011-08-17 | 百度在线网络技术(北京)有限公司 | 文档检测方法及装置 |
CN102323934A (zh) * | 2011-08-31 | 2012-01-18 | 深圳市彩讯科技有限公司 | 基于滑动窗口的邮件指纹提取方法及邮件相似判断方法 |
Non-Patent Citations (2)
Title |
---|
栾艳: "基于段落指纹的大规模近似网页检测算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
高翔 等: "中文短文本去重方法研究", 《计算机工程与应用》 * |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104408182A (zh) * | 2014-12-15 | 2015-03-11 | 北京国双科技有限公司 | 分布式系统上网络爬虫数据的处理方法和装置 |
CN106294350B (zh) * | 2015-05-13 | 2019-10-11 | 阿里巴巴集团控股有限公司 | 一种文本聚合方法及装置 |
CN106294350A (zh) * | 2015-05-13 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种文本聚合方法及装置 |
CN106547780A (zh) * | 2015-09-21 | 2017-03-29 | 北京国双科技有限公司 | 文章转载量的统计方法及装置 |
CN105373605A (zh) * | 2015-11-11 | 2016-03-02 | 中国农业大学 | 数据文件批量存储方法及系统 |
CN105653984A (zh) * | 2015-12-25 | 2016-06-08 | 北京奇虎科技有限公司 | 文件指纹校验方法及装置 |
CN105653984B (zh) * | 2015-12-25 | 2019-04-19 | 北京奇虎科技有限公司 | 文件指纹校验方法及装置 |
CN106919626B (zh) * | 2015-12-28 | 2020-05-08 | 北京国双科技有限公司 | 数据处理方法和装置以及数据查询方法和装置 |
CN106919626A (zh) * | 2015-12-28 | 2017-07-04 | 北京国双科技有限公司 | 数据处理方法和装置以及数据查询方法和装置 |
CN105701206B (zh) * | 2016-01-13 | 2018-10-09 | 湖南通远网络科技有限公司 | 一种基于采样的文献检测方法及系统 |
CN105701206A (zh) * | 2016-01-13 | 2016-06-22 | 湖南通远网络科技有限公司 | 一种基于采样的文献检测方法及系统 |
CN105843926B (zh) * | 2016-03-28 | 2019-03-12 | 北京掌沃云视媒文化传媒有限公司 | 现实信息索引的建立方法和基于云平台的全文检索系统 |
CN105843926A (zh) * | 2016-03-28 | 2016-08-10 | 北京掌沃云视媒文化传媒有限公司 | 现实信息索引的建立方法和基于云平台的全文检索系统 |
CN105956070A (zh) * | 2016-04-28 | 2016-09-21 | 优品财富管理有限公司 | 一种整合重复记录的方法及系统 |
CN107025218A (zh) * | 2017-04-07 | 2017-08-08 | 腾讯科技(深圳)有限公司 | 一种文本去重方法和装置 |
US11379422B2 (en) | 2017-04-07 | 2022-07-05 | Tencent Technology (Shenzhen) Company Limited | Text deduplication method and apparatus, and storage medium |
CN107025218B (zh) * | 2017-04-07 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 一种文本去重方法和装置 |
WO2018184588A1 (zh) * | 2017-04-07 | 2018-10-11 | 腾讯科技(深圳)有限公司 | 一种文本去重方法、装置和存储介质 |
CN108733664A (zh) * | 2017-04-13 | 2018-11-02 | 腾讯科技(深圳)有限公司 | 一种文件归类方法及装置 |
CN108733664B (zh) * | 2017-04-13 | 2022-05-03 | 腾讯科技(深圳)有限公司 | 一种文件归类方法及装置 |
CN110019642A (zh) * | 2017-08-06 | 2019-07-16 | 北京国双科技有限公司 | 一种相似文本检测方法及装置 |
WO2019056793A1 (zh) * | 2017-09-25 | 2019-03-28 | 平安科技(深圳)有限公司 | 简历识别装置、方法及计算机可读存储介质 |
CN107870976A (zh) * | 2017-09-25 | 2018-04-03 | 平安科技(深圳)有限公司 | 简历识别装置、方法及计算机可读存储介质 |
CN107783904A (zh) * | 2017-09-27 | 2018-03-09 | 武汉斗鱼网络科技有限公司 | 单元测试桩去重方法、装置、计算机可读存储介质及设备 |
CN107783904B (zh) * | 2017-09-27 | 2021-03-16 | 武汉斗鱼网络科技有限公司 | 单元测试桩去重方法、装置、计算机可读存储介质及设备 |
CN108197120A (zh) * | 2017-12-28 | 2018-06-22 | 中译语通科技(青岛)有限公司 | 一种基于双语平行语料库的相似语句去重系统 |
CN108345586A (zh) * | 2018-02-09 | 2018-07-31 | 重庆誉存大数据科技有限公司 | 一种文本去重方法及系统 |
CN108345586B (zh) * | 2018-02-09 | 2021-04-02 | 重庆电信系统集成有限公司 | 一种文本去重方法及系统 |
CN109241505A (zh) * | 2018-10-09 | 2019-01-18 | 北京奔影网络科技有限公司 | 文本去重方法及装置 |
CN109710729A (zh) * | 2018-12-14 | 2019-05-03 | 麒麟合盛网络技术股份有限公司 | 一种文本数据的采集方法及装置 |
CN110442803A (zh) * | 2019-08-09 | 2019-11-12 | 网易传媒科技(北京)有限公司 | 由计算设备执行的数据处理方法、装置、介质和计算设备 |
WO2021109850A1 (zh) * | 2019-12-03 | 2021-06-10 | 世强先进(深圳)科技股份有限公司 | 一种pdf文件去重存储方法及系统 |
CN111191436A (zh) * | 2020-01-03 | 2020-05-22 | 北大方正集团有限公司 | 版式文档的比对方法、装置、设备及计算机存储介质 |
CN111324750B (zh) * | 2020-02-29 | 2021-07-13 | 上海爱数信息技术股份有限公司 | 一种大规模文本相似度计算及文本查重方法 |
CN111324750A (zh) * | 2020-02-29 | 2020-06-23 | 上海爱数信息技术股份有限公司 | 一种大规模文本相似度计算及文本查重方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103970722B (zh) | 2017-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103970722A (zh) | 一种文本内容去重的方法 | |
Liang et al. | Dynamic clustering of streaming short documents | |
CN105630847B (zh) | 数据存储方法、数据查询方法、装置及系统 | |
CN108595517A (zh) | 一种大规模文档相似性检测方法 | |
Oh et al. | Fast and robust parallel SGD matrix factorization | |
JP2011028749A5 (zh) | ||
WO2015027425A1 (zh) | 存储数据的方法和装置 | |
CN103699525A (zh) | 一种基于文本多维度特征自动生成摘要的方法和装置 | |
Li et al. | Bursty event detection from microblog: a distributed and incremental approach | |
Ho et al. | A parallel approximate string matching under Levenshtein distance on graphics processing units using warp-shuffle operations | |
CN104050299A (zh) | 一种论文查重的方法 | |
CN107967364A (zh) | 网络文章传播力评估方法及装置 | |
RU2016105426A (ru) | Постоянно читаемый компьютером носитель, система и способ для обнаружения сомнительного контента в социальной сети. | |
Kim et al. | Two applications of clustering techniques to twitter: Community detection and issue extraction | |
Liroz-Gistau et al. | Dynamic workload-based partitioning for large-scale databases | |
Lin | Large-scale network embedding in apache spark | |
US10210281B2 (en) | Method and system for obtaining knowledge point implicit relationship | |
CN106886613A (zh) | 一种并行化的文本聚类方法 | |
CN105468618A (zh) | 一种网络爬虫论文查重法 | |
CN103257961B (zh) | 书目消重的方法、装置及系统 | |
Yigit-Sert et al. | Towards detecting media bias by utilizing user comments | |
CN104166712B (zh) | 科技文献检索方法及系统 | |
CN103902687B (zh) | 一种搜索结果的生成方法及装置 | |
Afrati et al. | Matching bounds for the all-pairs MapReduce problem | |
Lin et al. | Learning to rank with groups |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 211100, No. 100, general road, Jiangning Economic Development Zone, Jiangsu, Nanjing Patentee after: Jiangsu Wisedu Information Co., Ltd. Address before: 211100, No. 100, general road, Jiangning Economic Development Zone, Jiangsu, Nanjing Patentee before: Jiangsu Wisedu Information Technology Co., Ltd. |