基于词嵌入的源码相似度研究
2021-08-02谢春丽王梦琦
软件导刊 2021年7期
钱 程,谢春丽,王梦琦,权 雷
(1.江苏师范大学智慧教育学院;2.江苏师范大学计算机科学与技术学院,江苏徐州 221116)
0 引言
随着Github、StackOverflow 等开源代码平台的开放,这些开源代码的直接获取不可避免地引发了代码剽窃,无形中增加了程序漏洞的传播。高校各种在线判题系统(On⁃line Judge,OJ)使用过程中,学生作业以源代码形式提交到OJ 平台,平台在线自动完成评测,这种方式使得学生抄袭他人代码现象泛滥[1]。事实上,商用软件领域抄袭的现象也愈演愈烈[1],造成了维护程序编写者知识产权日渐困难的局面。因此,研究代码克隆并评测代码剽窃这一问题很有必要。文本相似度度量是解决该类问题的基础手段,它也适用于其他领域,如文本分类[2]、信息检索、自动代码补充[3]等。相关文本相似度计算方法不断被设计研究出来,比较常见的有N-gram、TF-IDF、LSA 等。
N-gram 模型注重词数量特征,缺乏对语义的检测[4]。武永亮等[5]提出的TF-IDF 模型通过计算词频权重来比较词的重要性,但这种方法仅仅只针对文本统计信息,缺乏对词义、结构的计算。一些其他基于关键词典的方法受词典大小限制,需要大量词汇;而基于编辑距离的方法由于应用场景受限制,对长句的检测、计算存在较大误差[6]。
针对上述问题,本文选择基于向量空间的模型,通过TF-IDF 和Word2vec 构建模型。将该模型与基于N-Gram的模型进行对比,以期尽可能考虑到文本相似度的语义因素,并对其计算结果进行比较和分析。实验结果表明,基于向量空间的模型在检测C++源码相似情况的效果要优于基于词的N-gram 模型。……
登录APP查看全文
