[发明专利]对程序竞赛型源代码按照解题方法做自动分类与评分的方法有效
申请号: | 201710883195.2 | 申请日: | 2017-09-26 |
公开(公告)号: | CN107729925B | 公开(公告)日: | 2020-03-31 |
发明(设计)人: | 孙广中;潘轶功 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06K9/62 | 分类号: | G06K9/62;G06F11/36 |
代理公司: | 北京凯特来知识产权代理有限公司 11260 | 代理人: | 郑立明;郑哲 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 竞赛 源代码 按照 解题 方法 自动 分类 评分 | ||
本发明公开了一种对程序竞赛型源代码按照解题方法做自动分类与评分的方法,包括:对数据库中针对问题P的各程序在抽象语法树上做程序变换,获得标准化后的程序;从标准化后的程序或程序片段中提取特征,获得所有的特征集合;基于提取的所有的特征集合进行多实例多分类学习,获得分类模型;利用分类模型对新输入的针对问题P的各程序进行自动分类,并进行评分。该方法可以根据程序源代码按照解题方法准确的实现分类与评分。
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种对程序竞赛型源代码按照解题方法做自动分类与评分的方法。
背景技术
目前主要有如下两种方式实现程序解题方法的分类与评分:
现有技术一:将程序源代码代入多组测试数据运行,按照通过的测试点数据数目给程序做评分。不足之处在于死板、机械地按照程序源代码通过的测试点数据数目给程序做评分会导致评分的不公平,比如通过测试数据少的源代码有可能非常接近正确的程序,只是存在一些小错误。
现有技术二:使用机器学习方法做程序评分:特征从程序的抽象语法树、控制流图、数据依赖图中提取,程序由好到差被分为五个等级。不足之处在于无法对多解法的程序进行评分。
现有技术三:使用无监督学习方法对语义相似的程序做聚类。不足之处在于这种分类的粒度过细,是语言层次上的分类,而不是算法层次上的,相同的解法不同的实现也会被分到不同的类别。
发明内容
本发明的目的是提供一种对程序竞赛型源代码按照解题方法做自动分类与评分的方法,可以根据程序源代码按照解题方法准确的实现分类与评分。
本发明的目的是通过以下技术方案实现的:
一种对程序竞赛型源代码按照解题方法做自动分类与评分的方法,包括:
对数据库中针对问题P的各程序在抽象语法树上做程序变换,获得标准化后的程序;
从标准化后的程序或程序片段中提取特征,获得所有的特征集合;
基于提取的所有的特征集合进行多实例多分类学习,获得分类模型;
利用分类模型对新输入的针对问题P的各程序进行自动分类,并进行评分。
由上述本发明提供的技术方案可以看出,使用多实例学习技术可以对程序源代码按照解题方法准确的进行准确的分类,在此基础上,可以对多解法题目的程序做自动评分,可以避免几乎完整地按照某种解法写出的程序,不会因为一点小错误而得低分,从而提高评分的准确性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的对程序竞赛型源代码按照解题方法做自动分类与评分的方法框架图;
图2为本发明实施例提供的为运算符’*’和’+’在语法树上的一次出现的示意图;
图3为本发明实施例提供的为运算符’*’和’+’在数据依赖图上的一次出现的示意图;
图4为本发明实施例提供的五道题目的混淆矩阵。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710883195.2/2.html,转载请声明来源钻瓜专利网。