当前位置: 首页 > 专利查询>江苏大学专利>正文

SQL程序自动评分方法及装置制造方法及图纸

技术编号:5434685 阅读:241 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种SQL语言程序自动评分的方法,通过对学习者测试过程中所提交的SQL语言程序进行自动得评判,给出测试者的知识点掌握度、实践能力的量化评测指标。所述方法包括以下步骤:通过分别对SQL源程序和模板程序进行规范化处理,消除SQL语义上的表达多样性,得到两个规范化的SQL程序;通过分别对两个规范化程序进行词法分析和语法分析,抽取出表征程序结构的两棵抽象语法树;根据树编辑距离算法对所述两棵树进行计算,得到相似度值;以及利用所述相似度值与成绩之间的函数关系,计算最终的评分结果。

【技术实现步骤摘要】

本专利技术涉及数据库语言编程实践中SQL程序正确性的自动评估。技术背景随着计算机技术迅速发展和新时代对人才的新要求,传统的数据库语言实验课 程所采用的集中上机实验、教师巡回指导、纸质报告评分模式,造成的问题学习者不 能得到及时的指导;物理空间的限制,不能满足学习者再学习的需求;不能科学地评价 学生的实际的学习效果。数据库SQL语言虽然具有自己的语法语义,但其难以阅读且表 达方式多样,使得人工评分变得艰难。另外,人眼的局限性以及评分人员的主观影响, 很容易造成评分的失准以及片面性。在 Automatic program assessment system.Paper made by A.M.Zin and Dr E.Foxley,University of Nottingham UK文中,作者总结了程序自动评估的两种方法(1)动态评估方法;(2)静态评估方法。动态方法使用测试数据集执行代码来核查程序的 正确性,可以发现执行中的错误;静态方法不执行代码,只检查源代码的语法和语义, 从中发现静态错误并产生统计信息以指导评估。目前,已有许多源程序自动评分工具,如加拿大New Brunswick大学的GUI_ Grader、英国 Warwick 大学的 BOSS、美国 Computing Brigham Young 大学开发的 WAGS等。这些工具大部分采用的是动态方法,评估结果依赖于程序成功通过测试数据集测试 的比例;少部分使用静态评估,通过比较源程序与结果程序的相似度来评判。然而,动态评估只关注结果,一旦程序发生编译错误,则给予0分处理,即使 程序只是出现了拼写错误。动态评分不注重过程的特征使得上述大部分工具评分过于片 面和极端,未考虑学生具体的劳动过程。而采用静态方法的工具也仅仅是使用一些从某 个方法衡量程序的统计指标,没有从一个全局的概念去理解学生的思想,造成评估的不 科学性。对于数据库语言来说,由于其程序本身的编写依赖特定的数据库表结构和数据 集,若采用对测试数据集进行动态执行来评估,需要对数据集合进行频繁的数据导入和 导出,实际操作不可行;若采用静态方法,由于SQL程序属于结构化多层嵌套式的查询 语言,利用属性计数方法来描述程序的特征的评价方法,不适用SQL语言;赵长海等人 的已公开专利“源程序相似性检测方法及研究”(公开号CN 101315599A),通过反 汇编源程序相似性来检测程序相似性,此方法是针对编译型语言而言,对SQL这种解释 型语言并不适用。总而言之,针对SQL程序,尚未见自动评分的装置和方法。
技术实现思路
本专利技术的目的在于,从一个框架层面上去分析学生SQL程序的结构特征,充分 考虑学生的每一分劳动成果,解决动态评分的固有缺陷和现有静态评分存在的问题。本专利技术的基本思想是,分别范化处理SQL学生程序和模板程序,通过词法分析和语法分析处理规范化程序,抽取出程序对应的结构信息即抽象语法树,并利用改进的 树编辑距离算法计算学生程序树与模板程序树之间的相似度进行计算并籍此评估。根据本专利技术的第一方面,提供一种基于结构相似度对SQL程序的正确性进行评 估的方法,所述方法包括以下步骤通过分别对SQL源程序和模板程序进行规范化处 理,消除SQL语义上的表达多样性,得到两个规范化的SQL源程序;通过对规范化的 SQL源程序进行词法分析和语法分析,抽取出表征源程序结构的树;根据树编辑距离算 法对所述结构树与标准答案结构树进行计算,得到相似度值;以及利用所述相似度值与 成绩之间的函数关系,计算最终的评估结果。在第一个方面中,优选地,所述规范化处理包括,对所述SQL程序中“* “号 进行扩展。优选地,所述信息筛选包括,对所述SQL程序中出现的字段名进行补全。优选地,所述树编辑距离算法的改进包括,对所述SQL程序中逻辑操作进行排序。优选地,在抽取到所述规范化程序的语法树结构之后,使用改进的树编辑距离 算法确定所述两棵抽象语法树之间的相似度值。优选地,所述树编辑距离算法的改进包括,引入相似因子调整部分相似对所述 树编辑距离算法的贡献。优选地,所述相似因子作用于所述树编辑距离算法计算结果如 Dist,(T1,T2) = Dist (Tl,T2)*cn其中,Dist(Tl,T2)、Dist’ (Tl,T2)分别表示相似因子作用之前和之后的编辑距离结 果,c是相似因子,η是代价为0的有序节点对。优选地,所述函数关系是通过训练数据对相似度值与成绩作回归分析得出。根据第二方面,提供一种评估源程序正确性的模型,包括规范化处理单元, 对所学生SQL程序和模板程序进行语义表达上的规范化处理;结构抽取单元,用于对 源程序进行词法分析和语法分析,生成表征程序结构特征的抽象语法树;相似度计算单 元,根据树编辑距离算法对所述两棵抽象语法树进行计算,得到相似度值。利用所述相 似度值与成绩之间的函数关系,计算最终的评分结果。附图说明图1是本专利技术实施例1的流程图。图2是本专利技术实施例1中一棵示例性的SQL程序结构语法树。具体实施方式为了更好地理解本专利技术,下面结合附图和具体实施方式对本专利技术作进一步的 说明。参照图1,图1是根据本专利技术对学生SQL程序进行正确性自动评估的方法的 流程图。首先在步骤S10,对待评估的SQL程序进行规范化处理,生成一个规范化的 程序。例如,数据库操纵语言DML语句“ SELECT * FROM users WHERE name like‘Mike%,and age >25”,假设数据库表users中有字段name和iige。由于SQL语言本身具有的多样性特点,因此确定一些规则使得同语义的程序具有统一的表达。其中,查 询users表中的所有字段将“*”扩展表示为“name^ge” ;补全出现的所有字段名,使 其具有“表名.字段名”的形式,若出现多表同名字段的情况,不予处理,其中“iige” 补全为“users.iige” ;同时对逻辑操作and/or进行排序,排序规则先按左操作数的字母 排序,若同,则按右操作数排序,其中,“name like ‘Mike%,and age >25规范化为 age >25 and name like iMike0Zo' ”。 接下来在步骤Sll结构抽取,通过对所得规范化程序进行词法分析、语法分 析,生成对应的语法分析树。例如,该步骤可以利用一些开源的库如ANTLR、ELSA等 来执行词法和语法分析。这是编译过程的一部分,只需要提供确定的数据库语言的词法 和语法规则即可。如图2所示,“SELECT name FROM users WHERE age>25生本文档来自技高网
...

【技术保护点】
一种对SQL程序进行自动评估的方法,其特征是,所述方法包括以下步骤:通过分别对SQL源程序和模板程序进行规范化处理,消除SQL语义上的表达多样性,得到两个规范化的SQL程序;通过分别对两个规范化程序进行词法分析和语法分析,抽取出表征程序结构的两棵抽象语法树;根据树编辑距离算法对所述两棵抽象语法树进行计算,确定源程序与模板程序直接的相似度值;以及利用相似度值与成绩之间的函数关系,计算源程序评分。

【技术特征摘要】
1.一种对SQL程序进行自动评估的方法,其特征是,所述方法包括以下步骤 通过分别对SQL源程序和模板程序进行规范化处理,消除SQL语义上的表达多样性,得到两个规范化的SQL程序;通过分别对两个规范化程序进行词法分析和语法分析,抽取出表征程序结构的两棵 抽象语法树;根据树编辑距离算法对所述两棵抽象语法树进行计算,确定源程序与模板程序直接 的相似度值;以及利用相似度值与成绩之间的函数关系,计算源程序评分。2.如权利要求1所述的方法,其特征在于,所述规范化处理包括,对所述SQL程序 中“* “号进行扩展。3.如权利要求1所述的方法,其特征在于,所述规范化处理包括,对所述SQL程序 中出现的字段名进行补全。4.如权利要求1所述的方法,其特征在于,所述规范化处理包括,对所述SQL程序 中逻辑操作进行排序。5.如权利要求1所述的方法,其特征在于,在抽取到所述规范化程序的语法树结构之 后,使用改进的树编辑距离算法确定所述两棵抽象语法树之间的相似度值。6.如权利要求5所述的方法,其特征在于,所述树编辑距离算法的改进包括,在所述 树编辑...

【专利技术属性】
技术研发人员:杨鹤标
申请(专利权)人:江苏大学
类型:发明
国别省市:32[中国|江苏]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1