我可能错了,但我建议您更简单地解决这个问题,而不是使用神经网络或其他机器学习结构。机器学习涉及使计算机从大量数据中学习。您不需要大量数据来评估学生代码与教师代码的对比情况。您也不需要推荐系统来建议下一个问题。推荐系统通过推断用户的偏好来提出建议,而在您的情况下,您可以简单地根据学生在当前问题上的表现和当前问题的类型来建议下一个问题。
我将首先确定以下三个子问题:
- 为教师的代码段评分和分配难度分数。
- 评分学生的解决方案与真实解决方案的相似程度。
- 根据当前问题的难度和当前问题的学生分数预测下一个问题。
首先,您可以开发一些算法来从 html、css 或您想要评估的任何代码片段中提取特征。特征可以是:代码片段的长度、标签的数量、不同标签的数量、属性的数量等等。将它们组合在一个数学公式中,以计算代码段的难度分数。我建议如下线性组合:Y=∑aiXi在哪里Xi是个i特征。然后,将所有问题的所有分数标准化为一个范围[0,100]. 你甚至可以有一个上决策边界,这样每当达到某个分数时,归一化的难度分数将是100.
其次,您应该首先检查学生的代码是否可以编译,即没有语法错误。然后,您可以使用Levenshtein Distance来计算学生从原始解决方案中错了多少个字符。良好训练的目标应该是让学生推断出准确的标签和属性,从而推断出准确的字符序列。计算错误占代码段总长度的百分比并将其分配给x. 使用您喜欢的数学公式来评分学生的表现x. 我建议您考虑以下公式:e−0.1x. 它是100%得分0错误和50%有得分8%的错误。看看desmos.com上的图表。
同样,您可以构建一个公式或配方来选择下一个问题的难度。它应该基于当前分数和当前问题的难度。您甚至可以强制学生重复该问题,或者如果分数低于该问题,则可以强制重复相同难度的问题50%. 如果分数高于50%,例如,您可以每答对 3 道题,将题目的难度等级提高 1 分。不过,有很多方法可以解决这个问题。
希望这可以帮助。祝你论文好运。