一种在线评测系统的题目推荐方法与流程

文档序号:20357039发布日期:2020-04-10 23:25阅读:319来源:国知局
一种在线评测系统的题目推荐方法与流程
本发明涉及编程数据处理
技术领域
,具体而言,尤其涉及一种在线评测系统的题目推荐方法。
背景技术
:在线评测系统(onlinejudge)能够自动对程序进行评判,并根据题目的评测情况,返回评测结果。在线评测系统一开始用于国际大学生程序设计竞赛的竞赛系统,由于系统对程序判定的公平性,通过此项竞赛培养和选拔了一批优秀的信息技术人才。由于在线评测系统的应用能够有效的提高学生的编程能力和程序设计能力,在全球范围内有越来越多的高校应用在线评测系统作为培养提升学生编程能力和程序设计竞赛技能的实验平台。随着互联网应用的普及,各大在线评测系统中都有非常大量的题目和注册用户,大量的题目代码提交,这些提交的代码中有正确的和很多不正确的。每道题目都有数以百计万计的代码提交,并且提交量每天都在增长,关于题目和解题代码提交的大量数据导致了用户无法根据自己的能力选择合适的题目。一种基于服务的可扩展程序竞赛评测系统(申请号:201710046903)克服当前程序评测系统技术上的不足,提供一种基于服务的、可根据实际情况灵活扩展的、能够对外提供服务的分布式程序竞赛评测系统,但是,并未涉及到在线评测系统的题目推荐功能。技术实现要素:根据上述提出的技术问题,而提供一种在线评测系统的题目推荐方法。本发明根据在线评测系统中的用户提交题目的三元组,建立了用户题目关联矩阵。根据关联矩阵计算活动用户于其他用户的相似性。根据相似性排序对活动用户未解出的题目进行计分。本发明采用的技术手段如下:一种在线评测系统的题目推荐方法,包括如下步骤:s1、提取在线评测系统数据库中的用户提交题目的三元组;s2、建立用户题目关联矩阵;s3、通过用户解出题目的情况,计算用户之间的相似性;s4、计算推荐题目得分;s5、根据题目得分,对题目进行排序,根据题目排序推荐给用户适合做的题目。进一步地,所述的数据库中存在一个题目提交的集合s={s1,s2,…,si,…,sn},每次提交的si是一个三元组<用户,问题,判题结果>,表示相应的用户解决相应的问题,给出相应的判决结果。进一步地,所述判决结果的类型包括正确、答案错误、超时、运行时错误、编译错误、格式错误。进一步地,所述步骤s2中建立的用户题目关联矩阵中,每个用户对应一道题目,有一个布尔型变量,如果用户的代码正确的解出了题目,布尔型变量的值为1,否则值为0。进一步地,所述步骤s3中计算用户之间的相似性的具体过程如下:s31、计算活动用户和用户i一共解出了多少道题目,记作num;s32、计算活动用户和用户i共同解出的题目,记作c;s33、活动用户和用户i的相似性为c/num。进一步地,所述步骤s4中计算推荐题目得分的具体过程如下:s41、计算活动用户和其他用户的相似性;s42、按照相似性大小对其他用户进行排序,取前k名相似性高的用户,根据前k名用户解出题目的情况对活动用户未解决的问题p进行计分;s43、对于每一个活动用户未解出的问题p,如果排名前k名的用户有1位用户解出,那么问题p的分数加1,如果前k名的用户有n名用户解出了这道题目,则问题p的得分为n。较现有技术相比,本发明具有以下优点:本发明提供的在线评测系统的题目推荐方法,可应用于程序设计课程教学和竞赛的在线评测系统中,能够推荐给用户适合其编程能力的题目,避免盲目做题而导致大量错误提交。基于上述理由本发明可在编程数据处理等领域广泛推广。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明方法流程图。具体实施方式为了使本
技术领域
的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。实施例如图1所示,本发明提供了一种在线评测系统的题目推荐方法,包括如下步骤:s1、提取在线评测系统数据库中的用户提交题目的三元组;进一步地,作为本发明优选的实施方式,所述的数据库中存在一个题目提交的集合s={s1,s2,…,si,…,sn},每次提交的si是一个三元组<用户,问题,判题结果>,表示相应的用户解决相应的问题,给出相应的判决结果,判决结果的类型包括正确、答案错误、超时、运行时错误、编译错误、格式错误。本实施例中,提取的用户提交题目的三元组具体如下:s1:<用户1,问题1,正确>,s2:<用户1,问题2,编译错误>,s3:<用户1,问题3,答案错误>,s4:<用户1,问题4,正确>,s5:<用户1,问题5,正确>;s6:<用户2,问题1,正确>,s7:<用户2,问题2,正确>,s8:<用户2,问题3,超时>,s9:<用2,问题4,编译错误>,s10:<用户2,问题5,超时>…s2、建立用户题目关联矩阵;进一步地,作为本发明优选的实施方式,所述步骤s2中建立的用户题目关联矩阵中,每个用户对应一道题目,有一个布尔型变量,如果用户的代码正确的解出了题目,布尔型变量的值为1,否则值为0。如下表所示:问题1问题2问题3问题4问题5用户110011用户211000用户311010用户411100用户510111用户1正确解出了问题1、问题4和问题5,用户2正确解出了问题1和问题2。s3、通过用户解出题目的情况,计算用户之间的相似性;进一步地,作为本发明优选的实施方式,所述步骤s3中计算用户之间的相似性的具体过程如下:s31、计算活动用户和用户i一共解出了多少道题目,记作num;s32、计算活动用户和用户i共同解出的题目,记作c;s33、活动用户和用户i的相似性为c/num。具体的,本实施例中,如果用户1是活动用户,则:活动用户1和用户2的相似性,记作s12=1/4=0.25;活动用户1和用户3的相似性,记作s13=2/4=0.50;活动用户1和用户4的相似性,记作s14=1/5=0.20;活动用户1和用户5的相似性,记作s15=3/4=0.75;s4、计算推荐题目得分;进一步地,作为本发明优选的实施方式,所述步骤s4中计算推荐题目得分的具体过程如下:s41、计算活动用户和其他用户的相似性;s42、按照相似性大小对其他用户进行排序,取前k名相似性高的用户,根据前k名用户解出题目的情况对活动用户未解决的问题p进行计分;s43、对于每一个活动用户未解出的问题p,如果排名前k名的用户有1位用户解出,那么问题p的分数加1,如果前k名的用户有n名用户解出了这道题目,则问题p的得分为n。本实施例中,根据相似性取前3位用户,用户2、3、5计算推荐题目得分,题目2推荐得分为p2=2,题目3推荐得分为p3=1。s5、根据题目得分,对题目进行排序,根据题目排序推荐给用户适合做的题目。本实施例中,为活动用户1推荐的题目序列为:第1位问题2;第2位问题3;最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1