python语言案例教程张太红_Python程序代码相似度检测

实践与经验 现代计算机 2014.12 上 Python 程序代码相似度检测 赵明洪,张太红,王正敏 (新疆农业大学计算机与信息工程学院,乌鲁木齐 830052) 摘要:代码剽窃是程序语言课程中经常出现的一种作弊行为,严重破坏正常的教学秩序。检测剽窃的程序代码、验证学生程序作业的原创性在程序语言教学中就尤为重要。结合程序代码相似度检测技术中的属性计数技术和结构度量技术,提出一种适用于 Python 程序的相似度检测方法,该方法能够有效地计算出学生 Python 程序作业之间的相似度。 关键词: 剽窃; Python; 相似度 文章编号:1007-1423(2014)34-0030-03 DOI:10.3969/j.issn.1007-1423.2014.34.009 0 引言 Python 是一种很流行的开源编程语言, 可以在很多领域中编写独立的程序和脚本。 Python 具有免费、可移植、功能强大、通用性好这些特点,而且使用起来相当容易。它广泛应用于游戏编程、网络编程、Windows 编程、多媒体、图形用户界面、企业与政务应用等诸多方面。 因为 Python 的这些优点,Python 已经备受广大企业和编程者的喜爱, 而且国内外的许多高校也已经把Python 作为编程入门的基础程序语言。 然而因为信息技术的发展, 从互联网上获取程序资源也越来越方便和快捷, 有些学生可以直接从网上查找相关程序或者从同学那里直接复制程序进行作业提交, 所以程序代码的相似度检测在程序语言的教学中就具有非凡的意义。 但是程序代码并不像普通文本那样特别的规范,而且对于不同编程语言,各自的语法规则也有许多差异。因此程序代码的相似度就很难用一个统一的标准和方法来衡量, 所以本文提出并设计了一种适用于 Python 程序设计语言的代码相似度检测方法。 1 程序代码相似度检测相关技术 目前, 国内外对程序代码相似度检测的技术主要有属性计数技术和结构度量技术。 属性计数技术是最先被提出和使用的程序代码抄袭检测技术, 它的主要 思想是统计程序的一些属性,然后再进行处理,而不考虑程序的内部结构[2]。 属性技术法的程序属性选定主要有:数组个数、自定义变量个数、关键字个数、运算符个数。 结构度量技术主要是通过对程序的内部结构进行分析比较来判断两段程序代码的相似性[3]。 结构度量技术的常用程序结构选定主要有:分支结构、条件结构、循环结构、函数个数。 2 Python 程序代码相似度检测方法的设计 本文提出的程序代码相似度检测方法主要是结合了属性计数法和结构度量技术的技术理念, 利用正则表达式提取出能代表 Python 程序代码的特征向量。 然后再对特征向量的每一个对象进行加权处理, 最后利用向量相似度度量方法对加权后的特征向量进行相似度的计算,得出一个相似度值,这个值就可以代表两个Python 程序的相似度。 整个 Python 程序相似度检测系统的设计构架如图 1 所示。 图 1 3 程序代码特征向量的生成 Python 程序代码的特征向量要能准确地代表一个 趦趭 实践与经验 现代计算机 2014.12 上 Python 程序, 特征向量里面的特征必须根据 Python 语言的词法特性和语法特性合理地选取。 而且在特征的提取之前, 还得把程序中与特征提取无关的冗余信息去除掉,防止提取特征时冗余信息的干扰。 最后再对处理后的程序代码提取特征,生成对应的特征向量。 3.1 程序代码特征的选取 本系统主要是提取 Python 程序里面的词来作为Python 程序的特征词, 系统里的 “词”

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值