r-exams 为完形填空练习生成无效的 QTI

r-exams generates invalid QTI for cloze exercise

我 运行 遇到了 r-exams 的奇怪情况,它“随机”为同一练习生成有效和无效的 QTI 2.1 文件。我用两个 almost 相同的 Rmd 文件 here 创建了一个 MRE。简而言之,两个练习之间的唯一区别是 exsolution.

中的实际解决方案字符串

如果我查看生成的 XML 文件,其中一个包含 -Inf 作为不同位置的最低分数,而另一个包含 0(我认为这是正确的行为)。

repro_140893190_section_1_item_1_cloze.xml

[...]
<outcomeDeclaration identifier="MINSCORE" cardinality="single" baseType="float">
<defaultValue>
<value baseType="float">0</value>
</defaultValue>
</outcomeDeclaration>
[...]

repro_140893190_section_2_item_1_cloze.xml

[...]
<outcomeDeclaration identifier="MINSCORE" cardinality="single" baseType="float">
<defaultValue>
<value baseType="float">-Inf</value>
</defaultValue>
</outcomeDeclaration>
[...]

作为参考,完整的 XML 个文件是 here-Inf 似乎无效,会导致 OLAT 的 QTI 解释器跳过练习。对于这种差异,我没有真正好的解释。 r-exams 不会打印任何错误,并且 r-exams 的压力测试工作正常。改变练习的顺序不会改变结果,也不会只包括其中一个练习。我在 Windows 10 上使用 r-forge 的 r-exams 2.4-0 和 R 4.0.3。这是 r-exams 或其他地方的错误吗?

这里的评估策略有两个问题,现在终于在 2.4-0 版(撰写本文时 R-Forge 上的开发版)中得到修复。

  1. 解决方案为 10 的字符串项被误解为具有两个选项(真 + 假)的选择项。这导致了之前已经修复的 Inf 问题(见上面的评论)。

  2. 为完形填空内的字符串项设置负分还不能正常工作,但终于可以了。要获得所需的评估策略,您需要指定:

    exams2openolat(..., eval = exams_eval(negative = TRUE), cloze = list(minvalue = 0))
    

    首先,这通常会启用负分,默认情况下,这意味着不正确的字符串(或 num 或 schoice)答案会减去与正确答案相加的相同数量的分数。其次,对于完形填空题,最小分数设置为零,即所有子项的分数相加时最坏的情况是没有分数。