我的学术系主任给了我一个有趣的问题,让我在 Moodle 测验中实现。
我有一个测验问题,我在其中呈现一个输入编辑框。也许是完形填空,或者问题类型的正则表达式类型。我现在还不确定。
该问题得分为 2 分。有一个输入框,并且根据输入字符串的两个小节对输入进行评分。
评分方案1:
你已经听从了他的建议| 没有(任何)争论
评分方案1的含义:
如果学生输入“你已经听从了他的建议”,则获得1分。如果学生的句子还包含“没有论证”或“没有任何论证”,则再获得 1 分。两个部分的顺序都很重要。我不能让学生输入“毫无争议,你已经听从了他的建议”并给出 2 分。
评分方案2:
学生应该 | 必须参加/参加/参加考试
评分方案2的含义:
如果学生输入“学生应该”,则获得1分。如果学生的句子还包括“必须参加考试”或“必须参加考试”或“必须参加考试”,则再获得 1 分。两个部分的顺序都很重要。我不能让学生输入“毫无争议,你已经听从了他的建议”并给出 2 分。
我有什么想法可以实现这个吗?
问候弗兰基·卡姆
后记。老鼠。刚刚被降级,因为这是一个“钓鱼施舍”的问题。当之无愧。我现在通过http://regexone.com/学习正则表达式,以便将来我的问题可以更加以研究为导向,更具建设性......!
好吧,自从我在没有提供先前研究证据的情况下提出问题以来,没有人帮助我。因此,我不再依赖鱼的施舍,而是决定自己投饵并自己钓鱼。我的意思是,我自己谷歌。好吧,经过 48 小时在整个万维网上摸索之后,我得到了答案!
诀窍是在 Moodle Cloze 问题类型语法中使用“正则表达式简答问题类型”语法。令人困惑?希望以下链接和信息能让您更清楚:
下载并安装到您的 /question/type/ 文件夹。
{2:REGEXP:~=students should have to take exams~=students should have to (take|do|sit)
exams~%50%students should.*#Feedback for half credit answer~%50%.*(have to
(take|do|sit) exams)$#Feedback for half credit answer}
{2: ... } means that this question is worth 2 marks
{..:REGEXP:...} identifies this question as a regular expression variant of the short
answer question type. It accepts non-case sensitive input strings and processes them
accordingly.
"~=students should have to take exams" (minus the ")
Run Code Online (Sandbox Code Playgroud)
意味着这是 100% 的答案,价值 2 分。
确保您还在您的 Moodle 安装中下载并安装了所需的 Behaviour more 插件。这些插件有 2 个问题行为,位于:https: //github.com/rezeau/moodle-qbehaviour_regexpadaptivewithhelp 和 https://github.com/rezeau/moodle-qbehaviour_regexpadaptivewithhelpnopenalty 或从 Moodle 的插件存储库下载,网址为http://moodle .org/plugins/browse.php?list=category&id=31 下载两者并安装到您的 /question/behaviour/ 文件夹。
为了在完形填空语法中使用“正则表达式简答问题类型”语法(稍后会详细介绍),您需要复制 2 个被黑的文件并覆盖您的 /question/type/multianswer 文件夹。
您可以阅读有关这一关键步骤的信息: http://docs.moodle.org/25/en/question/type/regexp#The_RegExp_Short_Answer_Question
4.1 对于正则表达式新手: http: //regexone.com/
4.2 更多参考资料、编码示例和语法: https://kb.wisc.edu/moodle/page.php?id=26623 http://www.stedee.id.au/Learn_Regular_Expressions-WildCards http://www.stedee.id.au/Learn_Regular_Expressions-WildCards tjhsst.edu/~dhyatt/perl/exA.html http://stefanstools.sourceforge.net/regexhelp.html http://www.regular-expressions.info/characters.html
4.3 用于测试正则表达式代码结果的交互式正则表达式工具(非常有用!): http://www.regular-expressions.info/javascriptexample.html
以下面的代码为例。
I don't think {2:REGEXP:~=students should have to take exams~=students should have to
(take|do|sit) exams~%50%students should.*#Feedback for half credit answer~%50%.*(have
to (take|do|sit) exams)$#Feedback for half credit answer} exams.
Run Code Online (Sandbox Code Playgroud)
结果屏幕是这样的。

现在让我们把它分解成字母汤,好吗?
"~=students should have to (take|do|sit) exams"
Run Code Online (Sandbox Code Playgroud)
意味着 Noodle,我的意思是 Moodle,将为这些输入中的任何一项授予 2 个满分:
students should have to take exams
students should have to do exams
students should have to sit exams
"~%50%students should.*"
Run Code Online (Sandbox Code Playgroud)
意味着如果输入的前半部分包含不区分大小写的字符串“students should”,Moodle 的测验引擎将授予 1 分(即 2 分的 50%)。因此,像“学生应该详细阅读”这样的输入会给你 1 分。
"~%50%.*(have to (take|do|sit) exams)$#Feedback for half credit answer"
Run Code Online (Sandbox Code Playgroud)
表示如果您输入句子结尾为以下内容的字符串,则您将获得 1 分(满分 2 分):
“必须参加考试”或“必须参加考试”或“必须参加考试”。
美元符号 ($) 是此正则表达式代码背后的大脑,用于检测句子是否以该特定字符串值结尾。因此,输入的结尾是“克鲁斯必须做考试,宝贝!” 将不匹配。只有像“克鲁斯爬上迪拜塔,他们还得做考试”这样的句子才能真正匹配。
所以你有它。我已经成功玩了正则表达式游戏。将死我的正则表达式宿敌!在我的整个编程生涯中,你一直困扰着我。现在轮到你了,你这个正则表达式妖怪!我终于对正则表达式的理解达到了相当水平,足以让我编写和编程一个 Moodle 问题类型,其中包含一些人工的、伪假的人工智能。
现在我已经回答了自己的问题,是时候将这篇 StackOverflow 帖子的分数从卑鄙的 -2 提高到 N 正了。各位 stackoverflow 地球人,请投票吧!
问候,弗兰基“我对这些正则表达式的东西简直要生气了”卡姆赞美上帝!
| 归档时间: |
|
| 查看次数: |
2665 次 |
| 最近记录: |