一種流程圖的查重方法
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
