CN114386384B - 一种大规模长文本数据的近似重复检测方法、系统及终端 - Google Patents
一种大规模长文本数据的近似重复检测方法、系统及终端 Download PDFInfo
- Publication number
- CN114386384B CN114386384B CN202111482009.7A CN202111482009A CN114386384B CN 114386384 B CN114386384 B CN 114386384B CN 202111482009 A CN202111482009 A CN 202111482009A CN 114386384 B CN114386384 B CN 114386384B
- Authority
- CN
- China
- Prior art keywords
- document
- processing
- word
- processed
- original input
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 63
- 238000000034 method Methods 0.000 claims abstract description 64
- 238000005192 partition Methods 0.000 claims abstract description 57
- 238000012795 verification Methods 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 15
- 238000012545 processing Methods 0.000 claims description 229
- 238000004364 calculation method Methods 0.000 claims description 38
- 238000006243 chemical reaction Methods 0.000 claims description 33
- 238000004140 cleaning Methods 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 3
- 230000002688 persistence Effects 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 19
- 238000004891 communication Methods 0.000 abstract description 11
- 238000013138 pruning Methods 0.000 abstract description 6
- 238000012549 training Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000032683 aging Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种大规模长文本数据的近似重复检测方法、系统及终端,通过将传统数据库中的倒排索引结构引入到分布式计算框架中,实现了文档相似检测的分布式分区,并且通过倒排表分区方式实现Simhash技术的分布式计算,为其带来可扩展性,最后通过在计算过程中嵌入传统数据库领域的前缀剪枝技术,来进一步减少分布式重复检测过程中倒排分区的通讯读写代价和simhash计算的验证代价。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种大规模长文本数据的近似重复检测方法、系统、终端及计算机可读存储介质。
背景技术
大规模预训练模型需要大量的高质量文本语料数据作为训练样本,这些文本语料大都是自爬取或收集于各种不同的数据源,这些数据中存在着大量的冗余信息,即便是同样的内容,在不同数据源之间和统一数据源的不同板块,可能因为编辑问题、表达方式问题、或简单转载修改有所不同。例如,不同媒体报道的同一条新闻,可能仅表达方式、抬头或标点有所差异,但实际内容大多相同,这样的相似情况相比完全重复更为普遍,且难以通过直接的相等比较方法进行判定。训练样本需要获得高质量的数据就需要消除这些冗余信息以避免模型意外地过度学习相似度比较高的内容,首先就得识别出这些相似文档。
近似检测的文档之间并不是完全相等的,朴素的方式需要两两比较所有文档,计算量相当于笛卡尔积,且长文档的两两字符串比较本身也比较耗时,计算量巨大。现在行业内对于近似重复检测的方法主要是基于近似阈值的相似连接技术和局部敏感哈希技术,其中相似连接技术是通过给定一个相似度量距离定义和一个近似阈值对任意两个文档进行近似判定,度量距离在阈值范围内就判定两个文档相似,如Jaccard距离(杰卡德距离,是用来衡量两个集合差异性的一种指标);局部敏感哈希技术通过将原始文档进行带有文档特征的哈希编码技术处理,压缩文档到低维空间进行模糊的相似度量。这些方法大都是单机的处理方法。
对于大规模数据的处理难以在预期的时间得到结果,例如Simhash技术也仅用于MapReduce的批量查询,没有很好的应对大规模数据集的内部重复判定检测。现有的分布式主流处理方法是Spark的MinHashLsh方法,这种方法通过将原始文档集合使用多个哈希函数进行最小哈希编码降低文档维度,并根据编码值进行带有哈希分区的连接,在损失少量精度的情况下提高了相似连接的效率,但由于哈希函数的随机性以及文档中高频词的存在,导致部分分区的负载过高,最后经常会有个别计算任务严重拖尾,实测在中文文本数据的时候尤其明显,运行效率很低,约160MB的数据需要运行10个小时以上,并且拖尾任务无法通过扩展计算资源或增加并行度得到明显改善,无法满足对于性能的要求。
随着大模型对数据量的增长需求,需要清洗的数据规模也越来越大,传统的单机方式已难以在可控的时效内完成处理。
因此,现有技术还有待于改进和发展。
发明内容
本发明的主要目的在于提供一种大规模长文本数据的近似重复检测方法、系统、终端及计算机可读存储介质,旨在解决现有技术中传统的单机方式已难以在可控的时效内完成大规模数据清洗的问题。
为实现上述目的,本发明提供一种大规模长文本数据的近似重复检测方法,所述大规模长文本数据的近似重复检测方法包括如下步骤:
读取语料数据作为原始输入文档,对所述原始输入文档进行处理后得到包括文档全局编号的第一处理文档,对所述原始输入文档分割成单词集合后得到第二处理文档,将所述第二处理文档进行转换处理后结合所述第一处理文档中文档的全局编号得到第三处理文档;
将所述第三处理文档进行展开单词集合处理得到第四处理文档,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和后得到第五处理文档,汇聚各分区过滤后的词表形成第六处理文档;
将所述第三处理文档执行转换处理,根据单词集合进行指纹计算,并根据词频和文档的总数得到IDF权重,计算得到每个文档对应指纹,构成第七处理文档;
将所述第七处理文档执行转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档,遍历前缀单词数组中的每个单词,按照预设方式进行操作展开形成第九处理文档;
将所述第九处理文档按照单次编码分组,形成第十处理文档,对所述第十处理文档中的每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对,得到真实的重复文档检测结果。
所述的大规模长文本数据的近似重复检测方法,其中,所述读取语料数据作为原始输入文档,对所述原始输入文档进行处理后得到包括文档全局编号的第一处理文档,对所述原始输入文档分割成单词集合后得到第二处理文档,将所述第二处理文档进行转换处理后结合所述第一处理文档中文档的全局编号得到第三处理文档,具体包括:
从外部存储上读取语料数据作为原始输入文档;
将所述原始输入文档执行ZipWithIndex操作后得到文档的全局编号,形成第一处理文档;
采用分词工具将所述原始输入文档分割成单词集合,每个文档转为单词数组,同一个文档中的重复单词在单词数组中仅记录一次,得到第二处理文档;
将所述第二处理文档进行Map转换处理,根据MurmurHash算法将单词从String类型转换为64Bit的特征编码,用Long类型记录,结合所述第一处理文档中文档的全局编号得到第三处理文档。
所述的大规模长文本数据的近似重复检测方法,其中,所述原始输入文档为Spark的弹性分布式数据集,数据集中实际存储的是原始输入文档集合,文档为字符串类型。
所述的大规模长文本数据的近似重复检测方法,其中,所述将所述原始输入文档执行ZipWithIndex操作后得到文档的全局编号,形成第一处理文档,之后还包括:
通过Spark的MemoryAndDisk对所述第一处理文档进行策略持久化,以将所述第一处理文档中的数据优先存储在内存上,当内存不够容纳的部分存储到磁盘上。
所述的大规模长文本数据的近似重复检测方法,其中,所述将所述第三处理文档进行展开单词集合处理得到第四处理文档,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和后得到第五处理文档,汇聚各分区过滤后的词表形成第六处理文档,具体包括:
将所述第三处理文档执行FlatMap算子展开单词集合处理得到第四处理文档,并初始化所述第四处理文档中的词频;
将所述第四处理文档执行ReduceByKey操作,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和,得到第五处理文档;
采用CollectAsMap汇聚各分区过滤后的词表形成第六处理文档,并将所述第六处理文档广播到每个计算节点。
所述的大规模长文本数据的近似重复检测方法,其中,所述第五处理文档和所述第六处理文档中的单词编码和词频均为Int类型。
所述的大规模长文本数据的近似重复检测方法,其中,所述将所述第三处理文档执行转换处理,根据单词集合进行指纹计算,并根据词频和文档的总数得到IDF权重,计算得到每个文档对应指纹,构成第七处理文档,具体包括:
将所述第三处理文档执行Map转换处理,根据64Bit哈希编码的单词集合进行Simhash的指纹计算,并根据词频和文档的总数得到IDF权重,计算公式为:
其中,分子为总文档数,分母为单词出现在文档中的次数;
得到每个文档对应的Simhash指纹,构成第七处理文档,其中指纹为Long类型。
所述的大规模长文本数据的近似重复检测方法,其中,所述将所述第七处理文档执行转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档,遍历前缀单词数组中的每个单词,按照预设方式进行操作展开形成第九处理文档,具体包括:
将所述第七处理文档执行Map转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档;
将所述第八处理文档执行Map转换处理,运用前缀计算公式:
其中,x代表文档,j代表前缀长度,i的取值为1到j之间的整数,σx表示文档x中每个单词的IDF权重之和,weight(x[i])代表文档x第i个单词的IDF权重,代表x[i]这个单词的重要程度,t表示相似度阈值;
计算出每个文档x的前缀长度,获得前缀单词数组,所述前缀单词数组是根据计算出的前缀长度从单词数组截取的子数组;
遍历前缀单词数组中的每个单词,按照预设方式进行FlatMap操作展开形成第九处理文档。
所述的大规模长文本数据的近似重复检测方法,其中,所述将所述第九处理文档按照单次编码分组,形成第十处理文档,对所述第十处理文档中的每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对,得到真实的重复文档检测结果,具体包括:
将所述第九处理文档进行GroupByKey操作,按照单次编码分组,形成第十处理文档;
将所述第十处理文档执行Map转换处理,对每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对;
将所述重复记录对和所述第一处理文档进行Join操作,得到真实的重复文档检测结果,将所述重复文档检测结果保存到外部存储。
所述的大规模长文本数据的近似重复检测方法,其中,其中,Join的关键字为文档编号。
此外,为实现上述目的,本发明还提供一种大规模长文本数据的近似重复检测系统,其中,所述大规模长文本数据的近似重复检测系统包括:
数据清洗和转换模块,用于读取语料数据作为原始输入文档,对所述原始输入文档进行处理后得到包括文档全局编号的第一处理文档,对所述原始输入文档分割成单词集合后得到第二处理文档,将所述第二处理文档进行转换处理后结合所述第一处理文档中文档的全局编号得到第三处理文档;
词表构建模块,用于将所述第三处理文档进行展开单词集合处理得到第四处理文档,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和后得到第五处理文档,汇聚各分区过滤后的词表形成第六处理文档;
指纹预计算模块,用于将所述第三处理文档执行转换处理,根据单词集合进行指纹计算,并根据词频和文档的总数得到IDF权重,计算得到每个文档对应指纹,构成第七处理文档;
数据分发模块,用于将所述第七处理文档执行转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档,遍历前缀单词数组中的每个单词,按照预设方式进行操作展开形成第九处理文档;
相似度验证模块,用于将所述第九处理文档按照单次编码分组,形成第十处理文档,对所述第十处理文档中的每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对,得到真实的重复文档检测结果。
此外,为实现上述目的,本发明还提供一种终端,其中,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的大规模长文本数据的近似重复检测程序,所述大规模长文本数据的近似重复检测程序被所述处理器执行时实现如上所述的大规模长文本数据的近似重复检测方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有大规模长文本数据的近似重复检测程序,所述大规模长文本数据的近似重复检测程序被处理器执行时实现如上所述的大规模长文本数据的近似重复检测方法的步骤。
本发明通过将传统数据库中的倒排索引结构引入到分布式计算框架中,实现了文档相似检测的分布式分区,并且通过倒排表分区方式实现Simhash技术的分布式计算,为其带来可扩展性,最后通过在计算过程中嵌入传统数据库领域的前缀剪枝技术,来进一步减少分布式重复检测过程中倒排分区的通讯读写代价和simhash计算的验证代价。
附图说明
图1是本发明大规模长文本数据的近似重复检测方法的较佳实施例的流程图;
图2是本发明大规模长文本数据的近似重复检测方法的较佳实施例中整个执行过程的流程示意图;
图3是本发明大规模长文本数据的近似重复检测系统的较佳实施例的原理示意图;
图4为本发明终端的较佳实施例的运行环境示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明较佳实施例所述的大规模长文本数据的近似重复检测方法,如图1和图2所示,所述大规模长文本数据的近似重复检测方法包括以下步骤:
步骤S10、读取语料数据作为原始输入文档,对所述原始输入文档进行处理后得到包括文档全局编号的第一处理文档,对所述原始输入文档分割成单词集合后得到第二处理文档,将所述第二处理文档进行转换处理后结合所述第一处理文档中文档的全局编号得到第三处理文档。
具体地,所述步骤S10具体包括:
101、从外部存储上读取语料数据作为原始输入文档,即InputRDD=RDD[原始输入文档],其中,RDD为Spark的弹性分布式数据集(指开源框架Spark的数据集,是一种存储结构,RDD是Spark提供的最重要的抽象概念,它是一种有容错机制的特殊数据集合,可以分布在集群的结点上,以函数式操作集合的方式进行各种并行操作,每个RDD可以分成多个分区,每个分区就是一个数据集片段,一个RDD的不同分区可以保存到集群中的不同结点上,从而可以在集群中的不同结点上进行并行计算),数据集中实际存储的是原始输入文档集合,文档为字符串类型。
102、将所述原始输入文档InputRDD执行ZipWithIndex操作(是Spark内的一种操作,可以对文档进行分布式编号,这样每个文档都会得到一个ID)后得到文档的全局编号,形成第一处理文档,即IndexRDD=RDD[(文档编号,原始输入文档)],并以Spark的MemoryAndDisk策略持久化,即把数据优先存储在内存上,内存不够容纳的部分存储到磁盘上。
103、用Spark的Map算子执行转换,采用分词工具或自定义方式将所述原始输入文档InputRDD分割成单词集合,每个文档转为Array[String]类型表示的单词数组,同一个文档中的重复单词在单词数组中仅记录一次,得到第二处理文档,即SourceRDD。
104、将所述第二处理文档SourceRDD进行Map转换处理,根据MurmurHash算法(MurmurHash是一种非加密型哈希函数,适用于一般的哈希检索操作)将单词从String类型转换为64Bit的特征编码,用Long类型记录,结合所述第一处理文档IndexRDD中文档编号形成第三处理文档,即HashRDD=RDD[(单词集合,文档编号)],其中单词集合为Array[Long]类型,文档编号为Long类型。
步骤S20、将所述第三处理文档进行展开单词集合处理得到第四处理文档,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和后得到第五处理文档,汇聚各分区过滤后的词表形成第六处理文档。
具体地,所述步骤S20具体包括:
210、将所述第三处理文档HashRDD执行FlatMap算子(FlatMap操作是将函数应用于RDD之中的每一个元素,将返回的迭代器的所有内容构成新的RDD)展开单词集合处理得到第四处理文档,即FlatHashRDD=RDD[(单词编码,词频)],并初始化所述第四处理文档FlatHashRDD中的词频为1(初始化词频为1的原因是在统计单词频率时,每一次在文档中出现代表一次)。
202、将所述第四处理文档FlatHashRDD执行ReduceByKey操作,ReduceByKey操作意思是对于单词编码相同的元组,合并并对词频求和,得到词表WordRDD=RDD[(单词编码,词频)],即将所述第四处理文档FlatHashRDD中单词编码相同的元组进行合并,并对词频进行求和,得到第五处理文档,即词表WordRDD=RDD[(单词编码,词频)],其中单词编码和词频均为Int类型。
203、采用CollectAsMap汇聚各分区过滤后的词表形成第六处理文档,即WordMap=Map[单词编码->词频],其中单词编码和词频均为Int类型。
204、并将所述第六处理文档WordMap广播到每个计算节点。
步骤S30、将所述第三处理文档执行转换处理,根据单词集合进行指纹计算,并根据词频和文档的总数得到IDF权重,计算得到每个文档对应指纹,构成第七处理文档。
具体地,所述步骤S30具体包括:
301、将步骤104中的所述第三处理文档HashRDD执行Map转换处理,根据64Bit哈希编码的单词集合进行Simhash(Simhash是用来网页去重最常用的hash方)的指纹计算,单词已经转换为特征哈希值,另外单次的权重可以通过步骤204的词频和文档的总数得到IDF(Inverse Document Frequency,逆文本频率指数)权重,计算公式为:
其中,idfi代表某个单词的IDF权重,分子为总文档数(即|D|:语料库中的文档数量),分母为单词出现在文档中的次数,j代表语料库中的某个文档编号,ti代表任意单词,dj代表出现单词ti的某个文档;
最终得到每个文档对应的Simhash指纹,构成第七处理文档,即SimhashRDD=RDD[(单词数组,指纹,文档编号)],其中指纹为Long类型。
步骤S40、将所述第七处理文档执行转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档,遍历前缀单词数组中的每个单词,按照预设方式进行操作展开形成第九处理文档。
具体地,所述步骤S40具体包括:
401、将所述第七处理文档SimhashRDD执行Map转换处理,将单词数组中的单词按照所述第六处理文档(即词表WordMap)中的词频从小到大排序,形成第八处理文档,即SortedSimhashRDD=RDD[(单词数组,指纹,文档编号)]。
402、将所述第八处理文档SortedSimhashRDD执行Map转换处理,运用前缀计算公式:
其中,x代表文档,j代表前缀长度,i的取值为1到j之间的整数,σx表示文档x中每个单词的IDF权重之和,weight(x[i])代表文档x第i个单词的IDF权重,代表x[i]这个单词的重要程度,这里的weight=上文的IDF计算的值,t表示相似度阈值,长文本重复检测中一般取0.9即可;计算出每个文档x的前缀长度,获得前缀单词数组,类型仍为Array[Long],所述前缀单词数组是根据计算出的前缀长度从单词数组截取的子数组。
403、遍历前缀单词数组中的每个单词,按照预设方式(单词编码,指纹)进行FlatMap操作展开形成第九处理文档,即PrefixRDD=RDD[(单词编码,指纹,文档编号)]。
步骤S50、将所述第九处理文档按照单次编码分组,形成第十处理文档,对所述第十处理文档中的每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对,得到真实的重复文档检测结果。
具体地,所述步骤S50具体包括:
501、将所述第九处理文档PrefixRDD进行GroupByKey操作,按照单次编码分组,形成第十处理文档,即GroupPrefixRDD=RDD[单词编码,Iterable[(指纹,文档编号)]],其中每个Iterable代表一个分组,这个分区分组便于对相似度验证步骤进行分布式计算;
502、将所述第十处理文档GroupPrefixRDD执行Map转换处理,对每个分组中Long型的指纹采用海明距离进行相似度验证,海明距离一般取3,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对,即DuplicateRDD=RDD[(文档编号,文档编号)];
503、将所述重复记录对DuplicateRDD和所述第一处理文档IndexRDD进行Join(join=表连接,是数据库的常见操作)操作,Join的关键字为文档编号,得到真实的重复文档检测结果,将所述重复文档检测结果保存到外部存储。
本发明基于分布式计算框架(利用多个计算机节点联机进行计算的技术架构),采用带有前缀剪枝的分布式simhash技术来对大规模中文语料数据进行相似检测的方法,将传统数据库中的倒排索引结构(倒排索引结构即将多个文档按其中的出现的单词反向索引文档,以达到快速根据单词找到对应文档的搜索能力)引入到分布式计算框架中来,实现文档相似检测的分布式分区,并且通过倒排表分区方式实现Simhash技术的分布式计算,为其带来可扩展性,最后通过在计算过程中嵌入传统数据库领域的前缀剪枝技术,来进一步减少分布式重复检测过程中倒排分区的通讯读写代价和simhash计算的验证代价。
本发明第一个重要技术点是引入传统数据库技术中的倒排索引技术到分布式重复检测框架中,并通过分布式倒排表的方式实现了Simhash的分布式重复检测;本发明的场景是需要对一个亿级的超大长文本中文数据集进行近似重复检测,分布式倒排表是指分区方式,即将经过基本清洗和分词后的文档,按照(单词,文档)的方式进行分区分发洗牌,在每个分区内按照单词进行聚集分组,相同的单词对应的多个文档并为一组,此过程不仅完成了文档的数据分区分组,而且过滤掉了大量的完全不相关的文档对,因为至少共有一个单词的文档才会进入一个分区分组。在同一个分区对应的同一个分组中,实际上还是潜在的重复文档集合,采用Simhash技术对这些文档组并行的进行重复检测,这里可以是多机多线程进行分布式并行计算,这种方式解决了传统Simhash作为单机算法无法充分利用现代多节点分布式计算资源的缺陷,使得算法能够应对更大的数据规模。
本发明的第二个重要技术点是对于Simhash的预计算策略,通过倒排表的分区方式实现了Simhash的分布式,提高了算法的可扩展性,然而倒排表的分区方式为了确保不会遗漏相似对,会将原始文档按照不同的单词复制很多次并进行分发洗牌,这样会带来很大的读写和通讯开销。因此,本发明采用Murmurhash在数据分发前按照同一个种子seed对每个文档计算Simhash值,得到一个局部敏感哈希值,这个哈希值能够一定程度上代表原文档的特征。在数据分发的时候,选择分发这个局部敏感哈希值而不是原文档,然后在分区分组的内部直接对这些哈希值应用海明距离进行Simhash的相似度验证阶段。经过预计算,倒排表分区方式的分发洗牌阶段,就不用传输读写原始的长文本数据,实际传输的是一个8Byte的局部敏感哈希值,并且使用此哈希值对于Simhash的重复检测性能和准确率没有损失。
本发明的第三个重要技术点是在分布式重复检测方法中利用传统数据库中的前缀技术对分发数据进行了一次带有语义的剪枝。在第二个技术点中通过Simhash的哈希值预计算解决了倒排表分区方式多次复制和分发原文档的问题,但是由于预训练模型的训练数据大部分都是中文长文档,每个文档包含的单词数目多,即便传输的是哈希值,倒排表分区方式仍然需要按照文档中的多个单词把这个哈希值复制输出多次,每个分区和分组会接收到很多的(单词,哈希值)元组,仍然会产生非常多的相似度验证计算量,并且也会带来很大的读写和通讯量。在预计算完Simhash的哈希值之后,计算文档带有IDF语义权重的前缀单词列表,然后按照单词列表分发预计算的局部敏感哈希值而不是全部单词,这样排除了大量的实际不可能相似的文档对,减少了很多无意义的相似度验证和读写通讯代价。通过实验发现去重一般采用的Simhash的海明距离为3或5的情况下,限定前缀阈值为0.9,不会对重复检测结果产生明显的影响,而这种情况下,大概能减少一个数量级的相似度验证和读写通讯代价。
本发明在分布式分区前后的处理上与已有方法有较大不同,分区前引入了Simhash预计算的指纹取代了文档的单词数组,通讯和读写量会降低几个数量级,比如文档500个单词,那么从500个Int变成了1个Long,降低约250倍;另外在分区后不再采用集合相似度对文档的单词数组进行相似度验证,而采用Simhash的分组海明距离验证文档的指纹,直接位异或进行计算,验证速度也有着较大提升。
进一步地,如图3所示,基于上述大规模长文本数据的近似重复检测方法,本发明还相应提供了一种大规模长文本数据的近似重复检测系统,其中,所述大规模长文本数据的近似重复检测系统包括:
数据清洗和转换模块51,用于读取语料数据作为原始输入文档,对所述原始输入文档进行处理后得到包括文档全局编号的第一处理文档,对所述原始输入文档分割成单词集合后得到第二处理文档,将所述第二处理文档进行转换处理后结合所述第一处理文档中文档的全局编号得到第三处理文档;
词表构建模块52,用于将所述第三处理文档进行展开单词集合处理得到第四处理文档,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和后得到第五处理文档,汇聚各分区过滤后的词表形成第六处理文档;
指纹预计算模块53,用于将所述第三处理文档执行转换处理,根据单词集合进行指纹计算,并根据词频和文档的总数得到IDF权重,计算得到每个文档对应指纹,构成第七处理文档;
数据分发模块54,用于将所述第七处理文档执行转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档,遍历前缀单词数组中的每个单词,按照预设方式进行操作展开形成第九处理文档;
相似度验证模块55,用于将所述第九处理文档按照单次编码分组,形成第十处理文档,对所述第十处理文档中的每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对,得到真实的重复文档检测结果。
进一步地,如图4所示,基于上述大规模长文本数据的近似重复检测方法和系统,本发明还相应提供了一种终端,所述终端包括处理器10、存储器20及显示器30。图4仅示出了终端的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器20在一些实施例中可以是所述终端的内部存储单元,例如终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器20还可以既包括所述终端的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述终端的应用软件及各类数据,例如所述安装终端的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有大规模长文本数据的近似重复检测程序40,该大规模长文本数据的近似重复检测程序40可被处理器10所执行,从而实现本申请中大规模长文本数据的近似重复检测方法。
所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述大规模长文本数据的近似重复检测方法等。
所述显示器30在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器30用于显示在所述终端的信息以及用于显示可视化的用户界面。所述终端的部件10-30通过系统总线相互通信。
在一实施例中,当处理器10执行所述存储器20中大规模长文本数据的近似重复检测程序40时实现所述大规模长文本数据的近似重复检测方法的步骤。
本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有大规模长文本数据的近似重复检测程序,所述大规模长文本数据的近似重复检测程序被处理器执行时实现如上所述的大规模长文本数据的近似重复检测方法的步骤。
综上所述,本发明通过构建分布式倒排表的方式实现了一种分布式的Simhash方案,解决了传统Simhash应对单个大规模数据集的重复检测的瓶颈问题,能够更充分的利用计算资源,应对更大的计算规模;通过对文本进行Simhash预计算,解决了倒排表分区方式中文档内容被多次冗余复制传输带来的通讯和读写代价过高的问题;通过前缀剪枝的方式显著减少了分布式数据分发的数据量,进一步为读写磁盘代价和通讯代价带来数量级的下降;传统的倒排索引技术、前缀剪枝技术和Simhash技术在分布式计算框架下的实现和深度结合,构成了分布式重复检测方法,解决了各自的缺陷,在读写、通讯、计算量、并行性等方面相较已有方法有较大改进。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (12)
1.一种大规模长文本数据的近似重复检测方法,其特征在于,所述大规模长文本数据的近似重复检测方法包括:
读取语料数据作为原始输入文档,对所述原始输入文档进行处理后得到包括文档全局编号的第一处理文档,对所述原始输入文档分割成单词集合后得到第二处理文档,将所述第二处理文档进行转换处理后结合所述第一处理文档中文档的全局编号得到第三处理文档;
所述读取语料数据作为原始输入文档,对所述原始输入文档进行处理后得到包括文档全局编号的第一处理文档,对所述原始输入文档分割成单词集合后得到第二处理文档,将所述第二处理文档进行转换处理后结合所述第一处理文档中文档的全局编号得到第三处理文档,具体包括:
从外部存储上读取语料数据作为原始输入文档;
将所述原始输入文档执行ZipWithIndex操作后得到文档的全局编号,形成第一处理文档;
采用分词工具将所述原始输入文档分割成单词集合,每个文档转为单词数组,同一个文档中的重复单词在单词数组中仅记录一次,得到第二处理文档;
将所述第二处理文档进行Map转换处理,根据MurmurHash算法将单词从String类型转换为64Bit的特征编码,用Long类型记录,结合所述第一处理文档中文档的全局编号得到第三处理文档;
其中,原始输入文档为Spark的弹性分布式数据集,分布在集群的结点上,以函数式操作集合的方式进行各种并行操作,每个原始输入文档分成多个分区,每个分区是一个数据集片段,一个原始输入文档的不同分区保存到集群中的不同结点上,在集群中的不同结点上进行并行计算;
将所述第三处理文档进行展开单词集合处理得到第四处理文档,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和后得到第五处理文档,汇聚各分区过滤后的词表形成第六处理文档;
将所述第三处理文档执行转换处理,根据单词集合进行指纹计算,并根据词频和文档的总数得到IDF权重,计算得到每个文档对应指纹,构成第七处理文档;
将所述第七处理文档执行转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档,遍历前缀单词数组中的每个单词,按照预设方式进行操作展开形成第九处理文档;
将所述第九处理文档按照单次编码分组,形成第十处理文档,对所述第十处理文档中的每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对,得到真实的重复文档检测结果。
2.根据权利要求1所述的大规模长文本数据的近似重复检测方法,其特征在于,所述原始输入文档为Spark的弹性分布式数据集,数据集中实际存储的是原始输入文档集合,文档为字符串类型。
3.根据权利要求1所述的大规模长文本数据的近似重复检测方法,其特征在于,所述将所述原始输入文档执行ZipWithIndex操作后得到文档的全局编号,形成第一处理文档,之后还包括:
通过Spark的MemoryAndDisk对所述第一处理文档进行策略持久化,以将所述第一处理文档中的数据优先存储在内存上,当内存不够容纳的部分存储到磁盘上。
4.根据权利要求1所述的大规模长文本数据的近似重复检测方法,其特征在于,所述将所述第三处理文档进行展开单词集合处理得到第四处理文档,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和后得到第五处理文档,汇聚各分区过滤后的词表形成第六处理文档,具体包括:
将所述第三处理文档执行FlatMap算子展开单词集合处理得到第四处理文档,并初始化所述第四处理文档中的词频;
将所述第四处理文档执行ReduceByKey操作,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和,得到第五处理文档;
采用CollectAsMap汇聚各分区过滤后的词表形成第六处理文档,并将所述第六处理文档广播到每个计算节点。
5.根据权利要求4所述的大规模长文本数据的近似重复检测方法,其特征在于,所述第五处理文档和所述第六处理文档中的单词编码和词频均为Int类型。
6.根据权利要求4所述的大规模长文本数据的近似重复检测方法,其特征在于,所述将所述第三处理文档执行转换处理,根据单词集合进行指纹计算,并根据词频和文档的总数得到IDF权重,计算得到每个文档对应指纹,构成第七处理文档,具体包括:
将所述第三处理文档执行Map转换处理,根据64Bit哈希编码的单词集合进行Simhash的指纹计算,并根据词频和文档的总数得到IDF权重,计算公式为:
其中,分子为总文档数,分母为单词出现在文档中的次数;
得到每个文档对应的Simhash指纹,构成第七处理文档,其中指纹为Long类型。
7.根据权利要求6所述的大规模长文本数据的近似重复检测方法,其特征在于,所述将所述第七处理文档执行转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档,遍历前缀单词数组中的每个单词,按照预设方式进行操作展开形成第九处理文档,具体包括:
将所述第七处理文档执行Map转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档;
将所述第八处理文档执行Map转换处理,运用前缀计算公式:
其中,x代表文档,j代表前缀长度,i的取值为1到j之间的整数,σx表示文档x中每个单词的IDF权重之和,weight(x[i])代表文档x第i个单词的IDF权重,代表x[i]这个单词的重要程度,t表示相似度阈值;
计算出每个文档x的前缀长度,获得前缀单词数组,所述前缀单词数组是根据计算出的前缀长度从单词数组截取的子数组;
遍历前缀单词数组中的每个单词,按照预设方式进行FlatMap操作展开形成第九处理文档。
8.根据权利要求7所述的大规模长文本数据的近似重复检测方法,其特征在于,所述将所述第九处理文档按照单次编码分组,形成第十处理文档,对所述第十处理文档中的每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对,得到真实的重复文档检测结果,具体包括:
将所述第九处理文档进行GroupByKey操作,按照单次编码分组,形成第十处理文档;
将所述第十处理文档执行Map转换处理,对每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对;
将所述重复记录对和所述第一处理文档进行Join操作,得到真实的重复文档检测结果,将所述重复文档检测结果保存到外部存储。
9.根据权利要求7所述的大规模长文本数据的近似重复检测方法,其特征在于,其中,Join的关键字为文档编号。
10.一种大规模长文本数据的近似重复检测系统,其特征在于,所述大规模长文本数据的近似重复检测系统包括:
数据清洗和转换模块,用于读取语料数据作为原始输入文档,对所述原始输入文档进行处理后得到包括文档全局编号的第一处理文档,对所述原始输入文档分割成单词集合后得到第二处理文档,将所述第二处理文档进行转换处理后结合所述第一处理文档中文档的全局编号得到第三处理文档;
所述读取语料数据作为原始输入文档,对所述原始输入文档进行处理后得到包括文档全局编号的第一处理文档,对所述原始输入文档分割成单词集合后得到第二处理文档,将所述第二处理文档进行转换处理后结合所述第一处理文档中文档的全局编号得到第三处理文档,具体包括:
从外部存储上读取语料数据作为原始输入文档;
将所述原始输入文档执行ZipWithIndex操作后得到文档的全局编号,形成第一处理文档;
采用分词工具将所述原始输入文档分割成单词集合,每个文档转为单词数组,同一个文档中的重复单词在单词数组中仅记录一次,得到第二处理文档;
将所述第二处理文档进行Map转换处理,根据MurmurHash算法将单词从String类型转换为64Bit的特征编码,用Long类型记录,结合所述第一处理文档中文档的全局编号得到第三处理文档;
其中,原始输入文档为Spark的弹性分布式数据集,分布在集群的结点上,以函数式操作集合的方式进行各种并行操作,每个原始输入文档分成多个分区,每个分区是一个数据集片段,一个原始输入文档的不同分区保存到集群中的不同结点上,在集群中的不同结点上进行并行计算;
词表构建模块,用于将所述第三处理文档进行展开单词集合处理得到第四处理文档,将所述第四处理文档中单词编码相同的元组进行合并,并对词频进行求和后得到第五处理文档,汇聚各分区过滤后的词表形成第六处理文档;
指纹预计算模块,用于将所述第三处理文档执行转换处理,根据单词集合进行指纹计算,并根据词频和文档的总数得到IDF权重,计算得到每个文档对应指纹,构成第七处理文档;
数据分发模块,用于将所述第七处理文档执行转换处理,将单词数组中的单词按照所述第六处理文档中的词频从小到大排序,形成第八处理文档,遍历前缀单词数组中的每个单词,按照预设方式进行操作展开形成第九处理文档;
相似度验证模块,用于将所述第九处理文档按照单次编码分组,形成第十处理文档,对所述第十处理文档中的每个分组中的特定指纹采用海明距离进行相似度验证,每个分区独立进行分布式并行计算,得到满足相似度条件的重复记录对,得到真实的重复文档检测结果。
11.一种终端,其特征在于,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的大规模长文本数据的近似重复检测程序,所述大规模长文本数据的近似重复检测程序被所述处理器执行时实现如权利要求1-9任一项所述的大规模长文本数据的近似重复检测方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有大规模长文本数据的近似重复检测程序,所述大规模长文本数据的近似重复检测程序被处理器执行时实现如权利要求1-9任一项所述的大规模长文本数据的近似重复检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111482009.7A CN114386384B (zh) | 2021-12-06 | 2021-12-06 | 一种大规模长文本数据的近似重复检测方法、系统及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111482009.7A CN114386384B (zh) | 2021-12-06 | 2021-12-06 | 一种大规模长文本数据的近似重复检测方法、系统及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114386384A CN114386384A (zh) | 2022-04-22 |
CN114386384B true CN114386384B (zh) | 2024-03-19 |
Family
ID=81195503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111482009.7A Active CN114386384B (zh) | 2021-12-06 | 2021-12-06 | 一种大规模长文本数据的近似重复检测方法、系统及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114386384B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110516212A (zh) * | 2019-09-02 | 2019-11-29 | 河南理工大学 | 一种云计算的海量文档相似检测方法 |
CN110750615A (zh) * | 2019-09-30 | 2020-02-04 | 贝壳技术有限公司 | 文本重复性判定方法和装置、电子设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9773039B2 (en) * | 2012-09-14 | 2017-09-26 | Fti Consulting, Inc. | Computer-implemented system and method for identifying near duplicate documents |
CN106445676B (zh) * | 2015-08-05 | 2019-10-22 | 杭州海康威视系统技术有限公司 | 一种分布式数据计算的任务分配方法和任务分配装置 |
US10467464B2 (en) * | 2016-06-07 | 2019-11-05 | The Neat Company, Inc. | Document field detection and parsing |
US11288297B2 (en) * | 2017-11-29 | 2022-03-29 | Oracle International Corporation | Explicit semantic analysis-based large-scale classification |
-
2021
- 2021-12-06 CN CN202111482009.7A patent/CN114386384B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110516212A (zh) * | 2019-09-02 | 2019-11-29 | 河南理工大学 | 一种云计算的海量文档相似检测方法 |
CN110750615A (zh) * | 2019-09-30 | 2020-02-04 | 贝壳技术有限公司 | 文本重复性判定方法和装置、电子设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
基于语义指纹的海量文本快速相似检测算法研究;姜雪;万正景;梁燕;陶以政;;电脑知识与技术;20161225(第36期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114386384A (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Bed-tree: an all-purpose index structure for string similarity search based on edit distance | |
US10521441B2 (en) | System and method for approximate searching very large data | |
CN107862070B (zh) | 基于文本聚类的线上课堂讨论短文本即时分组方法及系统 | |
US8533203B2 (en) | Identifying synonyms of entities using a document collection | |
US11853334B2 (en) | Systems and methods for generating and using aggregated search indices and non-aggregated value storage | |
US10579661B2 (en) | System and method for machine learning and classifying data | |
CN110321925B (zh) | 一种基于语义聚合指纹的文本多粒度相似度比对方法 | |
US7610283B2 (en) | Disk-based probabilistic set-similarity indexes | |
Zhai et al. | ATLAS: a probabilistic algorithm for high dimensional similarity search | |
CN110851598B (zh) | 文本分类方法、装置、终端设备及存储介质 | |
CN111258966A (zh) | 一种数据去重方法、装置、设备及存储介质 | |
KR102373146B1 (ko) | 군집 기반 중복문서 제거 장치 및 제거 방법 | |
CN112579155A (zh) | 代码相似性检测方法、装置以及存储介质 | |
Franke et al. | Parallel Privacy-preserving Record Linkage using LSH-based Blocking. | |
CN113408301A (zh) | 一种样本处理方法、装置、设备和介质 | |
Song et al. | Brepartition: Optimized high-dimensional knn search with bregman distances | |
Zhang et al. | Learning hash codes for efficient content reuse detection | |
CN113918807A (zh) | 数据推荐方法、装置、计算设备及计算机可读存储介质 | |
CN114386384B (zh) | 一种大规模长文本数据的近似重复检测方法、系统及终端 | |
Ragavan et al. | A Novel Big Data Storage Reduction Model for Drill Down Search. | |
CN115080684A (zh) | 网盘文档索引方法、装置、网盘及存储介质 | |
Thi-To-Quyen et al. | Optimization for large-scale fuzzy joins using fuzzy filters in mapreduce | |
Phan et al. | SIMILARITY ALGORITHMS FOR FUZZY JOIN COMPUTATION IN BIG DATA PROCESSING ENVIRONMENT | |
CN115408491B (zh) | 一种历史数据的文本检索方法及系统 | |
Chauhan et al. | A parallel computational approach for similarity search using Bloom filters |
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 |