CN112394973A - 一种基于伪孪生网络的多语言代码剽窃检测方法 - Google Patents
一种基于伪孪生网络的多语言代码剽窃检测方法 Download PDFInfo
- Publication number
- CN112394973A CN112394973A CN202011319165.7A CN202011319165A CN112394973A CN 112394973 A CN112394973 A CN 112394973A CN 202011319165 A CN202011319165 A CN 202011319165A CN 112394973 A CN112394973 A CN 112394973A
- Authority
- CN
- China
- Prior art keywords
- code
- plagiarism
- pseudo
- neural network
- data set
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 77
- 238000012549 training Methods 0.000 claims abstract description 60
- 238000013528 artificial neural network Methods 0.000 claims abstract description 56
- 238000000034 method Methods 0.000 claims abstract description 30
- 239000013598 vector Substances 0.000 claims abstract description 27
- 230000015654 memory Effects 0.000 claims abstract description 17
- 230000008569 process Effects 0.000 claims abstract description 13
- 230000002457 bidirectional effect Effects 0.000 claims abstract description 10
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 9
- 238000007781 pre-processing Methods 0.000 claims abstract description 6
- 230000006870 function Effects 0.000 claims description 15
- 230000004913 activation Effects 0.000 claims description 12
- 238000004422 calculation algorithm Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 12
- 239000011159 matrix material Substances 0.000 claims description 7
- 238000005259 measurement Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 7
- 238000013135 deep learning Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- 238000011176 pooling Methods 0.000 claims description 3
- 238000010801 machine learning Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种基于伪孪生网络的多语言代码剽窃检测方法,包括步骤:1)获取基础数据,包含预训练数据集和多语言代码剽窃检测训练数据集;2)对预训练数据集进行预处理获得精确的标记向量;3)对多语言代码剽窃检测训练数据集进行预处理初步判断代码是否剽窃;4)对多语言代码剽窃检测训练数据集中需进一步判断是否剽窃的代码进一步判断是否剽窃。本发明打破了现有基于机器学习的多语言代码剽窃检测方法将代码作为文本处理,未考虑代码结构特征的局限性,结合代码基于抽象语法树的结构特征,并将卷积神经网络、双向长短期记忆人工神经网络和新型注意力神经网络嵌入到伪孪生网络中,实现了多语言代码剽窃检测,有效提高检测代码剽窃的效率和精度。
Description
技术领域
本发明涉及计算机程序设计代码检测的技术领域,尤其是指一种基于伪孪生网络的多语言代码剽窃检测方法。
背景技术
互联网的发展使得通过网络获取源代码变的越来越容易,也带来了代码剽窃问题。因此,源代码剽窃检测技术被越来越多的学者研究,而代码剽窃检测在当前计算机程序设计类课程的教学中也有重要的应用,近年来,已经出现了许多代码剽窃检测的方法。现有的代码剽窃检测方法主要用于检测同种语言代码之间的相似性,而不同编程语言之间的语法差异使得这些方法并不适用于检测不同语言代码之间的相似度;在多语言代码剽窃检测方面,主要包括基于中间特征和基于机器学习的两类多语言代码剽窃检测方法。其中基于中间特征的多语言代码剽窃检测方法通常将两段不同语言编写的源代码转换为相同的中间表示,进而将多语言剽窃检测问题转换为同种语言剽窃检测;基于机器学习的多语言代码剽窃检测方法通常将源代码转化为标记序列,然后为每个标记序列赋予一个向量表示,进而通过一些机器学习方法将多语言代码剽窃的检测问题转换为二分类问题。两种方法中,基于机器学习的方法在模型训练完成之后具有更好的检测速度和效果,然而,现有的基于机器学习的大多数方法只是将代码作为文本来处理,很少考虑代码的结构特征,且易受更改语句顺序、等价结构替换等混淆手段的影响,其检测效果比考虑代码结构特征的机器学习方法要差,并且极易受到冗余代码的影响导致检测准确率的下降。因此迫切需要一种考虑代码结构特征的多语言代码剽窃检测方法,实现多语言代码剽窃检测,并可以提高代码剽窃检测的效率和精度。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提出了一种基于伪孪生网络的多语言代码剽窃检测方法,可突破现有多语言代码剽窃检测方法未考虑代码的结构特征与极易受到冗余代码影响的问题。
为实现上述目的,本发明所提供的技术方案为:一种基于伪孪生网络的多语言代码剽窃检测方法,包括以下步骤:
1)获取基础数据,采用开源数据集,包含预训练数据集和多语言代码剽窃检测训练数据集;
2)针对预训练数据集,基于抽象语法树的skip-gram算法对词向量进行预训练,获得精确的标记向量;
3)对多语言代码剽窃检测训练数据集进行预处理,删除冗余代码,并转化为抽象语法树,通过一个基于属性度量的过滤器,计算代码相似度并与阈值相比较,以初步判断代码是否剽窃,若计算结果低于既定阈值,则判断代码为非剽窃,若计算结果大于既定阈值,则执行步骤4)以进一步判断代码是否剽窃;
4)对多语言代码剽窃检测训练数据集中需要进一步判断是否剽窃的代码进行处理,以形成不同语言代码对应的嵌入矩阵,并送入伪孪生网络,通过伪孪生网络中最后的激活函数与设定的阈值比较,大于该阈值则判定为剽窃,否则为非剽窃;其中,所述伪孪生网络是孪生网络的变体,它们同样具有两个输入、两个神经网络和一个激活函数,但孪生网络的两个神经网络的权值是共享的,只适用于处理来自统一领域且在结构上有高相似度的数据,而伪孪生网络的两个神经网络的权值是非共享的,能够处理具有差别性的数据,即能够处理不同语言的代码。
在步骤1)中,所述预训练数据集包含不同语言的开源代码;所述多语言代码剽窃检测训练数据集包含不同语言的开源代码。
所述步骤2)包括以下步骤:
2.1)将预训练数据集中所有代码转换为抽象语法树;
2.2)深度优先遍历每个抽象语法树,并统计抽象语法树中节点出现的次数,每个节点的命名规则为:如果抽象语法树中的节点只有节点类型,没有节点标识,则以节点类型作为节点的名字,如果既有节点类型又有节点标识,则将节点命名为“节点类型_节点标识”;
2.3)统计完毕后按照频次从高到低将节点名称进行排序,选取频次最高的若干个节点名字外加“unknow”标记作为词汇表;
2.4)通过词汇表和抽象语法树集合构建Skip-gram算法的输入,对词向量进行预训练,获得较精确的标记向量。
其中,所述Skip-gram算法是word2vec算法的一种,其核心思想是通过上下文来推断中心词;而所述Word2vec是一群用来产生词向量的相关模型。
所述步骤3)包括以下步骤:
3.1)基于程序依赖图对多语言代码剽窃检测训练数据集中的冗余代码进行删除;
3.2)将删除冗余代码的多语言代码剽窃检测训练数据集转化为抽象语法树;
3.3)基于步骤3.2)得到的抽象语法树通过一个基于属性度量的过滤器提取代码的变量声明数量、参数数量、运算对象数量、抛出异常数量、圈复杂度、运算符总数、表达式数量、循环数量和异常引用数量;
3.4)利用余弦相似度初步计算两段代码的相似度,若计算结果低于既定阈值,则判定代码为非剽窃并结束检测过程;若计算结果大于既定阈值,则进一步判断代码是否剽窃。
所述步骤4)包括以下步骤:
4.1)将相似度大于阈值的代码通过深度遍历代码的抽象语法树形成表示代码的标记序列;
4.2)将标记序列的每个标记都用步骤2)中预训练好的标记向量来替换,使得不同语言的代码分别形成对应的嵌入矩阵;
4.3)将步骤4.2)所得的不同的嵌入矩阵分别作为伪孪生网络的两个输入,并分别经过一个神经网络,即一个输入对应一个神经网络,最终通过一个激活函数得到一个计算值,再将该计算值与设定的阈值相比较,若大于该阈值则判定为剽窃,否则为非剽窃;其中,所述激活函数是Softmax函数。
所述神经网络为由卷积神经网络、双向长短期记忆人工神经网络和新型注意力神经网络组成的深度学习神经网络,其对嵌入矩阵的处理具体如下:
首先,通过卷积神经网络的卷积层、池化层对嵌入矩阵进行局部特征提取;然后以提取的局部特征作为双向长短期记忆人工神经网络的输入,对当前输入的局部特征的上下文信息进行特征提取,同时保留重要的信息,遗忘不重要的信息;最后,使用新型注意力神经网络表示序列中标记与输出结果的相关性,对向量分配不同的权重以区分序列中标记特征的重要性大小,提高分类的准确性;
其中,所述双向长短期记忆人工神经网络是由正向长短期记忆人工神经网络和反向长短期记忆人工神经网络组成,能够从正向和反向同时对数据进行特征提取;所述新型注意力神经网络是一种基于自注意力机制的新型神经网络,通过编码组件和解码组件完成文本到文本之间的转换。
本发明与现有技术相比,具有如下优点与有益效果:
1、本发明在代码剽窃检测方法层面,首次结合代码的抽象语法树的结构特征,突破了现有代码剽窃检测方法未考虑代码结构特征的局限性。
2、本发明首次提出基于程序依赖图,对代码中的冗余代码进行删除,突破现有代码剽窃检测方法易受冗余代码影响的问题。
3、本发明首次提出了一个基于属性度量的过滤器,更有利于提高检测代码剽窃的精度,提高训练模型的检测效率,降低非剽窃代码对检测效率的影响。
4、本发明首次基于伪孪生网络,且该伪孪生网络嵌入卷积神经网络、长短期记忆人工神经网络和新型注意力神经网络三种集成在一起的深度学习神经网络,提出了一个新的多语言代码剽窃检测方式,更有利于代码剽窃检测时准确率的提高。
5、本发明方法在多语言代码剽窃检测上具有广泛的使用空间,在代码剽窃检测方法应用上有广阔前景。
附图说明
图1为本发明逻辑流程示意图。
图2为预训练示意图。
图3为基于伪孪生网络进一步判断是否剽窃过程图。
图4为伪孪生网络中嵌入的卷积神经网络、长短期记忆人工神经网络和新型注意力神经网络细节示意图。
图5为实验结果对比图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
如图1所示,本实施例所提供的基于伪孪生网络的多语言代码剽窃检测方法,对预训练数据进行预训练以获得精确的标记向量,对多语言代码剽窃检测训练数据集的训练集进行冗余处理,转换成抽象语法树并初步判断代码是否剽窃,再将需要进一步判断是否剽窃的数据集,通过深度遍历代码的抽象语法树形成表示代码的标记序列,并将标记序列的每个序列都用预训练好的标记向量来替换,形成嵌入矩阵,再通过伪孪生网络进一步检测判断代码是否剽窃,其包括以下步骤:
1)获取基础数据,采用开源数据集,包含预训练数据集和多语言代码剽窃检测训练数据集;其中所述预训练数据集包含不同语言的开源代码;所述多语言代码剽窃检测训练数据集包含不同语言的开源代码。
在本步骤中,以Java代码和Python代码为例,采用开源数据集,其中预训练数据集中Java代码是Apache的开源代码,Python代码是从GitHub上下载的Python项目;多语言代码剽窃检测训练数据集源于一个公开的编程竞赛网站:https://atcoder.jp。
2)针对预训练数据集,基于抽象语法树的skip-gram算法对词向量进行预训练,获得精确的标记向量,具体操作过程如下:
2.1)将预训练数据集中所有代码转换为抽象语法树;
2.2)深度优先遍历每个抽象语法树,并统计抽象语法树中节点出现的次数,每个节点的命名规则为:如果抽象语法树中的节点只有节点类型,没有节点标识,则以节点类型作为节点的名字,如果既有节点类型又有节点标识,则将节点命名为“节点类型_节点标识”;
2.3)统计完毕后按照频次从高到低将节点名称进行排序,选取频次最高的若干个节点名字外加“unknow”标记作为词汇表;
2.4)通过词汇表和抽象语法树集合构建Skip-gram算法的输入,对词向量进行预训练,获得精确的标记向量。
其中,所述Skip-gram算法是word2vec算法的一种,其核心思想是通过上下文来推断中心词;而所述Word2vec是一群用来产生词向量的相关模型。
对预训练数据集进行预处理,对词向量进行预训练,获得精确的标记向量过程如图2所示;本案例中将多语言代码剽窃检测训练数据集,以特定比例拆分为训练集和测试集,将多语言代码剽窃检测训练数据集中的80%用于训练嵌入伪孪生网络中的深度学习网络模型,是训练集;剩余的20%是测试集,用于测试本方法与其它方法相比的优越性。
3)对多语言代码剽窃检测训练数据集进行预处理,删除冗余代码,并转化为抽象语法树,通过一个基于属性度量的过滤器,计算代码相似度并与阈值相比较,以初步判断代码是否剽窃,若计算结果低于既定阈值,则判断代码为非剽窃,若计算结果大于既定阈值,则执行步骤4)以进一步判断代码是否剽窃,具体步骤如下:
3.1)基于程序依赖图对多语言代码剽窃检测训练数据集中的冗余代码进行删除;
3.2)将删除冗余代码的多语言代码剽窃检测训练数据集转化为抽象语法树;
3.3)基于步骤3.2)得到的抽象语法树通过基于一个属性度量的过滤器提取代码的变量声明数量、参数数量、运算对象数量、抛出异常数量、圈复杂度、运算符总数、表达式数量、循环数量和异常引用数量;
3.4)利用余弦相似度初步计算两段代码的相似度,若计算结果低于既定阈值,则判定代码为非剽窃并结束检测过程;若计算结果大于既定阈值,则进一步判断代码是否剽窃。
4)对多语言代码剽窃检测训练数据集中需要进一步判断是否剽窃的代码进行处理,以形成不同语言代码对应的嵌入矩阵,并送入伪孪生网络,通过伪孪生网络中最后的激活函数与设定的阈值比较,大于该阈值则判定为剽窃,否则为非剽窃;其中,所述伪孪生网络是孪生网络的变体,它们同样具有两个输入、两个神经网络和一个激活函数,但孪生网络的两个神经网络的权值是共享的,只适用于处理来自统一领域且在结构上有高相似度的数据,而伪孪生网络的两个神经网络的权值是非共享的,能够处理具有差别性的数据,即能够处理不同语言的代码,具体步骤如下:
4.1)将相似度大于阈值的代码通过深度遍历代码的抽象语法树形成表示代码的标记序列;
4.2)将标记序列的每个标记都用步骤2)中预训练好的标记向量来替换,使得不同语言的代码分别形成对应的嵌入矩阵;
4.3)将步骤4.2)所得的不同的嵌入矩阵分别作为伪孪生网络的两个输入,并分别经过一个神经网络,即一个输入对应一个神经网络,最终通过一个激活函数得到一个计算值,再将该计算值与设定的阈值相比较,若大于该阈值则判定为剽窃,否则为非剽窃;其中,所述激活函数是Softmax函数。
本步骤中基于伪孪生网络进一步判断代码是否剽窃的过程如图3所示。
所述神经网络为由卷积神经网络、双向长短期记忆人工神经网络和新型注意力神经网络组成的深度学习神经网络,其对嵌入矩阵的处理具体如下:
首先,通过卷积神经网络的卷积层、池化层对嵌入矩阵进行局部特征提取;然后以提取的局部特征作为双向长短期记忆人工神经网络的输入,对当前输入的局部特征的上下文信息进行特征提取,同时保留重要的信息,遗忘不重要的信息;最后,使用新型注意力神经网络表示序列中标记与输出结果的相关性,对向量分配不同的权重以区分序列中标记特征的重要性大小,提高分类的准确性;
其中,所述双向长短期记忆人工神经网络是由正向长短期记忆人工神经网络和反向长短期记忆人工神经网络组成,能够从正向和反向同时对数据进行特征提取;所述新型注意力神经网络是一种基于自注意力机制的新型神经网络,通过编码组件和解码组件完成文本到文本之间的转换。
本步骤中所述深度学习神经网络的细节如图4所示。
在此实施例中,使用测试集对所述方法与其他方法进行测试,如图5所示,与其它已有方法相比,包括LICCA、CLCDSA、DeSoCoRe、ASTLearner,本文所提方法,简称CLPDetecter,如图5中最右边的一组实验结果所示,在三种评估方法中的评估值都有明显优势,三种评估方法包括Precision、Recall、F1-Measure。
综上所述,在采用以上方案后,本发明基于伪孪生网络为多语言的代码剽窃检测提供了新的方法,将基于伪孪生网络的多语言代码剽窃检测方法作为多语言代码剽窃检测的一种有效手段,能够有效突破现有多语言代码检测方法不能结合代码结构特征,与易受冗余代码影响的问题,有效推动了多语言代码剽窃检测技术的发展,具有实际应用价值,值得推广。
以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。
Claims (6)
1.一种基于伪孪生网络的多语言代码剽窃检测方法,其特征在于,包括以下步骤:
1)获取基础数据,采用开源数据集,包含预训练数据集和多语言代码剽窃检测训练数据集;
2)针对预训练数据集,基于抽象语法树的skip-gram算法对词向量进行预训练,获得精确的标记向量;
3)对多语言代码剽窃检测训练数据集进行预处理,删除冗余代码,并转化为抽象语法树,通过一个基于属性度量的过滤器,计算代码相似度并与阈值相比较,以初步判断代码是否剽窃,若计算结果低于既定阈值,则判断代码为非剽窃,若计算结果大于既定阈值,则执行步骤4)以进一步判断代码是否剽窃;
4)对多语言代码剽窃检测训练数据集中需要进一步判断是否剽窃的代码进行处理,以形成不同语言代码对应的嵌入矩阵,并送入伪孪生网络,通过伪孪生网络中最后的激活函数与设定的阈值比较,大于该阈值则判定为剽窃,否则为非剽窃;其中,所述伪孪生网络是孪生网络的变体,它们同样具有两个输入、两个神经网络和一个激活函数,但孪生网络的两个神经网络的权值是共享的,只适用于处理来自统一领域且在结构上有高相似度的数据,而伪孪生网络的两个神经网络的权值是非共享的,能够处理具有差别性的数据,即能够处理不同语言的代码。
2.根据权利要求1所述的一种基于伪孪生网络的多语言代码剽窃检测方法,其特征在于,在步骤1)中,所述预训练数据集包含不同语言的开源代码;所述多语言代码剽窃检测训练数据集包含不同语言的开源代码。
3.根据权利要求1所述的一种基于伪孪生网络的多语言代码剽窃检测方法,其特征在于,所述步骤2)包括以下步骤:
2.1)将预训练数据集中所有代码转换为抽象语法树;
2.2)深度优先遍历每个抽象语法树,并统计抽象语法树中节点出现的次数,每个节点的命名规则为:如果抽象语法树中的节点只有节点类型,没有节点标识,则以节点类型作为节点的名字,如果既有节点类型又有节点标识,则将节点命名为“节点类型_节点标识”;
2.3)统计完毕后按照频次从高到低将节点名称进行排序,选取频次最高的若干个节点名字外加“unknow”标记作为词汇表;
2.4)通过词汇表和抽象语法树集合构建Skip-gram算法的输入,对词向量进行预训练,获得精确的标记向量;
其中,所述Skip-gram算法是word2vec算法的一种,其核心思想是通过上下文来推断中心词;而所述Word2vec是一群用来产生词向量的相关模型。
4.根据权利要求1所述的一种基于伪孪生网络的多语言代码剽窃检测方法,其特征在于,所述步骤3)包括以下步骤:
3.1)基于程序依赖图对多语言代码剽窃检测训练数据集中的冗余代码进行删除;
3.2)将删除冗余代码的多语言代码剽窃检测训练数据集转化为抽象语法树;
3.3)基于步骤3.2)得到的抽象语法树通过一个基于属性度量的过滤器提取代码的变量声明数量、参数数量、运算对象数量、抛出异常数量、圈复杂度、运算符总数、表达式数量、循环数量和异常引用数量;
3.4)利用余弦相似度初步计算两段代码的相似度,若计算结果低于既定阈值,则判定代码为非剽窃并结束检测过程;若计算结果大于既定阈值,则进一步判断代码是否剽窃。
5.根据权利要求1所述的一种基于伪孪生网络的多语言代码剽窃检测方法,其特征在于,所述步骤4)包括以下步骤:
4.1)将相似度大于阈值的代码通过深度遍历代码的抽象语法树形成表示代码的标记序列;
4.2)将标记序列的每个标记都用步骤2)中预训练好的标记向量来替换,使得不同语言的代码分别形成对应的嵌入矩阵;
4.3)将步骤4.2)所得的不同的嵌入矩阵分别作为伪孪生网络的两个输入,并分别经过一个神经网络,即一个输入对应一个神经网络,最终通过一个激活函数得到一个计算值,再将该计算值与设定的阈值相比较,若大于该阈值则判定为剽窃,否则为非剽窃;其中,所述激活函数是Softmax函数。
6.根据权利要求5所述的一种基于伪孪生网络的多语言代码剽窃检测方法,其特征在于:所述神经网络为由卷积神经网络、双向长短期记忆人工神经网络和新型注意力神经网络组成的深度学习神经网络,其对嵌入矩阵的处理具体如下:
首先,通过卷积神经网络的卷积层、池化层对嵌入矩阵进行局部特征提取;然后以提取的局部特征作为双向长短期记忆人工神经网络的输入,对当前输入的局部特征的上下文信息进行特征提取,同时保留重要的信息,遗忘不重要的信息;最后,使用新型注意力神经网络表示序列中标记与输出结果的相关性,对向量分配不同的权重以区分序列中标记特征的重要性大小,提高分类的准确性;
其中,所述双向长短期记忆人工神经网络是由正向长短期记忆人工神经网络和反向长短期记忆人工神经网络组成,能够从正向和反向同时对数据进行特征提取;所述新型注意力神经网络是一种基于自注意力机制的新型神经网络,通过编码组件和解码组件完成文本到文本之间的转换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011319165.7A CN112394973B (zh) | 2020-11-23 | 2020-11-23 | 一种基于伪孪生网络的多语言代码剽窃检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011319165.7A CN112394973B (zh) | 2020-11-23 | 2020-11-23 | 一种基于伪孪生网络的多语言代码剽窃检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112394973A true CN112394973A (zh) | 2021-02-23 |
CN112394973B CN112394973B (zh) | 2024-03-12 |
Family
ID=74606900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011319165.7A Active CN112394973B (zh) | 2020-11-23 | 2020-11-23 | 一种基于伪孪生网络的多语言代码剽窃检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112394973B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448852A (zh) * | 2021-06-29 | 2021-09-28 | 中国工商银行股份有限公司 | 一种测试案例的获取方法、装置、电子设备及存储介质 |
CN113656066A (zh) * | 2021-08-16 | 2021-11-16 | 南京航空航天大学 | 一种基于特征对齐的克隆代码检测方法 |
CN114970678A (zh) * | 2022-04-26 | 2022-08-30 | 华中科技大学 | 一种基于孪生神经网络的航发轴承故障诊断方法 |
CN115129364B (zh) * | 2022-07-05 | 2023-04-18 | 四川大学 | 基于抽象语法树和图神经网络的指纹身份识别方法和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697121A (zh) * | 2009-10-26 | 2010-04-21 | 哈尔滨工业大学 | 一种基于程序源代码语义分析的代码相似度检测方法 |
US20100199355A1 (en) * | 2007-03-23 | 2010-08-05 | Advestigo | Method of protecting digital documents against unauthorized uses |
US20140053285A1 (en) * | 2012-08-16 | 2014-02-20 | Infosys Limited | Methods for detecting plagiarism in software code and devices thereof |
CN111178040A (zh) * | 2019-10-24 | 2020-05-19 | 中央民族大学 | 藏汉跨语言论文剽窃检测方法和系统 |
US20200202038A1 (en) * | 2017-05-12 | 2020-06-25 | Massachusetts Institute Of Technology | Systems and methods for crowdsourcing, analyzing, and/or matching personal data |
CN111967296A (zh) * | 2020-06-28 | 2020-11-20 | 北京中科虹霸科技有限公司 | 虹膜活体检测方法、门禁控制方法及装置 |
-
2020
- 2020-11-23 CN CN202011319165.7A patent/CN112394973B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100199355A1 (en) * | 2007-03-23 | 2010-08-05 | Advestigo | Method of protecting digital documents against unauthorized uses |
CN101697121A (zh) * | 2009-10-26 | 2010-04-21 | 哈尔滨工业大学 | 一种基于程序源代码语义分析的代码相似度检测方法 |
US20140053285A1 (en) * | 2012-08-16 | 2014-02-20 | Infosys Limited | Methods for detecting plagiarism in software code and devices thereof |
US20200202038A1 (en) * | 2017-05-12 | 2020-06-25 | Massachusetts Institute Of Technology | Systems and methods for crowdsourcing, analyzing, and/or matching personal data |
CN111178040A (zh) * | 2019-10-24 | 2020-05-19 | 中央民族大学 | 藏汉跨语言论文剽窃检测方法和系统 |
CN111967296A (zh) * | 2020-06-28 | 2020-11-20 | 北京中科虹霸科技有限公司 | 虹膜活体检测方法、门禁控制方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448852A (zh) * | 2021-06-29 | 2021-09-28 | 中国工商银行股份有限公司 | 一种测试案例的获取方法、装置、电子设备及存储介质 |
CN113656066A (zh) * | 2021-08-16 | 2021-11-16 | 南京航空航天大学 | 一种基于特征对齐的克隆代码检测方法 |
CN113656066B (zh) * | 2021-08-16 | 2022-08-05 | 南京航空航天大学 | 一种基于特征对齐的克隆代码检测方法 |
CN114970678A (zh) * | 2022-04-26 | 2022-08-30 | 华中科技大学 | 一种基于孪生神经网络的航发轴承故障诊断方法 |
CN114970678B (zh) * | 2022-04-26 | 2024-09-20 | 华中科技大学 | 一种基于孪生神经网络的航发轴承故障诊断方法 |
CN115129364B (zh) * | 2022-07-05 | 2023-04-18 | 四川大学 | 基于抽象语法树和图神经网络的指纹身份识别方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112394973B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113420296B (zh) | 一种基于Bert模型与BiLSTM的C源代码漏洞检测方法 | |
CN112394973B (zh) | 一种基于伪孪生网络的多语言代码剽窃检测方法 | |
CN112215013B (zh) | 一种基于深度学习的克隆代码语义检测方法 | |
CN113191148B (zh) | 一种基于半监督学习和聚类的轨道交通实体识别方法 | |
CN112463424B (zh) | 一种基于图的端到端程序修复方法 | |
CN113255320A (zh) | 基于句法树和图注意力机制的实体关系抽取方法及装置 | |
CN111723569A (zh) | 一种事件抽取方法、装置和计算机可读存储介质 | |
CN112306494A (zh) | 一种基于卷积和循环神经网络的代码分类及聚类方法 | |
CN112560486A (zh) | 基于多层神经网络的电力实体识别方法、存储介质和设备 | |
CN113204967B (zh) | 简历命名实体识别方法及系统 | |
CN112183030A (zh) | 基于预设神经网络的事件抽取方法、装置、计算机设备及存储介质 | |
CN109325125B (zh) | 一种基于cnn优化的社交网络谣言检测方法 | |
CN116661805B (zh) | 代码表示的生成方法和装置、存储介质及电子设备 | |
CN114492460B (zh) | 基于衍生提示学习的事件因果关系抽取方法 | |
CN115437952A (zh) | 一种基于深度学习的语句级软件缺陷检测方法 | |
CN115757775A (zh) | 基于文本蕴含的无触发词文本事件检测方法及系统 | |
CN115221332A (zh) | 一种危化品事故事理图谱的构建方法与系统 | |
CN117094325B (zh) | 水稻病虫害领域命名实体识别方法 | |
CN116975161A (zh) | 电力设备局放文本的实体关系联合抽取方法、设备、介质 | |
CN116166789A (zh) | 一种方法命名精准推荐和审查方法 | |
CN114330350B (zh) | 一种命名实体识别方法、装置、电子设备及存储介质 | |
CN116431746A (zh) | 基于编码库的地址映射方法、装置、电子设备及存储介质 | |
CN112131879A (zh) | 一种关系抽取系统、方法和装置 | |
CN112015891A (zh) | 基于深度神经网络的网络问政平台留言分类的方法及系统 | |
CN112256838B (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 |