CN108399193A - 一种基于序列结构的程序代码聚类方法 - Google Patents
一种基于序列结构的程序代码聚类方法 Download PDFInfo
- Publication number
- CN108399193A CN108399193A CN201810083403.5A CN201810083403A CN108399193A CN 108399193 A CN108399193 A CN 108399193A CN 201810083403 A CN201810083403 A CN 201810083403A CN 108399193 A CN108399193 A CN 108399193A
- Authority
- CN
- China
- Prior art keywords
- program code
- cluster
- similarity
- distance
- function
- 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.)
- Granted
Links
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/35—Clustering; Classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于序列结构的程序代码聚类方法,首以函数为单位,基于程序代码的序列结构计算一对样本,即两份程序代码之间的函数相似度;在此基础上,再计算出两份程序代码的相似度与距离;对任意一个样本空间,按上述步骤计算出任意两份程序代码的距离方阵后,采用凝聚型层次聚类的思想对数据进行聚类分析,在聚类过程中无需凭借人工经验输入阈值,而是通过样本数据的特征自动判断是否满足聚类终止条件,最终得到程序代码的聚类结果。本发明可用于程序代码的自动聚类,如高校编程类作业的聚类等提供依据。
Description
技术领域
本发明涉及数据分析及处理领域,特别涉及一种基于序列结构的程序代码聚类方法。
背景技术
近年来,教育信息化的进程随着互联网+的快速推广而不断加快,在线教育与测试系统的出现为高校师生提供了一个方便快捷的作业布置与提交的平台。另一方面,各大高校对基础程序语言教学的重视逐渐提高,使之成为本科阶段必修课程之一。而在基础编程教学中,对于代码编程题的考察最能体现学生掌握编程技巧与思想的程度。
程序语言与自然语言在适用领域上有明显差异,其语言虽然都有词法、语法规则等,但程序语言不会出现一词多义,一义多词的情况。程序语言只有固定的关键字,标识符编写规则,功能实现结构等,所以它的识别较于自然语言更容易一些。因此,国内外出现了一些比较成熟的对程序代码进行查重检测的系统,如使用比较广泛的Online Judge(OJ)系统。
现有的对程序代码查重主要可以分为属性计数法和程序结构度量法两种方法。单方面只考虑属性计数而忽略程序的结构组成,得出的代码相似度比值准确率往往较低。并且,现有的代码查重系统都只关注于一对代码样本间的相似情况,而没有分析整个代码样本空间的分组情况,这样高校教师难以知道某次编程作业在整体分布上的学生完成的情况,无法知道该次编程作业有几种不同写法。
发明内容
本发明的目的在于克服现有技术的不足,提出一种基于序列结构的程序代码聚类方法,通过对序列结构的分析计算任意一组代码之间的相似度,进而通过凝聚型层次聚类对整个代码样本空间进行聚类分析;在聚类过程中无需输入经验阈值,通过样本数据的特征自动判断是否满足终止条件,最终得到聚类结果,帮助高校教师发现编程作业的分组情况,了解学生在完成该次作业中所采用的不同写法情况。
本发明的核心思想是首先基于序列结构计算任意两份代码的相似度,然后利用自动层次聚类的方法对代码进行分簇,并寻找出每一簇的聚类中心。
本发明解决其技术问题所采用的技术方案是:
步骤1,基于序列结构计算不同程序代码间任意两函数的相似度;
步骤1.1,去除注释内容;去除代码中常见的函数名(如printf,scanf,cin,cout等),去除运算符号(算术运算符、关系运算符和逻辑运算符等)与变量类型等;
步骤1.2,计算一个函数中每一个变量的相对位置数值序列。其中,变量的相对位置为同一变量在该函数中相邻位置之差,由变量的相对位置有序形成的序列为变量的相对位置序列;
步骤1.3,基于编辑距离(Levenshtein距离),计算两个函数间任意两个字符的相似度,字符相似度公式(1)如下:
Sim(S1,S2)=1-Dis(S1,S2)/max(|S1|,|S2|) (1)
其中,(S1,S2)为两变量相对位置序列,Dis(S1,S2)为两序列的编辑距离,max(|S1|,|S2|)为两序列间长度的最大值;
步骤1.4,在两函数之间,求出使得相似度和最大的一组字符对,求解规则如下:字符对对数为两函数经步骤1.2处理后所含有字符数的较小值,且任意一个字符最多只能出现一次。将所求出的最大相似度和除以字符对对数,即求得不同程序代码间两个函数的相似度Simf。
步骤2,根据所述两函数的相似度计算任意两程序代码的相似度。
假设程序代码Wa包括F1,F2,...,Fm(1≤m)个函数块,程序代码Wb包括F1,F2,...,Fn(1≤n)个函数块;则由步骤1可以求得两程序代码间任意两函数的相似度。
步骤2.1,找出使得两程序代码之间函数相似度之和最大的一组函数对。求解过程规则如下:函数对对数等于N,N为两程序代码中函数数目的较小值min(n,m);任意两对函数间不包括重复函数块。
步骤2.2,计算两份程序代码的相似度。由步骤2.1可求得使两程序代码之间函数相似度之和最大的N对函数对,其相似度记为sim1,sim2,...,simN;求得每一对函数对中两函数块经步骤1.1处理后字符数目和为l1,l2,...,lN;求得程序代码Wa与程序代码Wb经步骤1.1处理后字符总数目和为la,b。则由如下公式(2)可求得程序代码Wa与Wb的相似度Sima,b:
步骤3,根据所述两程序代码的相似度计算任意两程序代码的距离;由全部程序代码两两之间的距离构建距离方阵。
对于聚类算法,将采用存储任意两个样本间距离度量值的距离方阵作为输入参数。由公式(3)可以求得程序代码Wa与Wb的距离度量值Da,b:
Da,b=(1-Sima,b)×100 (3)
进一步的,根据步骤2的方法计算出全部程序代码两两之间的相似度,根据步骤3的方法计算出全部程序代码两两之间的距离,构建出距离方阵。
步骤4,根据所述距离方阵使用凝聚型层次聚类算法对整个程序代码样本空间进行聚类分析。
对于两份程序代码而言,两样本间的距离越小,表明两份程序代码之间的关系越密切,两份程序代码属于同一种求解方法的可能性越高,反之则越低。因此,需要对整个程序代码样本空间进行聚类分析。
本发明将求解该步骤使用算法为凝聚型层次聚类算法,如表1所示,该算法的输入输出参数分别如下:
输入:数据集X
输出:聚类结果C
算法包括以下步骤:
步骤4.1,通过输入的距离方阵求出无效点(语法格式有误的代码),此类代码在距离方阵中,与除自身外与其它代码的距离全为100;
步骤4.2,通过输入距离方阵计算所有有效数据样本的平均距离avgDis;
步骤4.3,开始基于均链接的层次聚类(即每一次聚类过程中将簇与簇之间平均距离最小的两个簇归为一簇),求出距离方阵中最小平均距离所在行列;
步骤4.4,设置聚类终止条件:判断任意簇簇内距离是否大于avgDis,若否,直接进行步骤4.5;若是,判断最小平均距离所在行列的两个样本所在的簇是否都满足簇内元素数目小于等于2,若满足则进行步骤4.5,否则计算此时这两个簇的簇内距离方差和var与两个簇所有元素间距离的方差newvar,若newvar的值大于var,则整个聚类算法终止,否则进行步骤4.5;
步骤4.5,将最小平均距离所在行列对应样本所在的簇归为一簇;
步骤4.6,求此时簇与簇之间平均距离,更新距离方阵。
步骤4.7、循环执行4.3到4.6步直到聚类终止。
表1
本发明具有如下有益效果:
本发明方法考虑了程序代码整体间的关联关系,进而帮助高校教师发现编程代码作业的分簇情况,了解学生在完成该次作业中采用的不同写法情况。
以下结合附图及实施例对本发明作进一步详细说明,但本发明的一种基于序列结构的程序代码聚类方法不局限于实施例。
附图说明
图1为本发明实施例的基于序列结构的程序代码聚类方法的流程图;
图2为本发明实施例一次c语言编程练习代码实例聚类树状图。
具体实施方式
以下结合附图描述本发明的一个c语言编程练习程序代码。在本实施例中,共有45份由学生提交的程序代码,分别为W1、W2、…、W45。本实施例通过程序代码查重与聚类过程,验证本发明的基于序列结构的程序代码聚类方法,本实施例一种基于序列结构的程序代码聚类方法执行流程图参见图1所示,包括:
步骤1,计算两份程序代码之间两个函数的相似度。
程序代码W1包括(F11,F12,F13)三个函数块;W3包括(F21,F22,F23,F24)四个函数块。其中函数块F11与F21如表2所示。
表2
去除程序中的注释内容,控制台信息、运算符等信息,给出处理后的结果,如表3所示。计算出两函数块中各个字符的绝对位置序列和相对位置序列,如表4所示。在得到两函数块各个字符相对位置序列后,通过公式(1)计算得到两函数块间各字符两两相似度,其值如表5与表6所示,并以此求得函数块F11与F21的相似度0.7321。
依此,可求得程序代码W1与W3中函数块间的两两相似度如表7所示。
表3
表4
表5
max | get | A | char | int | a | return | 0 | 32 | |
char | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
A | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
int | 0.5 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.125 | 0.0 |
A | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
return | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
countOfLetter | 0.25 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.375 | 0.0 |
countOfWord | 0.2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.375 | 0.0 |
getchar | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
0 | 0.25 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.125 | 0.0 |
length | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.25 | 0.0 |
countOfDigit | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.125 | 0.0 |
} | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
9 | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
ch | 0.3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.4 | 0.0 |
{ | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
z | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
Z | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 1.0 |
表6
9 | word | } | { | z | sz | zm | Z | jz | |
char | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
A | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
int | 0.0 | 0.286 | 0.0 | 0.2 | 0.25 | 0.0 | 0.25 | 0.0 | 0.0 |
A | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
return | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
countOfLetter | 0.0 | 0.143 | 0.2 | 0.4 | 0.5 | 0.0 | 0.25 | 0.1 | 0.0 |
countOfWord | 0.0 | 0.429 | 0.4 | 0.2 | 0.4 | 0.0 | 0.2 | 0.2 | 0.0 |
getchar | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
0 | 0.0 | 0.125 | 0.375 | 0.125 | 0.125 | 0.0 | 0.25 | 0.0 | 0.0 |
length | 0.0 | 0.143 | 0.2 | 0.6 | 0.25 | 0.0 | 0.25 | 0.1 | 0.0 |
countOfDigit | 0.0 | 0.143 | 0.4 | 0.2 | 0.25 | 0.0 | 0.25 | 0.1 | 0.0 |
} | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
9 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
ch | 0.0 | 0.4 | 0.0 | 0.1 | 0.3 | 0.0 | 0.1 | 0.5 | 0.0 |
{ | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
z | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
Z | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.25 | 0.1 | 1.0 |
表7
F21 | F22 | F23 | F24 | |
F11 | 0.7321 | 0.3734 | 0.5327 | 0.4573 |
F12 | 0.3245 | 0.4873 | 0.6833 | 0.7146 |
F13 | 0.4365 | 0.5725 | 0.6392 | 0.8214 |
步骤2,计算两份程序代码的相似度。
以程序代码W1和W3为例,在求得如表7所示的函数块两两相似度后,求出最大相似度之和,本例中函数对{F11,F22}、{F12,F23}、{F13,F24}的相似度分别为0.7321、0.6833、0.8214,其和2.2368为满足要求的最大相似度之和。统计这三对函数对经过步骤1.1处理后的字符个数分别为100、39、24;统计程序代码W1和W3经过步骤1.1处理后的总字符个数和为169。代入公式(2)求得程序代码W1和W3的相似度为0.7075。
步骤3,计算两份程序代码的距离。
以程序代码W1和W3为例,将其相似度代入公式(3)可得其距离为29.25。
依此,可求得全部程序代码两两之间的初始距离,如表8、表9、表10与表11所示。
表8
表9
表10
表11
步骤4,进行凝聚型层次聚类。
首先通过初始距离方阵判断是否存在括号不匹配的无效程序代码,此类代码在距离方阵中,与除自身外其它代码的距离全为100,本例中不存在无效程序代码。计算得到有效程序代码初始距离的平均值avgDis=50.85。
开始均链接层次聚类,此时,程序代码W8和W14的距离值为0为最小平均距离,且该值小于50.85不满足迭代终止条件,因此将W8和W14归为一簇。更新平均距离方阵,W14所对应的行列设为max,W8所对应的行列值设为初始距离方阵中W8与W14所在行求平均值。
至此,完成了本例的第一次迭代。
在本实例中,迭代进行了33次后最小平均距离为52.90,大于50.85,因此进行下一步终止条件判断。此时,最小平均距离所对应的程序代码为W9与W15,这两份代码已经归入的簇对应为簇C2:{W9,W25,W40};簇C3:{W15,W16,W23,W29,W34,W35,W37,W30,W45}。计算得到此时簇C3内程序代码初始距离的方差var(C2)=116.76,簇C23内程序代码初始距离的方差var(C3)=140.33;簇C2与簇C3所有程序代码初始距离方差var(C2+C3)=165.65。因为var(C2)+var(C3)>var(C2+C3),所以不满足迭代终止条件,层次聚类继续进行。本实施例中,当迭代进行37次后满足终止条件,其聚类迭代过程参见图2所示,得到最终聚类结果如表12所示。
表12
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于序列结构的程序代码聚类方法,其特征在于,包括:
步骤1,基于序列结构计算不同程序代码间任意两函数的相似度;
步骤2,根据所述两函数的相似度计算任意两程序代码的相似度;
步骤3,根据所述两程序代码的相似度计算任意两程序代码的距离;由全部程序代码两两之间的距离构建距离方阵;
步骤4,根据所述距离方阵使用凝聚型层次聚类算法对整个程序代码样本空间进行聚类分析。
2.根据权利要求1所述的基于序列结构的程序代码聚类方法,其特征在于,所述步骤1,包括:
步骤1.1,去除程序代码注释;去除程序代码中控制台输入输出函数名、运算符号和变量类型;
步骤1.2,计算一个函数中每一个变量的相对位置数值序列;其中,变量的相对位置为同一变量在该函数中相邻位置之差,由变量的相对位置有序形成的序列为变量的相对位置序列;
步骤1.3,基于Levenshtein距离,计算两个函数间任意两个字符的相似度;字符相似度公式如下所示:
Sim(S1,S2)=1-Dis(S1,S2)/max(|S1|,|S2|) (1)
其中,(S1,S2)为两变量相对位置序列,Dis(S1,S2)为两序列的编辑距离,max(|S1|,|S2|)为两序列间长度的最大值;
步骤1.4,在两函数之间,求出使得相似度和最大的一组字符对;包括:
字符对对数为两函数经步骤1.2处理后所含有字符数的较小值,且任意一个字符最多只能出现一次;
将所求出的最大相似度和除以字符对对数,获得不同程序代码间两个函数的相似度Simf。
3.根据权利要求1所述的基于序列结构的程序代码聚类方法,其特征在于,所述步骤2,包括:
假设程序代码Wa包括F1,F2,...,Fm(1≤m)个函数块,程序代码Wb包括F1,F2,...,Fn(1≤n)个函数块;则由步骤1求得两程序代码间任意两函数的相似度;
步骤2.1,找出使得两程序代码之间函数相似度之和最大的一组函数对;求解过程规则如下:
获得函数对对数N;其中,N为两程序代码中函数数目的较小值min(n,m),任意两对函数间不包括重复函数块;
步骤2.2,计算两份程序代码的相似度;由步骤2.1可求得使两程序代码之间函数相似度之和最大的N对函数对,其相似度记为sim1,sim2,...,simN;求得每一对函数对中两函数块经步骤1.1处理后字符数目和为l1,l2,...,lN;求得程序代码Wa与程序代码Wb经步骤1.1处理后字符总数目和为la,b,则由如下公式(2)可求得程序代码Wa与Wb的相似度Sima,b:
。
4.根据权利要求3所述的基于序列结构的程序代码聚类方法,其特征在于,所述任意两程序代码的距离的计算方式如下:
Da,b=(1-Sima,b)×100 (3)
其中,Da,b表示程序代码Wa与Wb的距离。
5.根据权利要求1所述的基于序列结构的程序代码聚类方法,其特征在于,所述步骤4,包括:
步骤4.1,根据输入的距离方阵求出语法格式有误的代码作为无效点,此类代码在距离方阵中,与除自身外的其它代码的距离全为100;
步骤4.2,根据输入的距离方阵计算所有有效数据样本的平均距离avgDis;
步骤4.3,开始采用均链接方法的层次聚类,均链接的方法是在每一次聚类过程中,将簇与簇之间平均距离最小的两个簇归为一簇,求出距离方阵中最小平均距离所在行列;
步骤4.4,设置聚类终止条件:判断任意簇簇内距离是否大于avgDis,若否,直接进行步骤4.5;若是,判断最小平均距离所在行列的两个样本所在的簇是否都满足簇内元素数目小于等于2,若满足则进行步骤4.5,否则计算此时这两个簇的簇内距离方差和var与两个簇所有元素间距离的方差newvar,若newvar的值大于var,则整个聚类算法终止,否则进行步骤4.5;
步骤4.5,将最小平均距离所在行列对应样本所在的簇归为一簇;
步骤4.6,求此时簇与簇之间平均距离,更新存储着样本间两两距离的距离方阵;
步骤4.7,重复步骤4.3到4.6步直到聚类终止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810083403.5A CN108399193B (zh) | 2018-01-29 | 2018-01-29 | 一种基于序列结构的程序代码聚类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810083403.5A CN108399193B (zh) | 2018-01-29 | 2018-01-29 | 一种基于序列结构的程序代码聚类方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108399193A true CN108399193A (zh) | 2018-08-14 |
CN108399193B CN108399193B (zh) | 2022-03-04 |
Family
ID=63095028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810083403.5A Active CN108399193B (zh) | 2018-01-29 | 2018-01-29 | 一种基于序列结构的程序代码聚类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108399193B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800766A (zh) * | 2018-12-11 | 2019-05-24 | 湖北工业大学 | 一种基于凝聚层次树的快速迭代重建方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110194780A1 (en) * | 2007-04-18 | 2011-08-11 | Microsoft Corporation | Object similarity search in high-dimensional vector spaces |
CN104572085A (zh) * | 2014-12-23 | 2015-04-29 | 华为技术有限公司 | 应用程序的分析方法及装置 |
CN105045715A (zh) * | 2015-07-27 | 2015-11-11 | 电子科技大学 | 基于编程模式和模式匹配的漏洞聚类方法 |
CN105426711A (zh) * | 2015-11-18 | 2016-03-23 | 北京理工大学 | 一种计算机软件源代码相似度检测方法 |
CN105956605A (zh) * | 2016-04-21 | 2016-09-21 | 苏州科技学院 | 基于并行k-means聚类的三维结构相似性聚类方法 |
CN107169321A (zh) * | 2017-06-10 | 2017-09-15 | 西安交通工程学院 | 基于属性计数和结构度量技术相结合的程序剽窃检测方法及系统 |
CN107273294A (zh) * | 2017-06-19 | 2017-10-20 | 电子科技大学 | 一种基于神经网络语言模型的重复代码检测方法 |
-
2018
- 2018-01-29 CN CN201810083403.5A patent/CN108399193B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110194780A1 (en) * | 2007-04-18 | 2011-08-11 | Microsoft Corporation | Object similarity search in high-dimensional vector spaces |
CN104572085A (zh) * | 2014-12-23 | 2015-04-29 | 华为技术有限公司 | 应用程序的分析方法及装置 |
CN105045715A (zh) * | 2015-07-27 | 2015-11-11 | 电子科技大学 | 基于编程模式和模式匹配的漏洞聚类方法 |
CN105426711A (zh) * | 2015-11-18 | 2016-03-23 | 北京理工大学 | 一种计算机软件源代码相似度检测方法 |
CN105956605A (zh) * | 2016-04-21 | 2016-09-21 | 苏州科技学院 | 基于并行k-means聚类的三维结构相似性聚类方法 |
CN107169321A (zh) * | 2017-06-10 | 2017-09-15 | 西安交通工程学院 | 基于属性计数和结构度量技术相结合的程序剽窃检测方法及系统 |
CN107273294A (zh) * | 2017-06-19 | 2017-10-20 | 电子科技大学 | 一种基于神经网络语言模型的重复代码检测方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800766A (zh) * | 2018-12-11 | 2019-05-24 | 湖北工业大学 | 一种基于凝聚层次树的快速迭代重建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108399193B (zh) | 2022-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112214610B (zh) | 一种基于跨度和知识增强的实体关系联合抽取方法 | |
CN110765014B (zh) | 一种Python绘图程序题自动评测方法 | |
CN110471936B (zh) | 一种混合式sql自动评分方法 | |
CN107463607A (zh) | 结合词向量和自举学习的领域实体上下位关系获取与组织方法 | |
Shoval et al. | Database schema design: an experimental comparison between normalization and information analysis | |
CN115048490B (zh) | 一种基于深度学习的云制造服务流程推荐方法 | |
CN113505225A (zh) | 一种基于多层注意力机制的小样本医疗关系分类方法 | |
CN113741886A (zh) | 一种基于图的语句级程序修复方法及系统 | |
CN115470133A (zh) | 大规模持续集成的测试用例优先级排序方法、设备及介质 | |
Chandra et al. | Automated grading of sql queries | |
CN114281809A (zh) | 一种多源异构数据清洗方法及装置 | |
Meng et al. | Knowledge base semantic integration using crowdsourcing | |
CN116755753A (zh) | 一种基于代码语言模型的程序缺陷自动修复方法及系统 | |
CN108399193A (zh) | 一种基于序列结构的程序代码聚类方法 | |
CN112990130B (zh) | 训练样本的数据清洗方法、装置及一种分类器 | |
CN110164216A (zh) | 一种sql在线评测系统 | |
CN114328823A (zh) | 数据库自然语言查询方法及装置、电子设备、存储介质 | |
CN117807137A (zh) | 一种基于规则的SQL到PromQL的转换方法 | |
CN103294828A (zh) | 数据挖掘模型维度的验证方法和验证装置 | |
Rezgui et al. | Automatic verification of data summaries | |
Hadžić et al. | Different similarity measures to identify duplicate records in relational databases | |
CN111737462A (zh) | 海量数据实体相似对确定方法和系统 | |
CN114756581B (zh) | 模板化数据库查询计划的等价性验证方法及系统 | |
Shao et al. | Fast code recommendation via approximate sub-tree matching | |
Orvalho et al. | Graph Neural Networks For Mapping Variables Between Programs--Extended Version |
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 |