10.20009/j.cnki.21-1106/TP.2021-0187
CLPDetector:一种基于伪孪生网络的跨语言代码抄袭检测工具
近年来,随着不同编程语言代码自动转换工具的出现,跨语言的代码抄袭检测问题受到了越来越多的关注.现有跨语言代码抄袭检测主要包括传统的基于中间特征的检测方法和近年来出现的基于机器学习的检测方法,后者在检测模型训练完成之后具有更好的检测速度,是当前跨语言代码抄袭检测的研究热点.然而,现有的基于机器学习的跨语言抄袭检测方法大多将代码作为文本来处理,未考虑代码的结构特征.结合代码基于抽象语法树的结构特征,本文提出了一个基于伪孪生神经网络框架的跨语言抄袭检测工具CLPDetector.该工具将训练数据中的源代码对转换成对应的抽象语法树,基于抽象语法树生成代码的向量表示,然后将结合BiLSTM、CNN和Attention的深度神经网络嵌入到伪孪生网络架构中训练抄袭检测模型,从而实现了跨语言代码抄袭的检测.为了提高检测精度,首先,在训练检测模型前,利用基于抽象语法树的skip-gram算法对词向量进行了预训练,并基于程序依赖图删除了训练数据集代码中的冗余代码.其次,在代码抄袭检测阶段,提出了一个基于属性计数的过滤器,用以排除不可能抄袭的代码对,提高检测效率.实验中基于一个开源的数据集,以Java代码和Python代码为例对CLPDe-tector的检测效果进行了验证.结果表明,在精确率和F1值方面,CLPDetector比基于属性计数的工具CLCDSA分别高7%和3%,比单纯使用BiLSTM的检测工具ASTLeaner分别高10%和8%.
代码抄袭检测、跨语言、抽象语法树、伪孪生网络
43
TP31(计算技术、计算机技术)
国家自然科学基金;国家自然科学基金;国家自然科学基金;山东省泰山学者计划;山东省泰山学者计划;教育部人文社会科学研究项目;山东省科技发展基金项目;山东省科技发展基金项目;山东科技大学优秀教学团队建设计划项目
2022-07-13(万方平台首次上网日期,不代表论文的发表时间)
共7页
1562-1568