CN110866088B - 一种语料库之间的快速全文检索方法及系统 - Google Patents
一种语料库之间的快速全文检索方法及系统 Download PDFInfo
- Publication number
- CN110866088B CN110866088B CN201910780462.2A CN201910780462A CN110866088B CN 110866088 B CN110866088 B CN 110866088B CN 201910780462 A CN201910780462 A CN 201910780462A CN 110866088 B CN110866088 B CN 110866088B
- Authority
- CN
- China
- Prior art keywords
- fingerprint
- fingerprints
- representative point
- subset
- subsets
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种语料库之间的快速全文检索方法,包括:在多个预先构建的指纹库中依次任选两个,为所述两个指纹库分别划分指纹子集;采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对;所述指纹对分别对应的所述一个指纹库的文档与所述另一个指纹库的文档为检索出的所述两个语料库中最相似的文档。本发明提供的技术方案通过所有同级的指纹子集的相似度上限确定检索目标,采用分支界定的方法,大规模精简待搜索文档的目标集合的规模和检索过程。
Description
技术领域
本发明涉及文档检索领域,具体涉及一种语料库之间的快速全文检索方法及系统。
背景技术
随着互联网技术的快速发展,无论线上还是线下,文本库的规模急剧膨胀,如何在多个文本库中快速查找最相似的文档成为一个亟待解决的问题。
全文检索是指以全部文本信息作为检索对象的一种信息检索技术。全文检索的关键是文档的索引,即如何将源文档中所有基本元素的信息以适当的形式记录到索引库中。根据索引库中索引的元素不同,现有的全文检索系统可以分为基于字(word)表的全文检索和基于词(phrase)表的全文检索两种类型。
传统的基于关键字的检索方法,只对一条信息中具有检索意义的语词进行标引,它的标引深度总是有限的,无法满足人们对信息查全率的高要求;而全文检索系统可以对文本中的每个字、词进行标引,其标引的深度达到了极限,所以全文检索具有更高的查全率。主题词索引法和关键词索引法是采用人工赋词标引的方法,这些方法需要标引人员手工对各种信息进行加工处理,给出检索标识,所以效率低;而且标引质量由于手工的参与,带有很大的局限性。而全文检索系统可采用计算机自动抽取文本中的字、词进行标引,从而大大加快了标引的速度。全文检索系统除提供一般的“AND”、“OR”、“NOT”逻辑检索功能外,还能具备位置逻辑检索、字符串检索、截词检索等多种检索功能。
虽然现有的全文检索系统比传统的基于关键字的检索具有更强大的功能、更高的准确率以及效率等,但它本质上还是通过关键字匹配进行文本检索。但相比于人们的需求,它的效率低和准确率仍不及预期,这主要是由于全文检索技术的全词匹配和语词本身的特点导致的。
在许多实际应用中,我们真实的需求是在检索过程中使用文档,但更一般的情况是我们称之为“语料库之间”的查询,它将多个语料库作为输入,在多个语料库中查询最相似的文档对。在这种情况下,快速而准确地返回与所有文档最相似的1个或者多个文件的集合才是我们所期盼的结果。对于这种“语料库之间”的查询,由于需要比较的文档对的数量非常多,因此计算量会很大。在高精度和快速响应的要求下,现有的基于关键字、全文检索系统以及基于简单顺序扫描的搜索策略均无法有效处理此类情形,检索效率和准确率较低。
由于文档长短不一,使用简单的几个词语、短句甚至片段等无法表征其核心内容,或者说难以全面概括文档内容。此外,词序在文档中也扮演着重要的作用,传统的基于关键字的检索方法和现有的全文检索方法在这方面考虑不足,造成检索效率低,准确率低。研究成果表明,距离图(Distance Graph)可以有效反映文档的内容结构,如词序信息等,但距离图本身结构复杂,规模较大,为语料库中的所有文档构建距离图是可行的,但计算这些文档对应的距离图的相似度是不现实的,因为图的相似度计算涉及到的计算量太大。
发明内容
为了解决现有技术中所存在的语料库之间的检索效率低和准确率低的问题,本发明提供一种语料库之间的快速全文检索方法及系统。
本发明提供的技术方案是:
一种语料库之间的快速全文检索方法,其改进之处在于,所述方法包括:
在多个预先构建的指纹库中依次任选两个,为所述两个指纹库分别划分指纹子集;
采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对;
所述指纹对分别对应的所述一个指纹库的文档与所述另一个指纹库的文档为检索出的所述两个语料库中最相似的文档;
其中,每个指纹库分别基于一个语料库构建,每个语料库包含多个文档,每个文档对应多个指纹子集。
优选地,所述指纹库的构建包括:
基于每个语料库,对所述语料库中所有文档的全文执行停用词去除操作,得到有效文档集;
基于所述有效文档集,生成语料库中文档对应的距离图;
按照所述距离图中的边数将指纹划分到不同层级,生成指纹索引,构建所述语料库对应的指纹库。
优选地,其特征在于,所述划分指纹子集包括:
基于所述指纹索引,将指纹库按照指纹高度分组,得到分级指纹集;
基于分级指纹集,得到各分级指纹集的代表点集合和对应各代表点的指纹集合;
基于各分级指纹集的代表点集合和对应各代表点的指纹集合,根据归一化半径和预先设置的指纹子集最小规模临界量划分并行子集;
其中,所述代表点为分级指纹集合中与内其他指纹的相似度最大的指纹。
优选地,所述基于分级指纹集,得到各分级指纹集的代表点集合和对应各代表点的指纹集合包括:
随机选取所述各分级指纹集中的一批指纹构成的代表点集合,对所述各分级指纹集中的指纹进行顺序扫描,如果指纹到所述代表点集合中最近代表点的归一化汉明距离不超过归一化半径,则将该指纹放入最近代表点对应的集合中,否则放入代表点集合中,直至所述各分级指纹集中的指纹扫描完毕,得到各分级指纹集的代表点集合和对应各代表点的指纹集合。
优选地,所述基于各分级指纹集的代表点集合和对应各代表点的指纹集合,根据归一化半径和预先设置的指纹子集最小规模临界量划分指纹子集包括:
对一个对应代表点的指纹集合进行遍历,如果指纹的规模小于预先设置的指纹子集最小规划临界量,则将与所述指纹对应的代表点从代表点集合中移出,并将所述代表点与所述指纹一起放到临时指纹集合中;
遍历所述临时指纹集合,若所述指纹与其对应的代表点的归一化汉明距离小于归一化半径,则将所述指纹从所述代表点集合中移到对应代表点的指纹集合中;否则,将指纹添加到大离群点集合中;
代表点集合中剩余的代表点与对应的指纹集合构成了一个指纹子集;所述代表点为指纹集合中与内其他指纹的相似度最大的指纹。
将所有对应各代表点的指纹集合进行划分,生成指纹子集。
优选地,采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对;包括:
计算其中一个指纹库和另一个指纹库中的所有同级的指纹子集的相似度上限;
将其中一个指纹库中的某个指纹子集与另一个指纹库中同级的指纹子集的相似度上限进行降序排序,根据预先设定的选取值确定所述另一指纹库中的检索目标;
基于所述检索目标,采用分支界定法查找与所述指纹子集中某个指纹最相似的一个或多个指纹,构成指纹对;
重复上述步骤查找其中一个指纹库中的所有指纹在另一个指纹库中的最相似的一个或多个指纹,分别构成指纹对;
其中,所述指纹对中,键为其中一个指纹库中的某个指纹子集的某个指纹,值为查找到的与所述指纹最相似的另一个指纹库中的一个或多个指纹。
优选地,所述计算所述其中一个指纹库和另一个指纹库中所有同级的指纹子集的相似度上限相似度上限按下式进行计算:
式中,sim(T,D):指纹T和指纹D之间的相似度;m(rj):指纹T所在子集的代表点rj对应的距离图的边数;m(ri):指纹D所在子集的代表点ri对应的距离图的边数;γ:归一化半径;q:指纹T和D的级数;T:指纹库中的任意一个q级指纹;D:与T不在同一个指纹库中的另一指纹库中的任意一个q级指纹;rj:指纹T所在子集的代表点;ri:指纹D所在子集的代表点。
优选地,选择其中一个指纹库中的某个指纹子集,将所述指纹子集的相似度上限分级进行降序排序,根据预先设定的选取值确定所述另一指纹库中的检索目标:
将其中一个指纹库中的某个指纹子集与另一个指纹库中同级的指纹子集的相似度上限进行降序排序;
选取降序排序结果中排在前面的多个指纹子集作为检索目标,所述检索目标中指纹子集的个数与预先设定的选取值相同。
优选地,所述基于所述检索目标,采用分支界定法查找与所述指纹子集中某个指纹最相似的一个或多个指纹包括:
基于所述指纹子集中的某个指纹与所述检索目标中对应的离群点集合中指纹的相似度,根据预先设定的选取值选择最相似指纹的个数,并将其中最小相似度的值作为全局悲观界;
计算所述指纹与所述检索目标中对应的指纹子集中代表点的相似度,并计算所述指纹到检索目标中的各指纹子集的乐观界,并进行降序排序,如果所述指纹到所述检索目标中的指纹子集的某乐观界低于全局悲观界,则从检索目标中删除该指纹子集,直至遍历所述检索目标中所有的指纹子集代表点,基于分支界定法,得到与所述指纹最相近的多个指纹;
其中,指纹个数按照所述预先设定的选取值进行选取。
一种语料库到语料库的快速全文检索系统包括划分模块、查找模块和结果模块:
划分模块:用于在多个预先构建的指纹库中依次任选两个,为所述两个指纹库分别划分指纹子集;
查找模块:用于采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对;
结果模块:用于所述指纹对分别对应的所述一个指纹库的文档与所述另一个指纹库的文档为检索出的所述两个语料库中最相似的文档;
其中,每个指纹库分别基于一个语料库构建,每个语料库包含多个文档,每个文档对应多个指纹子集。
与现有技术相比,本发明的有益效果为:
本发明提供的技术方案采用将距离图压缩成二维指纹的并行计算方法,将多个语料库构建为指纹库并划分指纹子集,通过所有同级的并行子集的相似度上限确定检索目标,大规模精简待搜索文档的目标集合的规模,精简搜索过程,采用分支界定法进行并行检索,在保障语料库之间检索准确性的情况下,提高了检索效率。
本发明提供的技术方案采用,采用了并行处理方式,相比于单机或者串行检索,具有更快的速度,并且对于计算机的硬件要求低,适用性强,易于推广。
附图说明
图1为本发明的语料库之间的快速全文检索方法示意图;
图2为本发明实施例2中一个二维指纹的结构示意图;
图3为本发明实施例2中倒排索引结构示意图;
图4为本发明实施例2中生成指纹的过程示意图;
图5为本发明实施例2中基于指纹的索引结构示意图;
图6为本发明实施例2中去除停用词得到有效文档的过程示意图;
图7为本发明实施例2中从有效文档获取单词列表的过程示意图;
图8为本发明实施例2中从有效文档生成距离图的过程示意图;
图9为本发明实施例2中从距离图生成指纹的过程示意图;
图10为本发明实施例2中划分子集的过程示意图;
图11为本发明实施例2中生成临时指纹集合过程示意图;
图12为本发明实施例2中计算两个语料库的各指纹子集之间相似度上限的过程示意图;
图13为本发明实施例2中计算各指纹的检索目标以及初始化全局悲观界的过程示意图;
图14为本发明实施例2中在检索目标中查找最相似的k个指纹过程示意图;
图15为本发明语料库之间的快速全文检索系统示意图。
具体实施方式
为了更好地理解本发明,下面结合说明书附图和实例对本发明的内容做进一步的说明。
实施例1:
一种语料库之间的快速全文检索方法,如图1所示,包括:
步骤1:在多个预先构建的指纹库中依次任选两个,为所述两个指纹库分别划分指纹子集;
步骤2:采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对;
步骤3:所述指纹对分别对应的所述一个指纹库的文档与所述另一个指纹库的文档为检索出的所述两个语料库中最相似的文档;
其中,每个指纹库分别基于一个语料库构建,每个语料库包含多个文档,每个文档对应多个指纹子集。
步骤1:在多个预先构建的指纹库中依次任选两个,为所述两个指纹库分别划分指纹子集。
具体地,所述指纹库的构建包括:
基于每个语料库,对所述语料库中所有文档的全文执行停用词去除操作,得到有效文档集;
基于所述有效文档集,生成语料库中文档对应的距离图;
按照所述距离图中的边数将指纹划分到不同层级,生成指纹索引,构建所述语料库对应的指纹库。
具体地,所述划分指纹子集包括:
基于所述指纹索引,将指纹库按照指纹高度分组,得到分级指纹集;
基于分级指纹集,得到各分级指纹集的代表点集合和对应各代表点的指纹集合;
基于各分级指纹集的代表点集合和对应各代表点的指纹集合,根据归一化半径和预先设置的指纹子集最小规模临界量划分并行子集;
其中,所述代表点为分级指纹集合中与内其他指纹的相似度最大的指纹。
具体地,所述基于分级指纹集,得到各分级指纹集的代表点集合和对应各代表点的指纹集合包括:
随机选取所述各分级指纹集中的一批指纹构成的代表点集合,对所述各分级指纹集中的指纹进行顺序扫描,如果指纹到所述代表点集合中最近代表点的归一化汉明距离不超过归一化半径,则将该指纹放入最近代表点对应的集合中,否则放入代表点集合中,直至所述各分级指纹集中的指纹扫描完毕,得到各分级指纹集的代表点集合和对应各代表点的指纹集合。
具体地,所述基于各分级指纹集的代表点集合和对应各代表点的指纹集合,根据归一化半径和预先设置的指纹子集最小规模临界量划分指纹子集包括:
对一个对应代表点的指纹集合进行遍历,如果指纹的规模小于预先设置的指纹子集最小规划临界量,则将与所述指纹对应的代表点从代表点集合中移出,并将所述代表点与所述指纹一起放到临时指纹集合中;
遍历所述临时指纹集合,若所述指纹与其对应的代表点的归一化汉明距离小于归一化半径,则将所述指纹从所述代表点集合中移到对应代表点的指纹集合中;否则,将指纹添加到大离群点集合中;
代表点集合中剩余的代表点与对应的指纹集合构成了一个指纹子集;所述代表点为指纹集合中与内其他指纹的相似度最大的指纹。
将所有对应各代表点的指纹集合进行划分,生成指纹子集。
步骤2:采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对包括:
计算其中一个指纹库和另一个指纹库中的所有同级的指纹子集的相似度上限;
将其中一个指纹库中的某个指纹子集与另一个指纹库中同级的指纹子集的相似度上限进行降序排序,根据预先设定的选取值确定所述另一指纹库中的检索目标;
基于所述检索目标,采用分支界定法查找与所述指纹子集中某个指纹最相似的一个或多个指纹,构成指纹对;
重复上述步骤查找其中一个指纹库中的所有指纹在另一个指纹库中的最相似的一个或多个指纹,分别构成指纹对;
其中,所述指纹对中,键为其中一个指纹库中的某个指纹子集的某个指纹,值为查找到的与所述指纹最相似的另一个指纹库中的一个或多个指纹。
具体地,所述计算所述其中一个指纹库和另一个指纹库中所有同级的指纹子集的相似度上限相似度上限按下式进行计算:
式中,sim(T,D):指纹T和指纹D之间的相似度;m(rj):指纹T所在子集的代表点rj对应的距离图的边数;m(ri):指纹D所在子集的代表点ri对应的距离图的边数;γ:归一化半径;q:指纹T和D的级数;T:指纹库中的任意一个q级指纹;D:与T不在同一个指纹库中的另一指纹库中的任意一个q级指纹;rj:指纹T所在子集的代表点;ri:指纹D所在子集的代表点。
具体地,选择其中一个指纹库中的某个指纹子集,将所述指纹子集的相似度上限分级进行降序排序,根据预先设定的选取值确定所述另一指纹库中的检索目标:
将其中一个指纹库中的某个指纹子集与另一个指纹库中同级的指纹子集的相似度上限进行降序排序;
选取降序排序结果中排在前面的多个指纹子集作为检索目标,所述检索目标中指纹子集的个数与预先设定的选取值相同。
具体地,所述基于所述检索目标,采用分支界定法查找与所述指纹子集中某个指纹最相似的一个或多个指纹包括:
基于所述指纹子集中的某个指纹与所述检索目标中对应的离群点集合中指纹的相似度,根据预先设定的选取值选择最相似指纹的个数,并将其中最小相似度的值作为全局悲观界;
计算所述指纹与所述检索目标中对应的指纹子集中代表点的相似度,并计算所述指纹到检索目标中的各指纹子集的乐观界,并进行降序排序,如果所述指纹到所述检索目标中的指纹子集的某乐观界低于全局悲观界,则从检索目标中删除该指纹子集,直至遍历所述检索目标中所有的指纹子集代表点,基于分支界定法,得到与所述指纹最相近的多个指纹;
其中,指纹个数按照所述预先设定的选取值进行选取。
实施例2:
参照传统的全文索引的流程,语料库之间的快速检索方法也可以划分成两大阶段:生成索引和基于索引的搜索。创建索引的过程是一次性的,只要文档的主要内容和结构不发生变化,对应的索引一般不进行更新操作。
为了便于描述,先将本发明涉及到的相关概念及其符号表示定义如下:
k阶距离:对于给定文档D,其单词序列记作seq(D),单词集合记作N(D)。如果在seq(D)中,单词ni在单词nj之前最多k个位置至少出现过1次,其中ni,nj∈N(D),则称ni到nj的距离为k阶距离,k≥0。
k阶距离图:由N(D)中的所有节点以及连接这些节点的k阶边构成的图,称为该文档的k阶距离图,记作DGk(D)={N(D),Ek(D)},其中,N(D)表示距离图中的节点的集合,节点数量||N(D)||记作n(D),其大小与阶数无关;Ek(D)表示文档D的k阶距离图中边集合,也是文档D对应的k阶边的集合,k阶边集合的大小||Ek(D)||记作mk(D)。对于同一文档,阶数越高,对应的距离图中的边数越多。
级数:级数是对距离图中边的数量和指纹高度的一种度量表示。对于给定的距离图,其级数是确定,由距离图中的边数唯一确定。为保证指纹占用尽量小的空间,对于距离图DGk(D),定义其级数也记作lk(D),表示文档D的k阶距离图的级数。
指纹:距离图的一种二维压缩表示,一般用f表示。一个指纹对应一个宽度w,高度h的2维2进制数组,如图2所示,各列中1的数量是相同的。其中,w主要用来保证指纹的鲁棒性和检索的准确性,其取值一般是固定的,与文档或距离图无关;高度h则与距离图中的边数有关。
指纹高度:指纹对应的2维2进制数组的高度。
q级指纹:由于指纹和距离图一一对应,因此指纹也是有级数的,q级指纹是指纹高度h为2q-1的指纹,记作fq。
q级hash函数:能均匀映射到[0,2q-1]的hash函数称为q级hash函数。
指纹相似度:对于两个大小相同(级数相同)的指纹t和d,假设指纹的宽度为w,高度为h,则它们之间的相似度定义为两个指纹中内容为1的单元格的重合率,用公式表述如下:
其中,fi,j(t):指纹t的下标为(i-1,j-1)的单元的值;m(t):指纹t对应的距离图的边数,也是指纹t的任一列中数值为1的单元的数量;fi,j(d):指纹d的下标为(i-1,j-1)的单元的值;m(d):指纹d对应的距离图的边数,也是指纹t的任一列中数值为1的单元的数量。
分级指纹集:对于语料库C,其所有文档生成的指纹集合记作F(C),简记为F。由于指纹是分级的,F中所有q级指纹的集合,叫做q级指纹集,记作Fq(C),简记为Fq。F={F1,F2,...,Ft},t为F中指纹的最高级数。
指纹子集:由分级指纹集合Fq中的部分指纹构成的集合,即F中部分q级指纹构成的集合,记作Gq。
代表点:对于一个分级指纹子集G,如果有r∈G与G内其他指纹的相似度最大,则称r为G的代表点。
相比于传统的词语、短句、段落等,距离图更能表征文档的结构和内容,表达的更全面,所以基于距离图的文档检索的准确率更高。由于计算机进行逐位操作效率非常高,在进行指纹的相似性度量的过程中,采用了逐位操作,这就带来了更高的处理效率。由于整个文档检索的各阶段都是基于MapReduce的分布式并行框架实现的,所以相比于单机或者串行检索,具有更快的速度。由于MapReduce分布式并行框架可以运行与廉价计算机或者服务器之上,所以,文档并行检索方法更具经济性且具有更高的查询效率。
步骤1:在多个预先构建的指纹库中依次任选两个,为所述两个指纹库分别划分指纹子集。
在传统的基于关键字的检索和全文检索系统中,一般采用倒排索引的结构来保存字、词、短语等及其出现的位置的映射关系。倒排索引一般采用链表的形式进行表示,包括两部分:字/词典和倒排表。其中,字/词典一般由一系列字/词或者短语构成,倒排表则由诸多链表构成,每一条链表对应一个字/词或者短语,记录其出现过的所有文档的ID,链表的每个节点存储一个文档ID,各节点通过链表连接。图4为常见的倒排索引结构示意图。
借鉴倒排索引结构,为文档创建基于二维指纹的索引结构。由于每一个指纹都对应着一篇文档的整体结构,并不需要倒排表,或者说每一个倒排表里面的节点数量都只有1个。这样,倒排索引的结构就从List<Map<word,List<docID>>>这种复杂结构简化成了List<Map<fingerPrint,docID>>。由于一篇文档一般是由大量字(词)或者短语构成的,所以在倒排索引中,不同的字(词)或者短语对应的倒排表中的节点存在大量重复,例如,图3中“lamb”和“stock”同时出现在了ID为15的文档中。由于一篇文档可以生成多个距离图,每个距离图具有不同的阶(order,用于衡量结构图的复杂程度,阶的概念后面会介绍),而每个距离图都可以生成一个指纹,每个指纹对应一个不同的阶,借鉴倒排索引的结构,只不过同一个docID可能出现多次罢了。图4(a)是不考虑指纹级数情况下的基于指纹的索引结构,其中docID为17的文档就有两个指纹,这就是不同的指纹对应着同一文档,或者说一个文档有多个指纹。图4(b)是考虑了指纹级数情况下的索引结构,docID为17的文档的两个指纹的级数分别为11和14。由于相似度计算只能发生在相同大小的指纹之间,所以为了加快查询的速度,将相同级数的指纹聚到一起,将索引结构从List<Map<fingerPrint,docID>>变成List<level,List<Map<fingerPrint,docID>>>,对于某个固定的level,List<Map<fingerPrint,docID>>中的fingerPrint的大小相同。但从本质上讲,图4中的两种索引结构是一样的,图4(a)结构简单,但检索速度慢,而图4(b)则用空间换时间,结构复杂,但检索速度快。如无特殊说明,本发明后续所述文档索引结构均指图4(b)所述结构。
生成索引
从一篇原始文档开始构建该文档对应的指纹的过程如图5所示,主要分成3个步骤:(1)去除停用词;(2)生成距离图;(3)构建指纹,生成索引。
(1)去除停用词
对整个原始文档集(语料库)执行停用词去除操作,得到有效文档集。基于MapReduce对整个原始文档集进行去除停用词操作过程如图6所示。其中map阶段处理逻辑主要包括:
A.map()读取停用词列表;
B.map()读取整篇文档;
C.map()对停用词列表进行遍历,如果文档中出现了该停用词,则替换为空;
D.输出被替换后的文档到分布式文件系统,文件名与原文档保持对应。
(2)生成距离图
为了生成距离图,首先要获取有效文档集的单词列表。基于MapReduce实现单词去重,输入为有效文档集,输出为单词列表,如图7所示。整个过程的主要逻辑如下:
A.在map阶段,map()函数逐个读取单词并生成<word,1>这种形式的键值对。map阶段将reduce()函数作为combine()函数,将本文档内的相同单词进行合并,得到<word,1>键值对;
B.在混洗阶段,按照reduce()函数的单词划分(同一个单词只能在一个reduce节点处理),键值对被传送到对应的reduce节点;
C.在reduce阶段,reduce()函数接收其处理的键值对,将相同的单词合并后输出到分布式文件系统,生成单词列表,输出时只输出单词,且每个单词只输出一次中。
得到单词列表之后,基于MapReduce对各有效文档进行并行处理,得到各文档对应的各阶距离图,具体过程如图8所示。其中map阶段处理的主要逻辑如下:
A.Map()函数读取一篇有效文档;
B.Map()函数对阶数j∈[0,k]进行遍历,k为给定的最高阶数;
C.对于固定的阶数j,Map()函数对有效文档中的单词i进行遍历;
D.对于文档中的每一个单词i,获取其后0到j个数字分别作为值,与i作为键组成键值对;
E.输出以邻接表形式存储的j阶距离图到文件。
(3)构建指纹,生成索引
由于指纹是文档的压缩表示,而hash函数天然具备压缩的性质,所以这里选择hash函数作为生成指纹的方法。又由于文档的长短差异可能非常大,为了能够用尽量少的hash函数覆盖尽可能广的范围,同时尽可能保证一定长度差异范围内的文档可比较,按照指数范围来根据距离图中的边数将指纹划分到不同层级,也就是级,
对于每一层级,都选择w个不同的hash函数构成对应层级的hash函数集,记作所有层级的hash函数集构成了针对语料库的一个hash函数库H={Hlower,Hlower+1,...,Hupper}。同一层级的所有距离图使用相同的hash函数集生成对应的指纹。由于不同级的hash函数的映射范围不同,所以不同级的距离图自然也就使用了不同的hash函数。
从前面级数的定义可知,hash函数库的最小级数和最大级数是由语料库中所有文档对应的距离图的最小边数和最大边数决定的
指纹的计算过程如下:对于给定的距离图DGk(D)={N(D),Ek(D)}和对应的hash函数集以及所有的边通过连接i、‘#’和j创建一个新的字符串,然后将Hk中的所有hash函数直接作用于创建的字符串其中表示连接运算符,得到数值然后将该距离图对应的指纹fk(D)的下标为的单元置1(默认为0)。最终得到的指纹就是填充了0和1的宽为w,高为h的一个二维数组。很显然每一列的1的数字都是相同的。
由于使用hash函数来生成指纹,所以存在映射冲突,即不同的输入得到相同的输出。因此,为了保证指纹的准确性,应当对指纹的高度进行相应的设置,以降低冲突的概率。对于距离图DGk(D),其对应的指纹fk(D)的高度很显然满足hk(D)≥mk(D),否则必存在冲突。而所以可以用作为指纹fk(D)的高度。为了进一步降低冲突的概率,引入了扩充系数α来增加冗余空间,将指纹fk(D)的高度设定为其中α≥0。
基于MapReduce生成某一语料库C对应的指纹集(库)F(C)过程如图9所示。其中map阶段处理的主要逻辑如下:
A.Map()函数读取hash函数库H;
B.Map()函数读取距离图DG(D);
C.Map()函数读取距离图的第一行数据,得到该距离图的边数m;
E.Map()函数根据h=(2l-1)·(1+α)计算出指纹高度,然后创建并初始化一个大小为w·h的2维数组;
G.输出指纹f对应的二维数组到文件,得到各距离图对应的指纹文件。这些指纹一起构成了语料库C的指纹库F(C)。
至此,语料库中的所有文档都生成了对应的指纹,也就意味着针对语料库的索引构建完毕。
相比于在语料库中为1篇文档搜索与之最相似的文档,在多个语料库之间检索最相似的文档对更为复杂,时间开销更大。传统的基于顺序扫描的方式为每一篇文档遍历其他语料库中的所有文档显然是效率非常低的,这就需要我们提出合理的加速方法来缓解这种情况。为了便于表述,我们这里以2个语料库的情形为例,问题简化为:对于语料库C1和C2,查找它们之间所有最为相似的文档对,或者说是在C2中查找与C1中每一个文档最相似的k个文档。当语料库的数量多于两个时,可以依次任选两个语料库进行查找,直至所有的语料查找完毕。
由于指纹的相似度计算只能在同级指纹间进行,所以,我们先将各个语料库按照指纹的级别划分成多个分级子集,如F(C1)={F1(C1),F2(C1),...,Ft(C1)}和F(C2)={F1(C2),F2(C2),...,Fs(C2)}。为了便于描述,我们在下面的表述以C1和C2中同级的q级指纹子集Fq(C1)和Fq(C2)为例展开讨论,其他级别的指纹的处理过程与q级指纹相同。对C1和C2中q级指纹子集Fq(C1)和Fq(C2)进行最相似指纹查找的过程大致如下:①先将指纹子集Fq(C1)和Fq(C2)分别划分成多个子集Fq(C1)={G1(C1),G2(C1),...,Gx(C1)}和Fq(C2)={G1(C2),G2(C2),...,Gx(C2)},并得到每个子集的代表点。②然后根据Fq(C1)的各子集的代表点和Fq(C2)各子集的代表点的相似度关系计算Fq(C1)的各子集与Fq(C2)各子集的相似度的上限。③然后基于这些子集之间的相似度上限进行剪枝,为Fq(C1)中的每一个子集Gi(C1)从Fq(C2)确定不超过k个相似的子集,这些子集作为Gi(C1)的候选子集。④然后对于Gi(C1)中的指纹f,再次通过分支界定法精简候选子集的规模,最后基于顺序扫描的方式遍历精简后的候选子集,为f找到最为相似的k个指纹。⑤最后通过索引,得到原始文档。
(1)子集划分
为了便于表述,我们以Fq(C1)为例,暂记为Fq,介绍一下划分子集的过程(Fq(C2)划分过程是一样的)。该过程主要包括2个阶段,第一阶段主要包括以下步骤:
A.先从Fq随机选出一批指纹构成集合R,这些指纹被称为代表点,R称为代表点集合,每个代表节点又分别对应一个指纹集合,记作Z,初始为空;
B.对Fq中所有指纹f进行顺序扫描;
C.如果f到R中最近点rk的归一化汉明距离不超过归一化半径γ,则将f放到Zk中;
D.否则,将f添加到R中。
对于某一个子集,其代表点代表了该子集,可以视为该子集的中心,要保证子集内的所有节点到其代表点的距离必须约束在一定范围内,也就是说子集是由一个代表点以及一系列围绕该代表点的节点共同构成的一个集合。从前面的定义以及指纹的构成可知,我们选取代表点的依据其实就是汉明距离。由于汉明距离表示两个等长字符串在对应位置上不同字符的数目,在同级指纹集内,由于指纹大小相同,使用汉明距离表征各指纹到代表点的距离以及使用该距离的最大值作为该子集的半径是没有问题的。但是对于多级指纹,由于指纹大小不同,势必造成各级指纹集子集的半径比较的不公平性。例如,将q级指纹集中的某一个子集进行s等比例扩展(各指纹高度变成原来的两倍,指纹各列中1的数量翻倍)得到q+1级的子集s’,很显然,s’的半径变成了s的半径的2倍,但是s’的紧密程度是和s一样的,所以使用半径的绝对值是不太适合跨级子集的比较的。然而,在文档检索过程中,我们是将所有级别的指纹同时进行检索的,所以这里有必要引入一个相对的参数来表征各子集的半径。我们引入归一化半径γ=r/(w·h),它是子集实际半径与指纹大小的比值,归一化汉明距离也是如此。这样,归一化半径就与指纹大小无关了,可以作为跨级比较指纹的一个统一度量。既然是划分子集,则每个子集都应该有一个最小规模的限制,这里引入了临界量μ来表示构建子集应达到的最小规模。
第一阶段的并行过程的主要逻辑如图10所示:
A.在map阶段,map()维护一个代表点集合R;
B.在map阶段,map()从指纹集中读取一条指纹f,然后遍历R,计算f到各代表点的归一化汉明距离,如果f到某代表点ri的归一化汉明距离小于归一化半径γ,则输出<ri,f>;否则,输出<0,f>;
C.在reduce阶段,reduce()函数为各代表点收集归属到其代表的集合中的指纹,例如,将键为ri的键值对的值都收集起来生成Zi,键为0的键值对的值都添加到R中,如图10中的ft所示。
第一阶段结束后,我们会得到一个代表点集合R={r1,r2,...,rk}和对应各代表点的指纹集合Z={Z1,Z2,...,Zk},虽然某些Zi中的指纹数量可能并没有达到临界量μ的要求。此时,Fq={R,Z},Ft中的指纹要么在R中,要么在Z中(代表点ri不会在其对应的Zi中重复出现)。对于规模小于临界量μ的指纹集合Zi,其中的指纹面临2个选择:要么被重新划分到其他代表点对应的集合中,要么放大离群点集合中。
第二阶段如下:
A.创建一个临时指纹集合,用tmp表示,创建一个离散点集合O,并初始化为空;
B.对Z进行遍历操作,如果Zi的规模小于临界量μ,则将对应的代表点ri从R中移出,并将ri与Zi中所有指纹一起放到临时指纹集合tmp中;
C.对临时指纹集合tmp中的指纹进行遍历,如果某指纹f到R中某代表点rj的归一化汉明距离小于归一化半径γ,则将该指纹从R中移到Zj中;否则,将f添加到O集合中;
生成临时指纹集合tmp的过程如图11所示,主要包括以下几个步骤:
A.在map阶段,map()函数读取子集划分Gi,这里R也被当做一个子集。
B.在map阶段,map()函数判断Gi的大小,如果大于临界量μ,则不输出任何内容;否则,将Gi中的所有内容,连同ri,分别作为值,与临时指纹集合tmp为键组成键值对输出,同时输出<0,-ri>表示ri应当从R中移除;
C.在reduce阶段,2个reduce节点分别为临时指纹集合tmp为键的键值对和0为键的键值对,对于临时指纹集合tmp为键的键值对,将键值对中的值合并到一起,形成临时指纹集合tmp;而对于0为键的键值对,将那些需要移除的代表点从R中移除。
至于对临时指纹集合tmp进行遍历以重新分配其中的指纹的过程,与第一阶段类似,Zi不变,只是把R改成了O,如下所述:
A.在map阶段,map()维护一个代表点集合R;
B.在map阶段,map()从指纹集O中读取一条指纹f,然后遍历R,计算f到各代表点的归一化汉明距离,如果f到某代表点ri的归一化汉明距离小于归一化半径γ,则输出<ri,f>;否则,输出<0,f>;
C.在reduce阶段,reduce()函数为各代表点收集归属到其代表的集合中的指纹,例如,将键为ri的键值对的值都收集起来生成Zi,键为0的键值对的值都添加到R中。
步骤2:采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对。
前面操作后得到3种集合:1个代表点集合R,1个离群点集合O,和一系列指纹子集Fq={G1,G2,…,Gk}。对于C1和C2,它们分别对应一个代表点集合R(C1)和R(C2),和1个离群点集合O(C1)和O(C2),以及划分指纹子集集合Fq(C1)和Fq(C2)。
这里先给出Fq(C1)中指纹子集Gi(C1)中任一指纹T和Fq(C2)中指纹子集Gj(C2)任一指纹D的相似度的上限。由于前面给出的T与Gj(C2)中任一指纹的相似度的上限为:
其中,q为T和D的级数,rj为子集Gj(C2)中的代表点。
以某一级的指纹子集为例,介绍一下实施过程:
A.按照上面的公式计算并行计算Fq(C1)的各指纹子集Gi(C1)到Fq(C2)中指纹子集Gj(C2)的相似度的上限,如图12的map阶段所示;
C.对于中的任意指纹f,假设其级别为q,遍历C2中对应等级的离群点集合Oq,寻找k个与f最相似的指纹,将指纹与相似度组成键值对<ot,sim(f,ot)>,并添加到gbpList列表中,表示到目前为止与f最相似的k个指纹以及相似度的集合。并将这k个指纹相似度的最小值作为指纹f对应的全局悲观界gbp(f),其中,k为预先设定的选取值,是中指纹数量;
D.计算f到中各子集的代表点的相似度,根据相似度,更新gbpList(f)以及全局悲观界gbp(f),然后根据相似度计算f到各子集的乐观界,然后按乐观界进行降序排序,如果f到某子集的乐观界低于全局悲观界gbp,则对该子集剪枝,这是第2次剪枝,更新过程见图13,确定检索目标,其中图13中的s为检索目标中指纹数量;
F.将f作为键,将k个指纹作为值生成指纹对,并输出。
G.根据指纹索引找到k个指纹对应的k个原始文档。
上述过程对于语料库C1和C2的所有级别的指纹子集,以及指纹子集集合Fq(C1)和Fq(C2)的所有指纹子集,以及所有指纹子集内的所有指纹,都是通用的,且都是可以并行开展的。
步骤3:所述指纹对分别对应的所述一个指纹库的文档与所述另一个指纹库的文档为检索出的所述两个语料库中最相似的文档。
实施例3:
基于同一种发明构思,本发明还提供了一种语料库之间的快速全文检索系统,如图15所示,包括划分模块、查找模块和结果模块:
划分模块:用于在多个预先构建的指纹库中依次任选两个,为所述两个指纹库分别划分指纹子集;
查找模块:用于采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对;
结果模块:用于所述指纹对分别对应的所述一个指纹库的文档与所述另一个指纹库的文档为检索出的所述两个语料库中最相似的文档;
其中,每个指纹库分别基于一个语料库构建,每个语料库包含多个文档,每个文档对应多个指纹子集。
划分模块中,所述指纹库的构建包括:
基于每个语料库,对所述语料库中所有文档的全文执行停用词去除操作,得到有效文档集;
基于所述有效文档集,生成语料库中文档对应的距离图;
按照所述距离图中的边数将指纹划分到不同层级,生成指纹索引,构建所述语料库对应的指纹库。
具体地,所述划分指纹子集包括:
基于所述指纹索引,将指纹库按照指纹高度分组,得到分级指纹集;
基于分级指纹集,得到各分级指纹集的代表点集合和对应各代表点的指纹集合;
基于各分级指纹集的代表点集合和对应各代表点的指纹集合,根据归一化半径和预先设置的指纹子集最小规模临界量划分并行子集;
其中,所述代表点为分级指纹集合中与内其他指纹的相似度最大的指纹。
具体地,所述基于分级指纹集,得到各分级指纹集的代表点集合和对应各代表点的指纹集合包括:
随机选取所述各分级指纹集中的一批指纹构成的代表点集合,对所述各分级指纹集中的指纹进行顺序扫描,如果指纹到所述代表点集合中最近代表点的归一化汉明距离不超过归一化半径,则将该指纹放入最近代表点对应的集合中,否则放入代表点集合中,直至所述各分级指纹集中的指纹扫描完毕,得到各分级指纹集的代表点集合和对应各代表点的指纹集合。
具体地,所述基于各分级指纹集的代表点集合和对应各代表点的指纹集合,根据归一化半径和预先设置的指纹子集最小规模临界量划分指纹子集包括:
对一个对应代表点的指纹集合进行遍历,如果指纹的规模小于预先设置的指纹子集最小规划临界量,则将与所述指纹对应的代表点从代表点集合中移出,并将所述代表点与所述指纹一起放到临时指纹集合中;
遍历所述临时指纹集合,若所述指纹与其对应的代表点的归一化汉明距离小于归一化半径,则将所述指纹从所述代表点集合中移到对应代表点的指纹集合中;否则,将指纹添加到大离群点集合中;
代表点集合中剩余的代表点与对应的指纹集合构成了一个指纹子集;所述代表点为指纹集合中与内其他指纹的相似度最大的指纹。
将所有对应各代表点的指纹集合进行划分,生成指纹子集。
查找模块中:采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对包括:
计算其中一个指纹库和另一个指纹库中的所有同级的指纹子集的相似度上限;
将其中一个指纹库中的某个指纹子集与另一个指纹库中同级的指纹子集的相似度上限进行降序排序,根据预先设定的选取值确定所述另一指纹库中的检索目标;
基于所述检索目标,采用分支界定法查找与所述指纹子集中某个指纹最相似的一个或多个指纹,构成指纹对;
重复上述步骤查找其中一个指纹库中的所有指纹在另一个指纹库中的最相似的一个或多个指纹,分别构成指纹对;
其中,所述指纹对中,键为其中一个指纹库中的某个指纹子集的某个指纹,值为查找到的与所述指纹最相似的另一个指纹库中的一个或多个指纹。
具体地,所述计算所述其中一个指纹库和另一个指纹库中所有同级的指纹子集的相似度上限相似度上限按下式进行计算:
式中,sim(T,D):指纹T和指纹D之间的相似度;m(rj):指纹T所在子集的代表点rj对应的距离图的边数;m(ri):指纹D所在子集的代表点ri对应的距离图的边数;γ:归一化半径;q:指纹T和D的级数;T:指纹库中的任意一个q级指纹;D:与T不在同一个指纹库中的另一指纹库中的任意一个q级指纹;rj:指纹T所在子集的代表点;ri:指纹D所在子集的代表点。
具体地,选择其中一个指纹库中的某个指纹子集,将所述指纹子集的相似度上限分级进行降序排序,根据预先设定的选取值确定所述另一指纹库中的检索目标:
将其中一个指纹库中的某个指纹子集与另一个指纹库中同级的指纹子集的相似度上限进行降序排序;
选取降序排序结果中排在前面的多个指纹子集作为检索目标,所述检索目标中指纹子集的个数与预先设定的选取值相同。
具体地,所述基于所述检索目标,采用分支界定法查找与所述指纹子集中某个指纹最相似的一个或多个指纹包括:
基于所述指纹子集中的某个指纹与所述检索目标中对应的离群点集合中指纹的相似度,根据预先设定的选取值选择最相似指纹的个数,并将其中最小相似度的值作为全局悲观界;
计算所述指纹与所述检索目标中对应的指纹子集中代表点的相似度,并计算所述指纹到检索目标中的各指纹子集的乐观界,并进行降序排序,如果所述指纹到所述检索目标中的指纹子集的某乐观界低于全局悲观界,则从检索目标中删除该指纹子集,直至遍历所述检索目标中所有的指纹子集代表点,基于分支界定法,得到与所述指纹最相近的多个指纹;
其中,指纹个数按照所述预先设定的选取值进行选取。
上述实施例表明,本发明提供的技术方案采用散列函数将距离图压缩成二维指纹的并行计算方法,并给出了基于位操作的快速二维指纹相似性计算方法及其并行实现方法,同时还采用基于多次分支界定法的快速搜索方法。通过批量剪枝操作,大规模精简待搜索文档的目标集合的规模和检索过程。在全文检索的各阶段都是基于MapReduce的分布式并行框架实现的,相比于单机或者串行检索,具有更快的速度,并且对于计算机的硬件要求低,适用性强,易于推广。
显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。
Claims (6)
1.一种语料库之间的快速全文检索方法,其特征在于,包括:
在多个预先构建的指纹库中依次任选两个,为所述两个指纹库分别划分指纹子集;
采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对;
所述指纹对分别对应的所述一个指纹库的文档与所述另一个指纹库的文档为检索出的所述两个语料库中最相似的文档;
其中,每个指纹库分别基于一个语料库构建,每个语料库包含多个文档,每个文档对应多个指纹子集;
所述指纹库的构建包括:
基于每个语料库,对所述语料库中所有文档的全文执行停用词去除操作,得到有效文档集;
基于所述有效文档集,生成语料库中文档对应的距离图;
按照所述距离图中的边数将指纹划分到不同层级,生成指纹索引,构建所述语料库对应的指纹库;
所述划分指纹子集包括:
基于所述指纹索引,将指纹库按照指纹高度分组,得到分级指纹集;
基于分级指纹集,得到各分级指纹集的代表点集合和对应各代表点的指纹集合;
基于各分级指纹集的代表点集合和对应各代表点的指纹集合,根据归一化半径和预先设置的指纹子集最小规模临界量划分并行子集;
其中,所述代表点为分级指纹集合中与内其他指纹的相似度最大的指纹;
所述基于分级指纹集,得到各分级指纹集的代表点集合和对应各代表点的指纹集合包括:
随机选取所述各分级指纹集中的一批指纹构成的代表点集合,对所述各分级指纹集中的指纹进行顺序扫描,如果指纹到所述代表点集合中最近代表点的归一化汉明距离不超过归一化半径,则将该指纹放入最近代表点对应的集合中,否则放入代表点集合中,直至所述各分级指纹集中的指纹扫描完毕,得到各分级指纹集的代表点集合和对应各代表点的指纹集合;
所述基于各分级指纹集的代表点集合和对应各代表点的指纹集合,根据归一化半径和预先设置的指纹子集最小规模临界量划分指纹子集包括:
对一个对应代表点的指纹集合进行遍历,如果指纹的规模小于预先设置的指纹子集最小规划临界量,则将与所述指纹对应的代表点从代表点集合中移出,并将所述代表点与所述指纹一起放到临时指纹集合中;
遍历所述临时指纹集合,若所述指纹与其对应的代表点的归一化汉明距离小于归一化半径,则将所述指纹从所述代表点集合中移到对应代表点的指纹集合中;否则,将指纹添加到大离群点集合中;
代表点集合中剩余的代表点与对应的指纹集合构成了一个指纹子集;所述代表点为指纹集合中与内其他指纹的相似度最大的指纹;
将所有对应各代表点的指纹集合进行划分,生成指纹子集。
2.如权利要求1所述的语料库之间的快速全文检索方法,其特征在于,采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对;包括:
计算其中一个指纹库和另一个指纹库中的所有同级的指纹子集的相似度上限;
将其中一个指纹库中的某个指纹子集与另一个指纹库中同级的指纹子集的相似度上限进行降序排序,根据预先设定的选取值确定所述另一指纹库中的检索目标;
基于所述检索目标,采用分支界定法查找与所述指纹子集中某个指纹最相似的一个或多个指纹,构成指纹对;
重复上述步骤查找其中一个指纹库中的所有指纹在另一个指纹库中的最相似的一个或多个指纹,分别构成指纹对;
其中,所述指纹对中,键为其中一个指纹库中的某个指纹子集的某个指纹,值为查找到的与所述指纹最相似的另一个指纹库中的一个或多个指纹。
4.如权利要求2所述的语料库之间的快速全文检索方法,其特征在于,选择其中一个指纹库中的某个指纹子集,将所述指纹子集的相似度上限分级进行降序排序,根据预先设定的选取值确定所述另一指纹库中的检索目标:
将其中一个指纹库中的某个指纹子集与另一个指纹库中同级的指纹子集的相似度上限进行降序排序;
选取降序排序结果中排在前面的多个指纹子集作为检索目标,所述检索目标中指纹子集的个数与预先设定的选取值相同。
5.如权利要求2所述的语料库之间的快速全文检索方法,其特征在于,所述基于所述检索目标,采用分支界定法查找与所述指纹子集中某个指纹最相似的一个或多个指纹包括:
基于所述指纹子集中的某个指纹与所述检索目标中对应的离群点集合中指纹的相似度,根据预先设定的选取值选择最相似指纹的个数,并将其中最小相似度的值作为全局悲观界;
计算所述指纹与所述检索目标中对应的指纹子集中代表点的相似度,并计算所述指纹到检索目标中的各指纹子集的乐观界,并进行降序排序,如果所述指纹到所述检索目标中的指纹子集的某乐观界低于全局悲观界,则从检索目标中删除该指纹子集,直至遍历所述检索目标中所有的指纹子集代表点,基于分支界定法,得到与所述指纹最相近的多个指纹;
其中,指纹个数按照所述预先设定的选取值进行选取。
6.一种执行权利要求1~5任一项所述的语料库之间的快速全文检索方法的系统,其特征在于,所述系统包括划分模块、查找模块和结果模块:
划分模块:用于在多个预先构建的指纹库中依次任选两个,为所述两个指纹库分别划分指纹子集;
查找模块:用于采用分支界定法,基于其中一个指纹库的每个文档对应的指纹子集中的指纹,在另一指纹库中分别查找与所述指纹最相似的一个或多个指纹,构成一个指纹对;
结果模块:用于所述指纹对分别对应的所述一个指纹库的文档与所述另一个指纹库的文档为检索出的所述两个语料库中最相似的文档;
其中,每个指纹库分别基于一个语料库构建,每个语料库包含多个文档,每个文档对应多个指纹子集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910780462.2A CN110866088B (zh) | 2019-08-22 | 2019-08-22 | 一种语料库之间的快速全文检索方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910780462.2A CN110866088B (zh) | 2019-08-22 | 2019-08-22 | 一种语料库之间的快速全文检索方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110866088A CN110866088A (zh) | 2020-03-06 |
CN110866088B true CN110866088B (zh) | 2020-10-30 |
Family
ID=69652162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910780462.2A Active CN110866088B (zh) | 2019-08-22 | 2019-08-22 | 一种语料库之间的快速全文检索方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110866088B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100318B (zh) * | 2020-11-12 | 2021-02-26 | 北京智慧星光信息技术有限公司 | 一种多维度信息合并方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108573045A (zh) * | 2018-04-18 | 2018-09-25 | 同方知网数字出版技术股份有限公司 | 一种基于多阶指纹的比对矩阵相似度检索方法 |
CN109189934A (zh) * | 2018-11-13 | 2019-01-11 | 平安科技(深圳)有限公司 | 舆情推荐方法、装置、计算机设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786963A (zh) * | 2016-01-25 | 2016-07-20 | 汇智明德(北京)教育科技有限公司 | 一种语料库的检索方法及系统 |
US10083353B2 (en) * | 2016-10-28 | 2018-09-25 | Intuit Inc. | Identifying document forms using digital fingerprints |
CN109214246B (zh) * | 2017-07-04 | 2021-02-12 | 清华大学深圳研究生院 | 基于全局方向信息的指纹检索方法 |
CN109344407B (zh) * | 2018-10-29 | 2024-02-09 | 天融信雄安网络安全技术有限公司 | 基于语义的文档指纹构建方法、存储介质和计算机设备 |
CN109918488A (zh) * | 2019-02-02 | 2019-06-21 | 上海蜜度信息技术有限公司 | 用于相似文档检索的方法与设备 |
-
2019
- 2019-08-22 CN CN201910780462.2A patent/CN110866088B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108573045A (zh) * | 2018-04-18 | 2018-09-25 | 同方知网数字出版技术股份有限公司 | 一种基于多阶指纹的比对矩阵相似度检索方法 |
CN109189934A (zh) * | 2018-11-13 | 2019-01-11 | 平安科技(深圳)有限公司 | 舆情推荐方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110866088A (zh) | 2020-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10521441B2 (en) | System and method for approximate searching very large data | |
US10579661B2 (en) | System and method for machine learning and classifying data | |
Cohen et al. | Learning to match and cluster large high-dimensional data sets for data integration | |
Navarro | Spaces, trees, and colors: The algorithmic landscape of document retrieval on sequences | |
US8533203B2 (en) | Identifying synonyms of entities using a document collection | |
Yao et al. | K nearest neighbor queries and knn-joins in large relational databases (almost) for free | |
CN111324750B (zh) | 一种大规模文本相似度计算及文本查重方法 | |
US20100106713A1 (en) | Method for performing efficient similarity search | |
KR100903961B1 (ko) | 시그니처 파일을 이용한 고차원 데이터 색인 및 검색방법과 그 시스템 | |
JP2009110513A (ja) | ワードの類似性を用いたオントロジーの自動生成 | |
CN107291895B (zh) | 一种快速的层次化文档查询方法 | |
CN107403075A (zh) | 比对方法、装置及系统 | |
CN106095951B (zh) | 基于负载均衡和查询日志的数据空间多维索引方法 | |
CN105224624A (zh) | 一种实现倒排链快速归并的方法和装置 | |
CN110866088B (zh) | 一种语料库之间的快速全文检索方法及系统 | |
CN108920705B (zh) | 一种知识点标识的编码方法及装置 | |
CN114036371A (zh) | 搜索词推荐方法、装置、设备和计算机可读存储介质 | |
KR102006283B1 (ko) | 패스트맵을 이용한 데이터셋의 m-트리 적재방법 | |
CN112417091A (zh) | 一种文本检索方法及装置 | |
CN114896480B (zh) | 基于路网索引的Top-K空间关键字查询方法 | |
US11482304B2 (en) | Alignment methods, devices and systems | |
CN110704579B (zh) | 一种基于分支界定的全文检索方法及系统 | |
US20170075989A1 (en) | Search method | |
JP2010191962A (ja) | オントロジーの類似性行列の効率的な計算 | |
CN110704645B (zh) | 一种基于指纹的语料库全文检索方法及系统 |
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 |