System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及自然语言处理,更具体的,涉及一种基于抽象语法树和向量空间模型的编程题自动评测方法。
技术介绍
1、在当今的编程教育中,自动评测方法已成为一种重要的辅助工具,特别是在编程题的评分上。然而,面对编程题,尤其是涉及复杂逻辑和多样化解决方案的情况,现有的自动评测系统常常展现出局限性,实现起来难度较大。因此,对编程题的自动评分一直是在线考试领域内的研究难点和热点,具有十分重要的实际应用价值。实现编程题的自动评分在很大程度上既方便了大家的学习和工作又节省了人力、物力和财力,同时还提高了工作效率。
2、编程题因其固有的复杂性和多样性,要求系统具备深层次的理解和解析能力,不仅要验证代码的语法合法性,更要评估其逻辑正确性和预期功能的实现程度,这对自动评分技术提出了更高的要求。尽管如此,针对编程题自动评分的研究一直在持续深入,研究人员不断探索各种理论和技术手段,力求克服这一难题,以适应教育现代化进程中的客观需求。
3、当前主流的编程题评测方法主要分为三类:静态评测、动态评测和混合评测。
4、(1)静态评测侧重于分析学生提交的源代码,不运行代码本身。它主要关注代码的规范性、风格、以及是否符合编程规范。尽管这种方法可以有效地提升代码的可读性和规范性,但它忽略了代码的执行逻辑和性能效率,无法全面评价代码的功能实现。
5、(2)动态评测则通过执行学生的代码并与预定的测试用例结果进行比较来评分,关注点主要在于代码的执行结果是否正确和运行效率。这种方法能够确保学生代码的功能实现符合题目要求,但它往往
6、(3)混合评测方法试图结合静态和动态评测的优点,既考虑代码的质量,也考虑代码的执行结果。这种方法能够提供更为全面的评价,但其评测标准的制定和权重分配往往较为复杂,且在实际操作中难以达到既公正又高效的评分。
7、目前的编程题自动评测方法存在多方面局限:静态评测虽注重代码规范和格式,但忽视了执行逻辑与性能分析;动态评测虽能验证代码功能正确性与运行效率,却疏忽了代码内在结构、可读性和维护性评估,并且在对待多元解题策略时显得不够灵活和公平;混合评测虽尝试结合两者优势,但评测标准设计复杂,权重分配困难,实践中难以兼顾公正与效率。此外,现有评测技术普遍难以有效评价学生代码的创新性和多样性,特别是在处理复杂编程问题时,即使结构迥异但功能等价的解决方案也可能得不到准确评估;同时,这些方法也缺乏对代码语义层面的深入理解和评价,无法从代码实际意义和目的出发进行全面考量。
技术实现思路
1、本专利技术的目的在于针对当前评测方法面临的:1)难以准确评估学生代码的创新性和多样性;2)缺乏有效的机制来理解和评价代码的语义层面,因此提供一种基于抽象语法树和向量空间模型的编程题自动评测方法。
2、为实现上述目的,本专利技术的技术方案是:一种基于抽象语法树和向量空间模型的编程题自动评测方法,包括:
3、获取编程题考题信息、待评分的代码;
4、将编程题考题信息中的参考答案的代码以及待评分的代码分别转换成一个抽象语法树reftree、conditree;
5、分别构建并保存抽象语法树reftree、conditree中任意两个叶子节点之间的路径表示集合pathexpcol、condipathexpcol;
6、分别对路径表示集合pathexpcol、condipathexpcol中的每个元素进行向量化处理,使用嵌入模型将节点映射到高维空间中的向量,并综合这些向量,形成代表整条路径的向量值;
7、分别聚合路径表示集合pathexpcol、condipathexpcol中所有路径的向量表示,生成一个固定长度的代码向量pathvec、condivec;
8、计算pathvec与condivec之间的相似度,并根据这个相似度以及最初设置的分值来生成学生的得分。
9、在本专利技术一实施例中,所述编程题考题信息包括题目描述、参考答案、分值。
10、在本专利技术一实施例中,构建并保存抽象语法树reftree中任意两个叶子节点之间的路径表示集合pathexpcol的具体实现方式为:
11、每个路径表示是一个三元组,包含起始节点、终止节点和节点之间的路径<leaf_start,path,leaf_end>;其中,leaf_start和leaf_end分别是起始节点和终止节点,path是从leaf_start至leaf_end的路径;每条路径都表示为一系列抽象语法树ast节点,通过向上和向下箭头链接,来表示树中父子节点之间的向上或向下链接;使用“↑”表示向上即从子节点到父节点的链接,使用“↓”表示向下即从父节点到子节点的链接。
12、具体地,将reftree中的两个叶子节点leaf_start和leaf_end,作为起始节点和终止节点传入算法build_path_between_leaves,进而得到这两个节点的路径表示;首先分别找到两个叶子节点到根节点的路径,通过从每个叶子节点出发,逐层向上遍历直到根节点,并记录遍历过的节点来完成;接下来,比较两条路径,从根节点开始直到它们开始分叉的最后一个共同节点,即它们的最近公共祖先lca;然后,构建两个路径:一个是从第一个叶子节点到lca的路径,另一个是从lca到第二个叶子节点的路径;最终的路径是通过将这两个路径合并,并使用“↑”标记从叶子节点到lca的路径,使用“↓”标记从lca到另一个叶子节点的路径;
13、构建并保存reftree中任意两个叶子节点之间的路径表示集合pathexpcol,路径表示集合pathexpcol中每个元素pathexp都是一个三元组<leaf_start,path,leaf_end>。
14、在本专利技术一实施例中,构建并保存抽象语法树conditree中任意两个叶子节点之间的路径表示集合condipathexpcol的具体实现方式为:
15、将conditree中的两个叶子节点leaf_start和leaf_end,作为起始节点和终止节点传入算法build_path_between_leaves,进而得到这两个节点的路径表示;首先分别找到两个叶子节点到根节点的路径,通过从每个叶子节点出发,逐层向上遍历直到根节点,并记录遍历过的节点来完成;接下来,比较两条路径,从根节点开始直到它们开始分叉的最后一个共同节点,即它们的最近公共祖先lca;然后,构建两个路径:一个是从第一个叶子节点到lca的路径,另一个是从lca到第二个叶子节点的路径;最终的路径是通过将这两个路径合并,并使用“↑”标记从叶子节点到lca的路径,使用“↓”标记从lca到另一个叶子节点的路径;
16、构建并保存conditree中任意两个叶子节点之间的路径表示集合condipathexpcol,路径表示集合con本文档来自技高网...
【技术保护点】
1.一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,包括:
2.根据权利要求1所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,所述编程题考题信息包括题目描述、参考答案、分值。
3.根据权利要求1所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,构建并保存抽象语法树RefTree中任意两个叶子节点之间的路径表示集合PathExpCol的具体实现方式为:
4.根据权利要求3所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,构建并保存抽象语法树CondiTree中任意两个叶子节点之间的路径表示集合CondiPathExpCol的具体实现方式为:
5.根据权利要求1所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,所述嵌入模型包括Word2Vec、GloVe、FastText。
6.根据权利要求1所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,综合向量的方式包括加权平均、RNN、注意力机制。
...【技术特征摘要】
1.一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,包括:
2.根据权利要求1所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,所述编程题考题信息包括题目描述、参考答案、分值。
3.根据权利要求1所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,构建并保存抽象语法树reftree中任意两个叶子节点之间的路径表示集合pathexpcol的具体实现方式为:
4.根据权利要求3所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,构建并保存抽象语法树conditree中任意两个叶子节点之间的路径表示集合condipathexpcol的具体实现方式为:
5.根据权利要求1所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,所述嵌入模型包括word2vec、glove、fasttext。
6.根据权利要求1所述的一种基于抽象语法树和向量空间模型的编程题自动评测方法,其特征在于,综合向量的方式包括加权平均、rnn、注意力机制...
【专利技术属性】
技术研发人员:王金水,林澎辰,田文轩,陈曙光,王钰鹏,何剑峰,
申请(专利权)人:福建理工大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。