一种流程图的查重方法

文档序号:32312900发布日期:2022-11-23 13:10阅读:159来源:国知局
1.本发明涉及图像处理领域,尤其涉及一种流程图的查重方法。
背景技术
::2.一个优秀论文检测系统就需要满足两个条件:一是比对数据库得全面;二要计算相似率的算法合理,能找出论文中真正相似的内容。3.传统的查重技术如paperpass和知网主要针对段落中的文字内容与数据库进行比对,通过界定阈值从而达到查重效果。然而就目前而言,有关流程图的查重系统依旧不是很完善,使学术诚信的建立存在漏洞。4.流程图中包含文字与流程框架两部分,在查重过程中不仅需要关注文字部分,还需要关注它的结构性质,这是传统查重方法所不具备的。技术实现要素:5.有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是现有的查重方法不适用于流程图的查重,流程图中的文字和结构的查重功能均无法实现。因此,本发明提供了一种流程图的查重方法,通过分别计算待检测流程图和对比流程图之间的文本相似度和结构相似度,兼顾了文字和框架的查重,提高精度,优化查重效果,节省了大量的人力成本,为图文结合的相似度检测提供了更多的可能。6.为实现上述目的,本发明提供了一种流程图的查重方法,包括以下步骤:7.步骤一、输入包含流程图的彩色图像文件,提取流程图中文本框内的句子和坐标,用文本框内颜色填充句子所在区域,并将彩色图像转换为二值图像;8.步骤二、定义上、下、左、右四个方向的箭头模板;9.步骤三、利用harris角点检测法确定流程图图像中的角点,根据角点邻域与箭头模板之间的汉明距离识别位于箭头的角点;10.步骤四、搜索与箭头相邻的文本框,建立文本框间的邻接矩阵;11.步骤五、计算待检测流程图与对比流程图之间的文本相似度,并记录相似编号序列;12.步骤六、计算待检测流程图与对比流程图之间的结构相似度,并将文本相似度与结构相似度的乘积作为待检测流程图的重复分数。13.进一步地,输入包含流程图的彩色图像文件,提取流程图中文本框内的句子和坐标,用文本框内颜色填充句子所在区域,并将彩色图像转换为二值图像,具体包括以下步骤:14.(1)输入包含流程图的彩色图像文件,彩色图像文件中每个像素包含r,g和b三种颜色值;15.(2)调用百度ai接口,读取彩色图像文件,提取流程图中文本框内的句子,以及句子所在的区域的左上角和右下角坐标,并对每句句子按其提取顺序依次编号;16.(3)用文本框内颜色填充句子所在区域;17.(4)将图像中符合r,g和b三种颜色值都大于200的像素用0表示,其余的像素值用1表示,将彩色图像件转换为二值图像。18.进一步地,定义上、下、左、右四个方向的箭头模板,具体包括以下步骤:19.(1)定义7*7大小的矩阵,将矩阵中位于第1行第4列元素,第2行第3列开始向右3个元素,第3行第2列开始向右5个元素,第4行第1列开始向右7个元素的数值设置为1,其余元素设置为0,将矩阵定义为向上方向的箭头模板;20.(2)定义7*7大小的矩阵,将矩阵中位于第7行第4列元素,第6行第3列开始向右3个元素,第5行第2列开始向右5个元素,第4行第1列开始向右7个元素的数值设置为1,其余元素设置为0,将矩阵定义为向下方向的箭头模板;21.(3)定义7*7大小的矩阵,将矩阵中位于第4行第1列元素,第3行第2列开始向下3个元素,第2行第3列开始向下5个元素,第1行第4列开始向下7个元素的数值设置为1,其余元素设置为0,将矩阵定义为向左方向的箭头模板;22.(4)定义7*7大小的矩阵,将矩阵中位于第4行第7列元素,第3行第6列开始向下3个元素,第2行第5列开始向下5个元素,第1行第4列开始向下7个元素的数值设置为1,其余元素设置为0,将矩阵定义为向右方向的箭头模板。23.进一步地,利用harris角点检测法确定流程图图像中的角点,根据角点邻域与箭头模板之间的汉明距离识别位于箭头的角点,具体包括以下步骤:24.(1)将步骤一输入的包含流程图的彩色图像转换为灰度图像,利用harris角点检测法确定灰度图像中的角点;25.(2)以角点向右第3个像素为中心,从步骤一得到的二值图像中取7*7大小的像素矩阵,将像素矩阵与向上方向的箭头模板计算汉明距离,若两个矩阵相同位置的像素值相同,则汉明距离为0,若矩阵相同位置的像素值不同,则汉明距离为1,并将7*7矩阵上的所有位置的汉明距离相加,得到向上方向的汉明距离;26.(3)以角点向右第3个像素为中心,从步骤一得到的二值图像中取7*7大小的像素矩阵,将像素矩阵与向下方向的箭头模板计算汉明距离,若两个矩阵相同位置的像素值相同,则汉明距离为0,若矩阵相同位置的像素值不同,则汉明距离为1,并将7*7矩阵上的所有位置的汉明距离相加,得到向下方向的汉明距离;27.(4)以角点向下第3个像素为中心,从步骤一得到的二值图像中取7*7大小的像素矩阵,将像素矩阵与向左方向的箭头模板计算汉明距离,若两个矩阵相同位置的像素值相同,则汉明距离为0,若矩阵相同位置的像素值不同,则汉明距离为1,并将7*7矩阵上的所有位置的汉明距离相加,得到向左方向的汉明距离;28.(5)以角点向下第3个像素为中心,从步骤一得到的二值图像中取7*7大小的像素矩阵,将像素矩阵与向右方向的箭头模板计算汉明距离,若两个矩阵相同位置的像素值相同,则汉明距离为0,若矩阵相同位置的像素值不同,则汉明距离为1,并将7*7矩阵上的所有位置的汉明距离相加,得到向右方向的汉明距离;29.(6)在向上,向下,向左,向右四个方向的汉明距离中取最小的距离值,如果该距离值小于阈值t1,则该角点为位于箭头的角点,否则该角点不是位于箭头的角点。30.进一步地,搜索与箭头相邻的文本框,建立文本框间的邻接矩阵,具体包括以下步骤:31.(1)对于有n个文本框的流程图,定义n*n大小的零矩阵作为邻接矩阵;32.(2)将步骤一得到的二值图像中,所有句子所在区域的像素值均修改为2,从步骤三中得到的位于箭头的角点出发,沿着箭头的连接线的两端搜索,一旦直到找到像素值为2的点,则记录该点所属文本框中包含句子的编号;33.(3)对于同一个箭头所关联的两个文本框,按其包含句子的编号i和j,将邻接矩阵中第i行第j列的元素值定义为1,同时,将第j行第i列的元素值也定义为1,建立文本框间的邻接矩阵。34.进一步地,计算待检测流程图与对比流程图之间的文本相似度,并记录相似编号序列,具体包括以下步骤:35.(1)对于待检测流程图p1和对比流程图p2,分别按步骤一至步骤四建立文框间的邻接矩阵;36.(2)计算p1和p2中两两句子之间的句子相似分数:[0037][0038]其中,si与sj为当前对比的两个句子,wk表示为句子中的词组,n、m分别表示句子si和sj中词组的数量;[0039](3)若p1的某个句子与p2的所有句子的句子相似分数中,句子相似分数大于阈值t2的句子数量小于等于1,则将p2中句子相似分数最高的句子编号记录在相似编号序列的最后;[0040](4)若p1的某个句子与p2的所有句子的句子相似分数中,句子相似分数大于阈值t2的句子数量大于1,则将p2中对应的句子的编号记录在相似编号序列的最后,并将这些句子依次连接为一个新的复合句子,删除复合句子中重复的词组,将p1的句子与该复合句子重新计算句子相似分数;[0041](5)计算p1所有句子的句子相似分数的平均值,该平均值作为待检测流程图与对比流程图之间的文本相似度。[0042]进一步地,计算待检测流程图与对比流程图之间的结构相似度,并将文本相似度与结构相似度的乘积作为待检测流程图的重复分数,具体包括以下步骤:[0043](1)对于待检测流程图和对比流程图的相似编号序列,计算其最长递增子序列长度ls,序列的总长度为l,将作为待检测流程图和对比流程图的结构相似度;[0044](2)将结构相似度乘以步骤五得到的文本相似度,从而得到待检测流程图的重复分数。[0045]进一步地,包含流程图的彩色图像文件包括待检测流程图和对比流程图。[0046]技术效果[0047]本发明提供的一种流程图的查重方法,分别计算待检测流程图与对比流程图之间的文本相似度与结构相似度,并通过两者的乘积得到待检测流程图的重复分数,这就同时兼顾了流程图中的文字与框架,进一步提高了重复度计算的准确性,优化了查重效果,并且查重结果简单明了,查重分数越大,说明待检测流图的重复度越高,反之,查重分数越小,说明待检测流图的重复度越低。本发明整个流程图查重过程简洁、准确、高效,不需要人工参与,节省了大量人力成本,丰富了有关查重领域的研究,为图文结合的相似度检测提供了更多的可能性。[0048]以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。附图说明[0049]图1是本发明的一个较佳实施例的一种流程图的查重方法的操作流程示意图;[0050]图2是本发明的一个较佳实施例的一种流程图的查重方法的待检测流程图的示意图;[0051]图3是本发明的一个较佳实施例的一种流程图的查重方法的对比流程图的示意图;[0052]图4是本发明的一个较佳实施例的一种流程图的查重方法的提取对比流程图中文字所在区域的示意图;[0053]图5是本发明的一个较佳实施例的一种流程图的查重方法的待检测流程图的编号示意图;[0054]图6是本发明的一个较佳实施例的一种流程图的查重方法的对比流程图的编号示意图;[0055]图7是本发明的一个较佳实施例的一种流程图的查重方法的待检测流程图的文本框颜色填充文字区域的示意图;[0056]图8是本发明的一个较佳实施例的一种流程图的查重方法的对比流程图的文本框颜色填充文字区域的示意图;[0057]图9是本发明的一个较佳实施例的一种流程图的查重方法的定义的一个较佳的箭头匹配模板;[0058]图10是本发明的一个较佳实施例的一种流程图的查重方法的利用harris角点检测到的待检测流程图中的角点;[0059]图11是本发明的一个较佳实施例的一种流程图的查重方法的利用harris角点检测到的对比流程图中的角点。具体实施方式[0060]为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。[0061]以下描述中,为了说明而不是为了限定,提出了诸如特定内部程序、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。[0062]如图1所示,本发明一较佳实施例提供了一种流程图的查重方法,包括如下步骤:[0063]s1:输入包含流程图的彩色图像文件,提取流程图中文本框内的句子和坐标,用文本框内颜色填充句子所在区域,并将彩色图像转换为二值图像;其包括如下步骤:[0064]为方便理解,下面只用图2和图3所示的两个流程图作例,输入流程图的彩色图像,其中,图2是待检测流程图,图3是对比流程图;对比流程图可以通过百度搜索并下载。调用百度ai接口提取流程图中文本框内的句子,以及句子所在区域的左上角和右下角坐标,百度ai接口提取的具体步骤如下:[0065]百度ai表格文字识别接口提供了可供python使用地sdk文件,可根据官网技术文档的说明,创建相应的账号,并在代码中以指定形式调用相应的接口,如表格文字识别需要使用tablerecognitionasync模块。[0066]百度ai表格文字识别接口支持识别图片/pdf格式文档中的表格内容,返回各表格的表头表尾内容、单元格文字内容及其行列位置信息。该接口可以精确识别流程图中句子与句子所在区域信息,只需在使用时提供jpg、png、bmp等常见图片格式的流程图图片,就可以获得相应的数据,具体如下:[0067][0068][0069]当导入整个百度ai模块后,依据要求依次填写appid,ak,sk三个必要的信息,就可以建立实例client以进行表格分析。get_file_img函数用来打开需要处理的图片,参数为图片路径,因此将图片实际的路径填入括号中,获得表示该图片的变量img。最后,需要使用client中的tablerecognitionasync模块来进行图片的信息提取,参数为图片img,结果为单元格文字内容及其行列位置信息,可以通过字典访问需要的某些数据。[0070]因此,可以利用百度ai提供的表格文字识别接口,将流程图中的每个文本框看作是表格中的每个单元格,提取流程图中句子与句子所在区域的坐标信息。[0071]对图3提取出的句子所在的区域如图4所示,其中,图4中的黑框表示句子所在区域。对图2提取出的句子所在的区域也类似于图4;[0072]对于每句句子按照百度ai接口的提取顺序依次编号,示例流程图的编号顺序如图5和图6所示,其中,图5是图2所示待检测流程图的编号示意图,图6是图3所示对比流程图的编号示意图。[0073]进一步地,由于彩色流程图图像中每个像素包含r,g和b三种颜色值,利用提取到的文本所在区域的左上角和右下角坐标,将该区域中各像素的r,g和b值分别用区域的左上角或者右下角的r,g和b值表示,从而将句子所在的区域用文本框的像素值填充,填充后的流程图图像如图7和图8所示;[0074]然后,遍历流程图彩色图像,将彩色图像中符合r,g和b值都大于200的像素用0表示,其余的像素值用1来表示,从而将彩色图像转换成二值图像;[0075]为方便理解彩色图像转换成二值图像的过程,这里举例说明。假定一幅3*3*3的图像,图像中r,g,b颜色值矩阵表示为:[0076]r矩阵:[0077][0078]g矩阵:[0079][0080]b矩阵:[0081][0082]二值图像的矩阵:[0083][0084]s2:定义上、下、左、右四个方向的箭头模板;其包括如下步骤:[0085](1)定义7*7大小的矩阵,将该矩阵中位于第1行第4列元素,第2行第3列开始向右3个元素,第3行第2列开始向右5个元素,第4行第1列开始向右7个元素的数值设置为1,其余元素设置为0,将该矩阵定义为向上方向的箭头模板,向上方向的箭头模板矩阵如下所示:[0086][0087](2)定义7*7大小的矩阵,将该矩阵中位于第7行第4列元素,第6行第3列开始向右3个元素,第5行第2列开始向右5个元素,第4行第1列开始向右7个元素的数值设置为1,其余元素设置为0,将该矩阵定义为向下方向的箭头模板,向下方向的箭头模板矩阵如下所示:[0088][0089](3)定义7*7大小的矩阵,将该矩阵中位于第4行第1列元素,第3行第2列开始向下3个元素,第2行第3列开始向下5个元素,第1行第4列开始向下7个元素的数值设置为1,其余元素设置为0,将该矩阵定义为向左方向的箭头模板,向左方向的箭头模板矩阵如下所示:[0090][0091](4)定义7*7大小的矩阵,将该矩阵中位于第4行第7列元素,第3行第6列开始向下3个元素,第2行第5列开始向下5个元素,第1行第4列开始向下7个元素的数值设置为1,其余元素设置为0,将该矩阵定义为向右方向的箭头模板,向右方向的箭头模板矩阵如下所示:[0092][0093]四个方向的箭头模板的图像如图9所示;[0094]s3:利用harris角点检测法确定流程图图像中的角点,根据角点邻域与箭头模板之间的汉明距离识别位于箭头的角点;其包括如下步骤:[0095]首先,将s2中用文本框的像素值填充句子所在区域后流程图的彩色图像转换为灰度图像,将该灰度图像记作图像i,计算灰度流程图图像i中各像素点的水平和垂直方向导数ix和iy:[0096][0097][0098]其中,是卷积符号;[0099]接着,对图像i中各像素点计算三个自相关参数a、b和c的数值:[0100][0101][0102][0103]其中,wu,v为高斯滤波器,u、v分别为高斯滤波器的长和宽,σ为方差,本实施例中,采用的高斯滤波器参数为u=3、v=3、σ=2;[0104]然后,计算图像i中各像素点的harris角点响应值r:[0105]r=(ab-c2)-k(a+b)2ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(6)[0106]其中,k为一个常数,取值范围为0.04~0.06,本实施例中,k取值为0.04;[0107]如果像素点(i,j)处的harris角点响应值r大于阈值th,并且像素点(i,j)处的r值为该像素点所在8邻域的角点响应值的极大值,则像素点(i,j)成为图像的角点;本实施例中,阈值th=0.1。[0108]图10和图11分别为利用harris方法检测到的图2与图3的角点,其中,用“+”标示检测到的角点。[0109]为便于理解harris角点检测算法,这里举例说明。假定一幅大小为10*10的灰度图像i,图像i中各像素灰度值用下列矩阵表示为:[0110][0111]第一步:按式(1)计算图像i中各像素点的水平方向导数ix,卷积运算方法如下:[0112][0113]例如,计算图像i中的第一行第一列(1,1)像素点的水平方向导数,移动卷积核[-2,-1,0,1,2],使其中心0位于图像i的(1,1)像素上,如上面矩阵所示的100的上标0,再分别将像素值乘以卷积核中的对应数值,因为像素点(1,1)位于第一列,卷积核中的-2,-1没有对应像素值,则认为这些位置的像素值等于0,则(1,1)像素点的水平方向导数=100*0+100*1+100*2=300;[0114]按上述方法对图像i中所有像素计算水平方向导数ix,得到以下结果:[0115][0116]第二步:按式(2)计算图像i中各像素点的垂直方向导数iy,卷积运算方法如下:[0117][0118]例如,计算图像i中的第一行第一列(1,1)像素点的垂直方向导数,移动卷积核[-2,-1,0,1,2]t,此处的上标t表示矩阵转置,使其中心0位于图像i的(1,1)像素上,如上面矩阵所示的100的上标0,再分别用卷积核中的对应数值乘以对应位置的像素值,因为像素点(1,1)位于第一行,卷积核中的-2,-1没有对应像素值,则认为这些位置的像素值等于0,则[0119](1,1)像素点的水平方向导数=100*0+100*1+100*2=300;[0120]按上述方法对图像i中所有像素计算垂直方向导数iy,得到iy结果如下:[0121][0122]第三步:按式(3)-(5)计算图像i中各像素点的三个自相关参数a、b和c,其中,wu,v为高斯滤波器,本实施例中,高斯滤波器参数设置为u=3、v=3、σ=2,按计算,得到以下3*3的高斯滤波器:[0123][0124]例如,把u=1、v=0、σ=2代入得到等于0.8825,把u=1、v=1、σ=2代入得到等于0.7788,把u=0,v=0,σ=2代入得到等于1.0000,再把上式归一化,归一化就是将上式的9个值求和得到结果为7.6452,再将上式中的9个数值各自除以7.6452,得到归一化以后的3*3高斯滤波器:[0125][0126]再计算ix中的各数值的平方值得到[0127][0128]上面矩阵中,a表示90000,b表示40000。[0129]再计算iy中的各数值的平方值得到[0130][0131]上面矩阵中,a表示90000,b表示40000。[0132]再计算ix*iy,即计算ix与iy对应数值间的乘积,得到[0133][0134]上面矩阵中,a表示90000,b表示40000,r表示60000。[0135]计算得到自相关系数a,如下所示:[0136][0137]例如,计算中的第一行第一列(1,1)数值与wu,v的卷积值,移动卷积核,使其中心0.1308位于(1,1)上,如上面矩阵所示的p的上标0.1308,再分别将像素值乘以卷积核中的对应数值,因为(1,1)位于第一行第一列,卷积核中只有位于0.1308右下角的0.1154,0.1154,0.1019有对应数值,其余则没有对应数值,认为这些位置的数值等于0,则(1,1)位置的卷积结果=90000*0.1308+40000*0.1154+90000*0.1154+40000*0.1019=30850;[0138]按上述方法计算得到以下结果,其中,为节省空间,a矩阵中的每个数值保留一位小数:[0139][0140]类似的计算得到以下结果:[0141][0142]按类似的计算得到以下结果:[0143][0144]第四步:按式(6)计算图像i中各像素点的harris角点响应值r;[0145]例如,计算图像i中第一行第一列(1,1)的harris角点响应值,r=(ab-c2)-k(a+b)2=(31000*31000-300002)-0.06(31000+31000)2=-1.7*108,这里的k取值为0.06。[0146]以此类推,可用矩阵表示图像i中各像素点的harris角点响应值r如下,其中,为节省空间,r矩阵中的每个数值保留一位小数:[0147][0148]第五步:如果像素点(i,j)处的r大于阈值th,并且像素点(i,j)处的r值是其所在8邻域的角点响应值的极大值,则像素点(i,j)成为图像的角点;本实施例中,阈值th=0.1;把r中符合上面条件的用方框表示,得到:[0149][0150]对照上面的r矩阵,图像i中对应的角点用方框表示,得到:[0151][0152]然后,将角点记录在corner矩阵中。[0153]进一步地,遍历s3中记录的角点矩阵corner中的角点,对于每个角点取邻域并识别箭头的具体步骤如下:[0154]为方便理解,以下面的10*10大小的像素值矩阵为例,对箭头识别过程作详细解释:[0155][0156]其中,第4行第4列加下划线的像素点为角点;[0157]以角点向右第3个像素为中心,得到7*7大小的矩阵:[0158][0159]将该矩阵与向上与向下的箭头矩阵计算汉明距离,与向上的箭头模板矩阵之间有18个位置上的像素值不同,汉明距离sup=18,该矩阵与向下的箭头模板矩阵每个位置上的像素值都相同,汉明距离sdown=0;[0160]以角点向下第3个像素为中心,得到7*7大小的像素矩阵:[0161][0162]将该矩阵与向右与向左的箭头矩阵计算汉明距离,该矩阵与向右的箭头模板矩阵之间有18个位置上的像素值不同,汉明距离sright=18,该矩阵与向左的箭头模板矩阵之间有24个位置上的像素值不同,汉明距离sleft=24;[0163]在向上,向下,向左,向右四个方向的汉明距离中取最小的距离值为smin=0,阈值设置为t2=5,smin小于t2,则该角点位于向下箭头部分。[0164]s4:搜索与箭头相邻的文本框,建立文本框间的邻接矩阵;其包括如下步骤:[0165]首先,对于图2和图3所示的两幅流程图,分别建立大小为5*5和6*6的零矩阵;[0166]然后,将s2得到的二值图像的文本框部分的像素值修改为2,以s3记录的箭头部分的角点为起点,定义一个先进先出的空队列q,将起点加入空队列q中,定义四个搜索方向:[0167]gox=[-1,1,0,0][0168]goy=[0,0,-1,1][0169]例如,在二值图像对应的矩阵中,起点在该矩阵中的第sx行第sy列,则将起点的sx与sy分别加上gox与goy的第一个值,则下一个点在该矩阵中的第sx-1行第sy列,该点位于起点的上方;[0170](1)从队列中取出一个点作为起点,若此时队列为空则结束搜索;否则,将起点分别加上方向值,得到搜索的下一个像素点的坐标nx=sx+gox[i],ny=sy+goy[i],其中i为1~4;[0171](2)判断下个坐标点(nx,ny)的像素值:[0172]a)若为0,则加入队列q;[0173]b)若为2,则找到与箭头相邻的一个文本框,记录文本框的编号;[0174]c)若为1,则放弃该点不做任何处理;[0175]重复上述操作,直到队列为空;[0176]最后,对于同一个箭头所记录的两个文本框,按其记录的文本框的编号i和j,将邻接矩阵中第i行第j列的元素值定义为1,同时,将第j行第i列的元素值也定义为1,类似的,对所有箭头部分的角点都做相同操作,从而建立文本框间的邻接矩阵;[0177]对于图2所示的流程图,得到的邻接矩阵如下:[0178][0179]对于图3所示流程图,得到的邻接矩阵如下:[0180][0181]s5:计算待检测流程图与对比流程图之间的文本相似度,并记录相似编号序列;其包括如下步骤:[0182]首先,对于图2所示待检测流程图,将其记作p1,对于图3所示对比流程图,将其记作p2,根据s1所述提取到的p1的所有句子为:[0183]{s11:输入电子地图;s12:确定最小包围盒;s13:在最小包围盒内生成数值为0、1的点;s14:利用prim算法生成最小生成树并提取主骨架线;s15:沿主骨架线标注文字};[0184]提取到的p2的所有句子为:[0185]{s21:输入电子地图确定最小包围盒;s22:在最小包围盒内生成数值为0、1的均匀点;s23:提取区域骨架;s24:利用prim算法生成最小生成树;s25:提取主骨架线;s26:沿主骨架线标注文字};[0186]然后,计算待检测流程图p1所有句子分别与对比流程图p2的每个句子的相似分数:[0187]为了便于理解,这里举例说明具体实施过程:[0188]首先,对于待检测流程图p1与对比流程图p2中的各个句子中的文字内容进行关键词提取。[0189]其中,python的第三方中文分词库jieba提供了关键词提取功能,通过输入要提取关键词的文本就可获取文本中的关键词信息,基本方法如下:[0190]importjieba.analyse[0191]text='待检测的文本'[0192]key=jieba.analyse.extract_tags(text,topk)[0193]当导入整个jieba.analyse模块后,依据要求填写text信息,其中第二个参数topk返回关键词的最大数量,默认为20,返回的关键词key按照重要性从高到低排序。[0194]例如,使用jieba.analyse分别对p1和p2中第一个结点文字进行关键词提取:[0195]importjieba.analyse[0196]key1=jieba.analyse.textrank(“输入电子地图”,topk=20)[0197]key2=jieba.analyse.textrank(“输入电子地图确定最小包围盒”,topk=20)[0198]得到p1中第一个结点提取出的关键词key1为['输入','电子地图'],p2中第一个结点提取出的关键词key2为['输入','确定','电子地图','包围']。[0199]其次,计算p1和p2中两两句子之间的句子相似分数:[0200][0201]其中,si与sj为当前对比的两个句子,wk表示句子中的词,那么,分子部分的意思是同时出现在两个句子中的相同词的个数,分母是对句子中词的个数求对数之和。如:p1与p2第一个节点中相同词组为['输入','电子地图'],则同时出现在两个句子中的相同词的个数等于2,n=2,m=4,带入上式得similarity(s11,s21)=0.6667,其余句子的比对相类似。[0202]进而得到待检测流程图p1中的每个句子与p2中所有句子的句子相似分数:[0203][0204]其中,为节省空间,矩阵中的每个数值都乘以100后保留一位小数,矩阵中的第一行表示p1的第一个句子s11与p2的所有6个句子分别进行对比后的句子相似分数,其余行类似;[0205]进一步地,如上匹配结果显示,待检测流程图p1中的第一个句子s11与p2的s21的句子相似分数为66.7,且该值为同一行中最大值,并且该值超过阈值t2,这里,阈值t2等于50,则将序号1记录在相似编号序列的最后;[0206]p1中的第二个句子s12只与p2的s21句子相似分数超过阈值t2,所以取s12与p2的句子相似分数中的最大值66.7作为s12的匹配分数,因为66.7是s12与s21的句子相似分数,所以将序号1记录在相似编号序列的最后;[0207]p1中的第三个句子s13只与p2的s22句子相似分数超过阈值t2,所以取s13与p2的句子相似分数中的最大值100作为s13的句子相似分数,并将序号2记录在相似编号序列的最后;[0208]特别的,p1中的第四个句子s14与p2的多个句子s24和s25的句子相似分数超过阈值t2,然后我们进一步处理,将超过阈值的s24,s25两句句子中的关键词组提取出来后,去除其中的重复部分并将它们合成,再重新将s14与合成后的复合句子进行匹配,得到句子相似分数107.7作为s14的匹配分数,并将序号4,5记录在相似编号序列的最后;[0209]p1中的第五个句子s15只与p2的s26句子相似分数超过阈值t2,所以取s15与p2的句子相似分数中的最大值94.6作为s15的匹配分数,因为94.6是s15与s26的句子相似分数,所以将序号6记录在相似编号序列的最后;[0210]最后,p1所有句子相似分数的平均值=(66.7+66.7+100+107.7+94.6)/5=87.14,将87.14作为流程图p1的文字相似度,且得到相似编号序列{1;1;2;4;5;6}。[0211]s6:计算待检测流程图与对比流程图之间的结构相似度,并将文本相似度与结构相似度的乘积作为待检测流程图的重复分数;其包括如下步骤:[0212]首先,根据上一步骤得到相似编号序列{1;1;2;4;5;6},先建立一个长为l的元素全为0的标记数组m{0;0;0;0;0;0};[0213]然后,选取6与它之后的元素进行比较,因为6是队尾,所以它只与自己比较,数组m无改变;[0214]接着选取5与它之后的元素分别比较,因为5小于6,并且此时m中第五个元素等于m中第六个元素,所以m中第五个元素更新为1,此时m为{0;0;0;0;1;0};[0215]然后选取4,分别与6和5进行比较,因为4小于6,并且m中第四个元素等于m中第六个元素,所以m中第四个元素更新为1,此时m为{0;0;0;1;1;0},因为4小于5,并且m中第四个元素等于m中第五个元素,所以m中第四个元素更新为2,此时m{0;0;0;2;1;0};[0216]再接下来选取2,分别与6、5、4进行比较,得到m{0;0;3;2;1;0};[0217]同理选取1,分别与6、5、4、2进行比较,得到m{0;4;3;2;1;0};[0218]最后,选取队首的1分别与6、5、4、2、1进行比较,得到m{4;4;3;2;1;0};[0219]进一步地,对于例子中的相似编号序列{1;1;2;4;5;6}和它的标记数组m{4;4;3;2;1;0},max{m}是4,所以将4所对应的相似编号序列中的元素1放入最长递增子序列,接着从max{m}之后的位置(即第二个4所在的位置)开始寻找max{m}-1=3,并将它所对应相似编号序列中的元素2记录在最长递增子序列的最后,然后从3之后的位置开始寻找2,并将2所对应相似编号序列中的元素4记录在最长递增子序列的最后,再从2之后的位置开始寻找1并将1所对应相似编号序列中的元素5记录在最长递增子序列的最后,最后从1之后的位置开始寻找0,并将0所对应相似编号序列中的元素6记录在最长递增子序列的最后,就得到了相似编号序列的最长递增子序列{1;2;4;5;6};[0220]得到l等于6,ls等于5,等于5/6为p1和p2的结构相似度;[0221]将结构相似度乘以文本相似度,从而得到待检测流程图的重复分数,所以两张流程图的重复分数为[0222]由此可判断实施例中的待检测流程图和对比流程图的重复度偏大,与人工对比的结果基本一致。[0223]以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本
技术领域
:中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1