CN102023921A - Sql程序自动评分方法及装置 - Google Patents
Sql程序自动评分方法及装置 Download PDFInfo
- Publication number
- CN102023921A CN102023921A CN2010105937597A CN201010593759A CN102023921A CN 102023921 A CN102023921 A CN 102023921A CN 2010105937597 A CN2010105937597 A CN 2010105937597A CN 201010593759 A CN201010593759 A CN 201010593759A CN 102023921 A CN102023921 A CN 102023921A
- Authority
- CN
- China
- Prior art keywords
- program
- sql
- tree
- editing distance
- similarity value
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种SQL语言程序自动评分的方法,通过对学习者测试过程中所提交的SQL语言程序进行自动得评判,给出测试者的知识点掌握度、实践能力的量化评测指标。所述方法包括以下步骤:通过分别对SQL源程序和模板程序进行规范化处理,消除SQL语义上的表达多样性,得到两个规范化的SQL程序;通过分别对两个规范化程序进行词法分析和语法分析,抽取出表征程序结构的两棵抽象语法树;根据树编辑距离算法对所述两棵树进行计算,得到相似度值;以及利用所述相似度值与成绩之间的函数关系,计算最终的评分结果。
Description
技术领域
本发明涉及数据库语言编程实践中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(T1,T2)*cn
其中,Dist(T1,T2)、Dist’(T1,T2)分别表示相似因子作用之前和之后的编辑距离结果,c是相似因子,n是代价为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和age。由于SQL语言本身具有的多样性特点,因此确定一些规则使得同语义的程序具有统一的表达。其中,查询users表中的所有字段将“*”扩展表示为“name,age”;补全出现的所有字段名,使其具有“表名.字段名”的形式,若出现多表同名字段的情况,不予处理,其中“age”补全为“users.age”;同时对逻辑操作and/or进行排序,排序规则先按左操作数的字母排序,若同,则按右操作数排序,其中,“name like ‘Mike%’ and age > 25”规范化为“age > 25 and name like ‘Mike%’”。
接下来在步骤S11结构抽取,通过对所得规范化程序进行词法分析、语法分析,生成对应的语法分析树。例如,该步骤可以利用一些开源的库如ANTLR、ELSA等来执行词法和语法分析。这是编译过程的一部分,只需要提供确定的数据库语言的词法和语法规则即可。如图2所示,“SELECT name FROM users WHERE age>25”生成的示例性抽象语法树200基于下述简单SQL语法规则,图中黑体字母为结构化查询语言的保留字:
structured query language 结构化查询语言
select_stmt查询语言
“select查询”
select_list 字段列表
“from来源”
table_references引用表
“where_condition查询条件”
[where where_condition]条件表达式
[order by orderby_clause]顺序
[group by groupby_clause]集合
logical_exp comparison _exp { and | or } comparsion_exp | not comparison _exp
词法和语法规则的不同,对树的大小和规模造成影响。再次参照图1,接下来在步骤S12,使用改进的树编辑距离算法对所述学生程序树与模板程序树进行计算,得到相似度值。这里,树编辑距离为:
其中,表示以为根的树与以为根的树的树编辑距离,是代价函数,、、分别表示节点转换为的代价,删除节点的代价,添加节点的代价。这里,由于树中每个节点对结构的重要性是不同的,特别地,确定根据所操作节点类型赋予权值,如节点i为关键字时,权值wi=2,则=2。另外,部分相似即相似子树对整棵树相似度的贡献,比相同数目的离散节点对树相似度的贡献大,特别地,引入相似因子的概念,作用于树编辑距离如:Dist’(T1,T2)= Dist(T1,T2)*cn
其中,Dist(T1,T2)、Dist’(T1,T2)分别表示相似因子作用之前和之后的编辑距离结果,n是代价为0的有序节点对,c是相似因子,取值范围在[0,1]之间,而且接近1,如0.9。
接下来在步骤S13,利用所述相似度值与成绩之间的函数关系,计算最终的评估结果。所述函数关系是通过训练数据对相似度值与成绩作回归分析得出,训练数据是由相似度值和对应成绩组成的元组集合,由专业指导教师通过人工评估获得,特别地,在训练数据上进行回归分析发现两者之间的函数关系,如一般的线性关系可表示成y=b+wx,y表示成绩,x表示树编辑距离,b和w是回归系数,由最小二乘方法求解;或者数据呈非线性依赖,则使用多项式回归。通过训练出来的函数,在正式评估流程中可以计算出学生具体的得分。
显而易见,在此描述的本发明可以有许多变化,这中变化不能认为偏离本发明的劲射和范围。因此,所有对本领域技术人员显而易见的改变,都包含在本权利要求书的涵盖范围之内。
Claims (10)
1.一种对SQL程序进行自动评估的方法,其特征是,所述方法包括以下步骤:
通过分别对SQL源程序和模板程序进行规范化处理,消除SQL语义上的表达多样性,得到两个规范化的SQL程序;
通过分别对两个规范化程序进行词法分析和语法分析,抽取出表征程序结构的两棵抽象语法树;
根据树编辑距离算法对所述两棵抽象语法树进行计算,确定源程序与模板程序直接的相似度值;以及
利用相似度值与成绩之间的函数关系,计算源程序评分。
2.如权利要求1所述的方法,其特征在于,所述规范化处理包括,对所述SQL程序中“*“号进行扩展。
3.如权利要求1所述的方法,其特征在于,所述规范化处理包括,对所述SQL程序中出现的字段名进行补全。
4.如权利要求1所述的方法,其特征在于,所述规范化处理包括,对所述SQL程序中逻辑操作进行排序。
5.如权利要求1所述的方法,其特征在于,在抽取到所述规范化程序的语法树结构之后,使用改进的树编辑距离算法确定所述两棵抽象语法树之间的相似度值。
6.如权利要求5所述的方法,其特征在于,所述树编辑距离算法的改进包括,在所述树编辑距离算法中通过增加节点权重来修改代价模型。
7.如权利要求5所述的方法,其特征在于,所述树编辑距离算法的改进包括,引入相似因子调整部分相似对所述树编辑距离算法的贡献。
8.如权利要求7所述的方法,其特征在于,所述相似因子作用于所述树编辑距离算法计算结果如:Dist’(T1,T2)= Dist(T1,T2)*cn
其中,Dist(T1,T2)、Dist’(T1,T2)分别表示相似因子作用之前和之后的编辑距离结果,c是相似因子,n是代价为0的有序节点对。
9.如权利要求1所述的方法,其特征在与,所述函数关系是通过训练数据对相似度值与成绩作回归分析得出。
10.一种自动评估SQL程序正确性的装置,包括:
规范化处理单元,用于分别对所述SQL源程序和模板程序进行规范化处理,生成两个语义上表达统一的规范化程序;
结构抽取单元,用于所述规范化程序进行词法分析和语法分析,生成表征程序结构特征的抽象语法树;
相似度计算单元,根据树编辑距离算法对所述两棵语法树进行计算,得到相似度值;
利用所述相似度值与成绩之间的函数关系,计算最终的程序评分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105937597A CN102023921A (zh) | 2010-12-17 | 2010-12-17 | Sql程序自动评分方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105937597A CN102023921A (zh) | 2010-12-17 | 2010-12-17 | Sql程序自动评分方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102023921A true CN102023921A (zh) | 2011-04-20 |
Family
ID=43865241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105937597A Pending CN102023921A (zh) | 2010-12-17 | 2010-12-17 | Sql程序自动评分方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102023921A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021075A (zh) * | 2014-05-22 | 2014-09-03 | 小米科技有限责任公司 | 用于程序代码的评估方法和装置 |
CN105224818A (zh) * | 2015-11-10 | 2016-01-06 | 北京科技大学 | 一种作业程序自动评分方法及系统 |
CN106293891A (zh) * | 2015-06-12 | 2017-01-04 | 交通银行股份有限公司 | 多维投资指标监督方法 |
CN107516445A (zh) * | 2017-09-11 | 2017-12-26 | 立乐教育科技(上海)有限公司 | 在线编程教学方法及系统 |
CN107729925A (zh) * | 2017-09-26 | 2018-02-23 | 中国科学技术大学 | 对程序竞赛型源代码按照解题方法做自动分类与评分的方法 |
CN109240903A (zh) * | 2017-06-15 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 一种自动评估的方法和装置 |
CN109491915A (zh) * | 2018-11-09 | 2019-03-19 | 网易(杭州)网络有限公司 | 数据处理方法及装置、介质和计算设备 |
CN109783106A (zh) * | 2018-12-28 | 2019-05-21 | 西安交通大学 | 一种基于编辑距离的自适应反馈程序评测方法及装置 |
CN110163498A (zh) * | 2019-05-15 | 2019-08-23 | 广州视源电子科技股份有限公司 | 课件原创度评分方法、装置、存储介质及处理器 |
CN110164216A (zh) * | 2019-05-23 | 2019-08-23 | 福建工程学院 | 一种sql在线评测系统 |
CN110297750A (zh) * | 2018-03-22 | 2019-10-01 | 北京京东尚科信息技术有限公司 | 程序相似性检测的方法和装置 |
CN111914541A (zh) * | 2020-07-02 | 2020-11-10 | 蜂巢在线(广州)教育科技有限公司 | 计算机程序答题评分系统、方法、装置和存储介质 |
CN112132420A (zh) * | 2020-09-04 | 2020-12-25 | 广西大学 | 一种面向sql查询的细化评分方法 |
WO2021087648A1 (en) * | 2019-11-04 | 2021-05-14 | Merico, Inc. | Systems and methods for evaluating code contributions by software developers |
-
2010
- 2010-12-17 CN CN2010105937597A patent/CN102023921A/zh active Pending
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021075A (zh) * | 2014-05-22 | 2014-09-03 | 小米科技有限责任公司 | 用于程序代码的评估方法和装置 |
CN106293891A (zh) * | 2015-06-12 | 2017-01-04 | 交通银行股份有限公司 | 多维投资指标监督方法 |
CN106293891B (zh) * | 2015-06-12 | 2020-08-04 | 交通银行股份有限公司 | 多维投资指标监督方法 |
CN105224818A (zh) * | 2015-11-10 | 2016-01-06 | 北京科技大学 | 一种作业程序自动评分方法及系统 |
CN105224818B (zh) * | 2015-11-10 | 2018-09-25 | 北京科技大学 | 一种作业程序自动评分方法及系统 |
CN109240903A (zh) * | 2017-06-15 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 一种自动评估的方法和装置 |
CN107516445A (zh) * | 2017-09-11 | 2017-12-26 | 立乐教育科技(上海)有限公司 | 在线编程教学方法及系统 |
CN107729925B (zh) * | 2017-09-26 | 2020-03-31 | 中国科学技术大学 | 对程序竞赛型源代码按照解题方法做自动分类与评分的方法 |
CN107729925A (zh) * | 2017-09-26 | 2018-02-23 | 中国科学技术大学 | 对程序竞赛型源代码按照解题方法做自动分类与评分的方法 |
CN110297750A (zh) * | 2018-03-22 | 2019-10-01 | 北京京东尚科信息技术有限公司 | 程序相似性检测的方法和装置 |
CN109491915A (zh) * | 2018-11-09 | 2019-03-19 | 网易(杭州)网络有限公司 | 数据处理方法及装置、介质和计算设备 |
CN109491915B (zh) * | 2018-11-09 | 2022-02-08 | 网易有道信息技术(杭州)有限公司 | 数据处理方法及装置、介质和计算设备 |
CN109783106A (zh) * | 2018-12-28 | 2019-05-21 | 西安交通大学 | 一种基于编辑距离的自适应反馈程序评测方法及装置 |
CN109783106B (zh) * | 2018-12-28 | 2021-05-28 | 西安交通大学 | 一种基于编辑距离的自适应反馈程序评测方法及装置 |
CN110163498A (zh) * | 2019-05-15 | 2019-08-23 | 广州视源电子科技股份有限公司 | 课件原创度评分方法、装置、存储介质及处理器 |
CN110163498B (zh) * | 2019-05-15 | 2021-08-03 | 广州视源电子科技股份有限公司 | 课件原创度评分方法、装置、存储介质及处理器 |
CN110164216A (zh) * | 2019-05-23 | 2019-08-23 | 福建工程学院 | 一种sql在线评测系统 |
CN110164216B (zh) * | 2019-05-23 | 2021-04-23 | 福建工程学院 | 一种sql在线评测系统 |
WO2021087648A1 (en) * | 2019-11-04 | 2021-05-14 | Merico, Inc. | Systems and methods for evaluating code contributions by software developers |
US11816017B2 (en) | 2019-11-04 | 2023-11-14 | Merico, Inc. | Systems and methods for evaluating code contributions by software developers |
CN111914541A (zh) * | 2020-07-02 | 2020-11-10 | 蜂巢在线(广州)教育科技有限公司 | 计算机程序答题评分系统、方法、装置和存储介质 |
CN112132420A (zh) * | 2020-09-04 | 2020-12-25 | 广西大学 | 一种面向sql查询的细化评分方法 |
CN112132420B (zh) * | 2020-09-04 | 2023-11-28 | 广西大学 | 一种面向sql查询的细化评分方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102023921A (zh) | Sql程序自动评分方法及装置 | |
CN103235772B (zh) | 一种文本集人物关系自动提取方法 | |
CN105701253A (zh) | 中文自然语言问句语义化的知识库自动问答方法 | |
CN107818164A (zh) | 一种智能问答方法及其系统 | |
CN108446540A (zh) | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 | |
Jiang et al. | OmniTab: Pretraining with natural and synthetic data for few-shot table-based question answering | |
CN110175585B (zh) | 一种简答题自动批改系统及方法 | |
CN108717433A (zh) | 一种面向程序设计领域问答系统的知识库构建方法及装置 | |
CN103176963A (zh) | 基于crf++汉语句义结构模型自动标注方法 | |
CN106257455A (zh) | 一种基于依存关系模板抽取观点评价对象的Bootstrapping算法 | |
CN102750316A (zh) | 基于语义共现模型的概念关系标签抽取方法 | |
CN106407113A (zh) | 一种基于Stack Overflow和commit库的bug定位方法 | |
CN113127339B (zh) | 一种Github开源平台数据的获取方法及源代码缺陷修复系统 | |
CN105095091B (zh) | 一种基于倒排索引技术的软件缺陷代码文件定位方法 | |
CN110164217A (zh) | 一种在线问答和复习自测教学系统 | |
CN104699695B (zh) | 一种基于多特征语义树核的关系抽取方法和信息检索方法 | |
Banerjee et al. | Dblp-quad: A question answering dataset over the dblp scholarly knowledge graph | |
CN116804980A (zh) | 一种二进制组件检索方法及装置 | |
CN103177089A (zh) | 基于中心块的句义成分关系分层识别方法 | |
KR102498403B1 (ko) | 자연어를 sql로 변환하는 시스템을 위한 훈련 세트 수집 장치 및 그 방법 | |
Wen et al. | Code similarity detection using ast and textual information | |
KR101662399B1 (ko) | 키워드 입력 기반의 사용자 관심정보를 이용한 질의응답 장치 및 방법 | |
CN112230990A (zh) | 一种基于层级注意力神经网络的程序代码查重方法 | |
Lin | Design of the violin performance evaluation system based on mobile terminal technology | |
KR101207375B1 (ko) | 수식 컨텐츠 관리 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110420 |