一种基于多阶指纹的比对矩阵相似度检索方法与流程

文档序号:15518120发布日期:2018-09-25 18:49阅读:1301来源:国知局

本发明涉及文本挖掘和计算机信息处理技术领域,尤其涉及一种基于多阶指纹的比对矩阵相似度检索方法。



背景技术:

随着计算机对文本信息等各种自然语言处理应用的普及,面临当今社会日益复杂的需求,人们对计算机文本处理提出了更高的要求。在相似度检索领域,现在已有的方法具有不可复制性,需要大量的硬件支撑和特殊数据库的支持,因此无法满足企业多样化的需求。尤其针对国企、机关事业单位以及国家保密机构等,由于数据需要保密不能使用公开的相似度检索系统。面临日益增多的项目申报需求,只能够通过传统的人工方式来对所有申报项目进行相似排查,大量的耗费了人力,物力,财力。因此人们迫切需要一种轻量级的相似度检索机制来处理这些问题。

一般地,相似度检索方法通常分为三种:1、将文本表示成文本词频向量,通过计算词频向量之间的距离得到文本的相似度。然而现有的文本词频向量方法需要能够从文本中抽取大量的词汇,因此只适用于长文本。2、通过将文本表示成多阶指纹的形式进行相似度计算,由于多阶指纹通过对文本进行编码再计算,因此此方法能够计算相似度但不能够精确表引出相似内容。3、通过机器学习的方法计算,由于机器学习需要大量的语料进行训练和高效的硬件系统来支撑,因此不能够应对轻量级相似度检索的需求。



技术实现要素:

为解决上述技术问题,本发明的目的是提供一种基于多阶指纹的比对矩阵相似度检索方法,该方法首先通过多阶指纹来标识每篇文本,以此来初步查询出相似文本,之后再针对相似文本构造比对矩阵来精确查找并标引相似内容。所述方法提高了申报项目查重比对的效率,减少了人力物力等资源的浪费,解决了现有相似度检索机制不能够有效迁移的问题。

本发明的目的通过以下的技术方案来实现:

一种基于多阶指纹的比对矩阵相似度检索方法,包括:

a将文本进行碎片化处理,保存于数据库并将文本数据清洗形成统一格式文本;

b将统一格式文本使用simhash算法进行编码,形成64位二进制的多阶指纹特征值并保存于数据库;

c计算要进行相似比对文本的特征值与其他文本特征值之间的海明距离,并选取海明距离小于阈值为3的文本进行二次计算;

d将原文本与比对文本两两构建比对矩阵,计算文本相似度和相似内容并标记输出;

e对文本相似度和相似度内容计算方法进行优化,该优化方法采用并行计算实用多个线程同时计算。

与现有技术相比,本发明的一个或多个实施例可以具有如下优点:

该方法通过对文本进行细粒度划分构建文本比对矩阵来进行相似度计算,之后通过设定阈值精确查找在文本之间的相似内容并标记。本算法通过运用构造比对矩阵,并使用多线程优化了比对速度并提高了比对结果的准确性。

附图说明

图1是基于多阶指纹的比对矩阵相似度检索方法流程图;

图2是数据库统一结构表图;

图3是数据统一格式后的图例;

图4是64位simhash多阶指纹特征值列表图;

图5是64位simhash特征值拆分表图;

图6是基于多阶指纹的比对矩阵相似度检索方法详细流程图;

图7是一对多查重结果展示图;

图8是一对一精确查重结果展示图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合实施例及附图对本发明作进一步详细的描述。

如图1所示,为基于多阶指纹的比对矩阵相似度检索方法,包括:

步骤10将文本进行碎片化处理,保存于数据库并将文本数据清洗形成统一格式文本;

将word,pdf等格式的文本通过程序识别,统一格式并保存在数据库内。如图2所示,为数据库统一结构,其中属性f_article_title为每篇文本标题,f_after_content为去除html标签的文本全文,本方法主要使用属性f_after_content的全文信息。

如图3所示为文本格式化后的内容。

步骤20将统一格式文本使用simhash算法进行编码,形成64位二进制的多阶指纹特征值并保存于数据库中的simhash字段(如图4所示);

同时计算并保存文本的相关数据例如:文本字数以及提取的关键词和关键词权重。

simhash算法分为五个步骤:分词,hash,加权,合并,降维。

对文本进行分词并去除对全文内容没有影响的词汇,例如介词,副词等。为每个词赋予权重,权重采用词频来计算。权重越大说明该词汇在文中出现次数越多。

通过hash函数计算每个词的特征值,并用二进制的0和1组成n-bit签名,使字符串变成一系列数字。

在hash值的基础上,给所有特征值进行加权,即w=hash*weight,且遇到1则hash值和权值正相乘,遇到0则hash值和权值负相乘。

将上述各个特征值的加权结果累加,变成只有一个序列串。

对于n-bit签名的累加结果,如果大于0则置1,否则置0,从而得到该语句的simhash值。

步骤30计算要进行相似比对文本的特征值与其他文本特征值之间的海明距离,并选取海明距离小于阈值为3的文本进行二次计算;

海明距离的求法是:异或时,只有在两个比较的位不同时其结果是1,否则结果为0,两个二进制“异或”后得到1的个数即为海明距离的大小。

如果逐一计算海明距离会进行n2次计算(设数据库的数据量为n),因此如果数据库存储数据量过大会耗费很长时间。因此为提高效率提出了时间与空间多表索引方法。

为加快海明距离计算速度方便查找相似文本,建立新表simhashmap以拆分64位simhash编码,拆分表如图5所示,该方法基于抽屉原理,如果两个simhash值的海明距离在3以内,则它们切分成的m(m≤64)块中,必有l-3块相等。为提高检索效率,同时兼顾空间开销,本文设m=8,将每个simhash值均分为8块,为所有的simhash值创建8个表,不同的表存储不同位置的块,如第一个表存储0-7位,第二个表存储8-15位,第三个表存储16-23位等,表中同样使用倒排索引,由8位比特串索引simhash值。

当依据某simhash检索海明距离在3以内的其他simhash值时,将该simhash平分为8块,每块在相应的表寻找相似块,取相似块对应的simhash集合,筛选出至少在5个块对应的集合中出现的simhash值,然后逐一计算汉明距离。假如simhash平均分布,则该方法使海明距离计算次数减至总数的0.375次方。

步骤40将原文本与比对文本两两构建比对矩阵,计算文本相似度和相似内容并标记输出;

1、将两篇比对文本由粗粒度转化成细粒度,设比对文本和被比对文本为:

d={d1,d2,d3,...,dn},m={m1,m2,m3,...,mk},其中d和m为原始文本语句粒度的集合,其中d和m为拆分出的语句,n和k表示文本语句的数量;

2、由原始文本语句粒度的集合对文本集合进行相似度计算,并构建比对矩阵p:

其中,pnk为原始文本dn与比对文本中mk计算相似度所得结果,计算公式为:

其中,lcs(dn,mk)为dn与mk中相同字的数量,num(dn)为语句dn的字数,num(mk)为语句mk的字数;由此可得相同的字数分别占原始语句与比对语句的比值,并取比值较小的当做pnk的最终结果;

3、设定阈值similarweight,并构建邻接矩阵;

阈值的范围为0到1的取值,并且可以通过人为调整以应对不同项目对精确度的不同要求,将对比矩阵p中的所有值与阈值similarweight进行比较,大于阈值则设为1,小于阈值设为0从而构建n行k列的邻接矩阵q:

拆分原始文本的simhash值,并将各个位置的拆分值通过simhashmap表快速查找,将所有满足条件结果的simhash值进行海明距离计算,并筛选出海明距离小于阈值的记录(一般情况下阈值设为3)进行精确相似度计算,计算过程如图6所示。

4、通过邻接矩阵找到文本比对相似处进行精确判断并标注;

设定阈值rightweight,所述阈值rightweight在0-1之间且大于similarweight,对照邻接矩阵标记处的pnk值进行排查,大于阈值的部分直接标记为相似并存储该对相似语句在两篇比对文本中出现的位置;

对于小于阈值rightweight的部分,通过其所在的行列位置找到对应语句并进行分词,同时加入近义词库进行语义判断,其判断公式如下:

其中,rightwords(dn,mk)表示分词之后相同词的字的数量,表示在原始文本d的语句dn中相似词语的字数,表示在比对文本m的语句mk中相似词语的字数,wnk表示在分词并加入相似词库之后相似文本在原始文本语句和背对文本语句中所占的比值的较小值。当wnk大于或者等于阈值rightweight时标记为相似。

步骤50对文本相似度和相似度内容计算方法进行优化,该优化方法采用并行计算实用多个线程同时计算;

由于构建比对矩阵时需要计算两两比对中所有语句的相似度,即需要经过n*k次计算,而且随着比对篇幅的增加会加大运算时间,因此采用并行计算方法使用多个线程同时计算。然而,线程开启过多时,又会使线程调度时间过长而达不到理想效果,因此经过大量文本测试,文本比对总字数在各个区间时,选取在各区间线程数的最优解。由于线程数不同,需要将比对矩阵进行切分,使原始比对矩阵转换化成相对较小的比对矩阵进行并行计算。

其转化方法如下:

本算法通过限制单次比对语句数来达到限制线程数的效果,设单次比对语句数量为t,则开启线程数v的计算公式为:

其中ceiling函数是取整函数同时只要存在小数则加1。

比对矩阵切分方法为(存在小数情况):

将上述p’中的多个矩阵同时加入线程并行计算,以充分利用空间和时间资源提高效率。

查重结果展示分为一对多查重和一对一查重,一对多查重是指原始文本与多篇相似文本比对的结果,一对一查重指原始文本与单篇相似文本的比对结果。申报项目查重只针对历年以来所申报的项目,数据量较小但更加注重所申报项目的精确性,因此有必要进行一对一单篇针对性比较。

一对多比对结果展示如图7所示,一对一比对结果展示如图8所示,在一对一查重比对中,左右两篇文本黑色加粗语句对应的角标相同则为相似内容。

虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1