AssessmentFunction

AssessmentFunction[key]

代表一个根据 key 评估答案是否正确的工具.

AssessmentFunction[key,method]

使用指明的答案比较方法.

AssessmentFunction[key,f]

使用函数 f 比较有键的答案.

AssessmentFunction[key,comp]

使用在 Association comp 对比中定义的客制化评估来进行评估.

AssessmentFunction[obj]

表示一个使用 CloudObject obj 进行评估的评估函数.

AssessmentFunction[{obj,id}]

评估 CloudObject obj 内的指定问题.

AssessmentFunction[] [answer]

给出一个 AssessmentResultObject 代表 answer 的正确性.

更多信息和选项

  • AssessmentFunction 通常用在 QuestionObject 中,定义如何评估问题的答案.
  • key 接受下列形式:
  • ans匹配模式 ans 的答案
    {ans1,ans2,}答案为 ansi 的任意一个
    {{a1,a2,}}答案为列表 {a1,a2,}
  • 每个可能的答案 ansi 可有如下形式:
  • patt匹配所有正确响应的答案
    pattscore给予的模式及响应分数
    pattansspec包括一个完整答案规约的 Association
  • 使用 pattscore 等价于 patt<|"Score"score|>.
  • score 应有布尔值或数值. True 和正数值意味着正确答案,而 False、零或复制则表示不正确.
  • patti 可为精确答案值或用于比较的 answer 的值相应的模式.
  • AssessmentFunction[{patt1,patt2,}] 中,如果没有提供分数,则认为所有的 patti 都是正确的. 如果只有一个 patti 被设为 True 或正的分数,则所有其他 patti 被视为错误的答案.
  • 完整答案规约 ansspec 接受以下键:
  • "Score" (required)基于匹配答案的分数
    "AnswerCorrect"答案 ans 是否被判断为正确
    "Category"答案对应的种类,用于对问题分类
    "Explanation"提供给用户的文本
  • AssessmentFunction[key,"method"] 中支持的答案比较方法包括以下 "method" 值,并使用相应的距离函数将答案和解与 Tolerance 相比较,其中 None 表示需要完全匹配. 方法也列在评估比较方法列表中.
  • "Number"Norm[#1-#2]&标量数值
    "String"EditDistance字符串
    "Expression"None任意表达式
    "HeldExpression"None不进行计算的表达式
    "ArithmeticResult"None算术习题的答案
    "PolynomialResult"None多项式习题的答案
    "CalculusResult"None微积分习题的答案
    "AlgebraicValue"None解方程习题的答案
    "CodeEquivalence"None代码
    "Date"DateDifference日期
    "GeoPosition"GeoDistance地理位置
    "Vector"Norm[#1-#2]&向量
    "Color"ColorDistance颜色值
    "Quantity"Norm[#1-#2]&有幅值和单位的量
  • AssessmentFunction[key,comp]中,comp 是一个 Association. 可接受的键包括:
  • "ComparisonMethod"命名比较方法 "method"
    "Comparator"自定义函数,以比较提供的答案与 key 中的每个模式
    "Selector"为提供答案挑选匹配模式的函数
    "ListAssessment"规定评估所列答案的方法
    "ScoreCombiner"以元素方式合并 "Score" 值的函数
    "AnswerCorrectCombiner"以元素方式合并 "AnswerCorrect" 值的函数
  • 函数 fAssessmentFunction[key,f] 等价于 AssessmentFunction[key,<|"Comparator"f|>].
  • 仅应提供 "Comparator""Selector" 中的一个. 使用 "Comparator"compf 可按顺序为键中的每个 ans 计算 compf[answer, patt] 并选择第一个 ans 给出 True. 常见的比较器包括 MatchQGreaterStringMatchQSameQ.
  • 可以使用自定义比较器 f,它只接受用户的答案作为输入,而无需指定 key. 在这种情况下,Automatic 作为 key 被接受. 当 f[answer] 给出 True 时,评估被标记为正确. 当键不是 Automatic 时,f[answer, patti] 使用提交的 answer 和答案键中的每个 patti 计算;只要任何一个给出 True,评估就基于该 patti.
  • 使用 "Selector"selectf 计算 selectf[{patt1,patt2,},answer] 并返回与选择 ans 相应的 patt. 常见的选择器包括 SelectFirstComposition[First,Nearest]Composition[First,TakeLargestBy].
  • 评估列表答案 AssessmentFunction[key,<|,"ListAssessment"method,|>][{elem1,elem2,}] 时,method 支持以下值:
  • "SeparatelyScoreElements"根据 key 分别评估答案的每个要素,并将结果合并
    "AllElementsOrdered"检查 answer 中的元素是否与 key 中的元素相匹配,且顺序匹配
    "AllElementsOrderless"检查 answer 中的元素是否与 key 中的元素相匹配,顺序不限
    "WholeList" (default)作为普通表达式进行评估,对整个列表 {elem1,elem2,} 进行比较
  • 对于 "SeparatelyScoredElements"key 中的 patt 应与答案中的各个元素相对应. 这样就可以为每个元素分配分数,如下所述. 对于所有其他 "ListAssessment" 方法,key 中的每个 patt 都应包含一个列表.
  • 使用 "ListAssessment""SeparatelyScoreElements" 一次为一个元素评估列出的答案. 每个元素的 "Score""AnswerCorrect" 结果分别使用 "ScoreCombiner""AnswerCorrectCombiner" 函数. 只有在使用 "SeparatelyScoredElements" 时,才会应用 "ScoreCombiner""AnswerCorrectCombiner" 函数.
  • AssessmentFunction 接受下列选项:
  • DistanceFunction Automatic要使用的距离度量
    Tolerance Automatic当匹配答案时要接受的距离
    MaxItems Infinity在以元素方式进行评估时元素数量的限制
  • AssessmentFunction[key] 等价于 AssessmentFunction[key,Automatic] 且可从 key 中推断出答案对比类型.
  • 每个答案对比类型对应一个预定义的比较器或选择器函数. 通常情况下,若不存在比较类型的内置距离概念,则会使用 MatchQ"Comparator".
  • 若比较类型中不存在距离概念,则 AssessmentFunction 会使用 First@*Nearest"Selector" 并接受 ToleranceDistanceFunction 选项.
  • 对于单独计分的元素,"AnswerCorrectCombiner" 应使用一个表示每个元素正确性的布尔值列表,并返回对答案整体正确性评估的单个布尔值. 默认值取决于比较方法. 最常见的默认值是 AllTrue[#,TrueQ]&.
  • 对于单独计分的元素,"ScoreCombiner" 应使用一个表示每个元素分数的数值列表,并为答案返回一个总分. 默认值取决于比较方法. 最常见的默认值是 Total.
  • 在分别对元素进行评分时,如果给出的元素数量大于 MaxItems 的值,则 AssessmentFunction 给出 Failure.
  • Information 作用于 AssessmentFunction 并接受下列 prop 值:
  • "DefaultQuestionInterface"键暗示的用户界面(如 "MultipleChoice", "ShortAnswer"
    "AnswerComparisonMethod"值的期望类型(即,"Number""GeoPosition"
    "Key"用于访问答案的键
  • Information[AssessmentFunction[],"Properties"] 提供了可用 prop 值的完整列表.
  • AssessmentFunction[CloudObject[]] 在指定的 CloudObject 中进行远程评估. 这样可以防止提供答案的用户对评估进行修改.

范例

打开所有单元关闭所有单元

基本范例  (4)

创建会检查答案 "Dog" 的评估函数:

定义一个评估函数,对超过 100 的任何答案给出 10 分:

检查多项式数学题的答案:

因式分解形式被标记为不正确:

一个有重排项的等价多项式是正确的:

创建一个评估函数,判定对偶数给两分:

将这个评估应用于某个答案:

范围  (28)

答案键  (8)

提供单个值作为答案键会将该值视为唯一正确答案:

检查答案:

可获得一分:

提供一个正确答案并指定得分:

正分被视为正确:

提供一个正确答案和相关评估作为 Association

将其应用于正确和错误的答案:

所有这些 AssessmentFunction 输入都是等效的:

创建一个包含多个正确答案的答案键:

这些值中的任何一个都会被标记为正确:

为每个可用答案分配分数:

负数分数被视为不正确:

通过为键中的每个项目指定一个 "Category",为分类问题创建一个 AssessmentFunction

提交的答案应以 itemcategory 的形式提供:

包括对正确答案的解释:

提供正确答案并查看解释:

QuestionObject 中也提供了解释:

命名比较方法  (4)

通过名称指定比较方法:

答案将以数字形式进行比较:

对同一个答案键选择不同的比较方法:

作为一个表达式,答案并不等同:

可以仅使用名称来指定比较方法:

或使用 Association

当未指定比较方法时,AssessmentFunction 尝试自动确定适当的比较方法:

使用 Information 来检索所选的方法:

答案键值必须与比较方法一致. 使用答案键中的向量值进行 "Vector" 比较:

提交的答案也必须一致:

评估基于向量的自定义距离测量值. 当欧氏距离超过容差时,则标记为不正确:

自定义比较方法  (5)

给出自定义比较器而不是命名方法,将答案键设置为 Automatic

如果比较器函数应用于提交的答案时返回 True,则它是正确的:

或者,在 Association 中给出比较器:

提供自定义比较器以及答案键:

比较器应用于提交的答案和答案键以确定它们是否匹配:

创建一个带有自定义选择器的 AssessmentFunction 来确定键中的哪个值与提交的答案匹配:

任何比 4 或 1 更接近 3 的答案都将被标记为正确:

为类似的问题创建两个评估函数,一个带有比较器,一个带有选择器:

选择器查看答案键中的所有值并选择最接近的值. 请注意,答案键中的值 3 对应的分数为 10:

比较器按顺序将提交的答案与答案键中的值进行比较,并使用第一个匹配项. 注意,答案键中的值 4 对应的分数为 1:

指定比较函数来对城市附近的地理位置进行评估:

评估某个位置并查看完整评估:

保留值  (3)

使用 HoldPattern 指定 "HeldExpression" 比较方法来定义答案键值:

检查 Hold 所保持的表达式. 该表达式未求值:

数学比较方法如 "AlgebraicValue" 也接受保留值:

在评估期间,允许在 Hold 内进行适当的数学转换,例如基本算术:

完整的解析值不需要保持:

"AlgebraicValue" 比较方法不允许像 SolveValues 这样的函数进行计算:

使用 HoldPattern 指定 "CodeEquivalence" 比较方法来定义答案键:

检查 Hold 中封装的代码是否等效. 在 Hold 中应用任意变量名称的等效性等转换:

列表评估  (7)

通过指定 "ListAssessment""SeparatelyScoreElements" 为每个正确答案奖励点数:

分数代表正确答案的数量:

使用单独计分的元素来奖励部分积分:

将评估函数应用于值列表来评估每个元素:

评估包含每个元素的信息:

定义自定义组合函数来合并每个元素的评估:

将评估函数应用于值列表来评估每个元素:

评估包含每个元素的信息:

创建一个设置为 "ListAssessment""AllElementsOrdered"AssessmentFunction

提交的答案必须以相同的顺序包含相同的元素:

不同的顺序被标记为不正确:

添加容差:

比较方法独立应用于每个元素:

直接计算与 "AllElementsOrdered" 评估中等效的比较:

将其与默认的 "WholeList" 设置进行比较,该设置将提交的列表与整个答案进行比较. 请注意,选择的是 "Vector" 比较方法,而不是 "Number"

直接计算与内部 "WholeList" 评估等效的比较:

对于字符串列表,创建一个 "AllElementsOrdered" 评估函数. 请注意,推断出 "String" 比较方法:

为同一答案键创建一个"WholeList" 评估函数. 请注意,推断出列表的 "Expression" 比较方法:

每个元素的 "String" 比较都支持容差,例如允许大写差异:

"Expression" 比较不支持公差,答案被标记为不正确:

创建一个设置为 "ListAssessment""AllElementsOrderless"AssessmentFunction

提交的答案必须是包含所有元素的列表,但接受任何顺序:

比较方法(在本例中为 "CalculusResult")应用于每个元素,允许算术差异:

对同一答案键使用三种不同的 "ListAssessment" 设置. 请注意,对于 "SeparatelyScoreElements",答案键值不是列表:

所有三个设置都对元素进行独立比较. 使用 "CalculusResult" 方法,数学上等价的值被标记为正确:

只有 "SeparatelyScoreElements" 会对部分答案奖励部分积分:

只有 "AllElementsOrdered" 要求元素的顺序与答案键的顺序相同:

云部署  (1)

为佛罗里达州的地理位置创建 AssessmentFunction

使用资源函数 QuestionDeploy 在云上部署评估函数:

部署的 AssessmentFunction 不包含答案键:

评估答案. 评估在已部署的 CloudObject 中安全进行:

推广和延伸  (2)

通过指定单个正分数,轻松创建只有一个正确答案的答案键:

其他值标记为不正确:

通过指定单个负分,轻松创建仅有一个错误答案的答案键:

其他值标记为正确:

选项  (6)

DistanceFunction  (1)

为一个关于太阳距离的问题定义评估函数:

线性应用误差:

指明 DistanceFunction 以对数方式应用误差:

MaxItems  (4)

设置 "ListAssessment""SeparatelyScoreElements" 可计算答案中每个元素的评估值;这对某些比较器来说可能会比较慢:

限制可以访问 MaxItems 的元素数量:

创建一个评估函数,为每个元素分别打分. 请注意,键包含各元素可能值的分数:

评估列出的答案:

查看完整结果. 请注意,"ElementInformation" 包含对每个元素的评估,并计算出完整答案的总 "Score""AnswerCorrect" 值:

创建一个评估函数,通过比较答案的每个元素和键的相应元素来评估所列答案:

评估答案. 请注意,公差适用于每个元素:

改变元素的顺序会产生错误的结果:

创建一个评估函数,通过比较答案的每个元素和键的任何元素来评估所列答案:

评估不同元素顺序的答案. 只要答案中的每个元素都与键中的一个不同元素相匹配,答案就是正确的:

Tolerance  (1)

创建一个请求为 Pi 值命名的评估函数:

近似值标记为不正确:

使用 Tolerance 选项可以允许近似答案:

答案标记为正确:

应用  (3)

制作一个评估函数,检查用户的代码是否等同于答案键:

代码转换规则尝试确定代码是否等效:

不等同的答案是错误的:

定义一个微积分问题的评分器:

数学转换规则尝试确定代码是否等效:

等效表示也正确:

尝试将未运算的问题作为答案会给出错误:

为多项式练习创建一个 QuestionObject

属性和关系  (5)

创建一个评估,将一个值列表作为单个项目进行检查:

列表元素是错误答案:

仅完整列表才会匹配:

答案键支持模式:

查看评估结果:

使用 Information 提取关于 AssessmentFunction 的信息:

重新获取特定值:

当使用 "ListAssessment""AllElementsOrdered" 时,答案键中的值是列表. 答案键列表中的每个元素都与提交的答案中的相应元素进行比较:

MatchQ[1,_Integer]
True
MatchQ["hello",_String]
True
MatchQ[3,_Integer]
True

使用 "ListAssessment""AllElementsOrderless" 时会进行更多的比较:

MatchQ[1,_Integer]
True
MatchQ[1,_String]
False
MatchQ[1,_Integer]
True
MatchQ["hello",_Integer]
False
MatchQ["hello",_String]
True
MatchQ["hello",_Integer]
False
MatchQ[3,_Integer]
True
MatchQ[3,_String]
False
MatchQ[3,_Integer]
True

当使用 "ListAssessment""SeparatelyScoreElements" 时,答案键是一个扁平的值列表,比较是在提交的答案的元素和键中的每个值之间进行的:

MatchQ[1,_?OddQ]
True
MatchQ["hello",_?OddQ]
False
MatchQ["hello",_String]
True
MatchQ[6,_?OddQ]
False
MatchQ[6,_String]
False
MatchQ[6,_?EvenQ]
True

创建一个 "AllElementsOrderless" 评估函数,键值中包含重叠值:

如果答案中的每个元素都与键中的一个不同元素不匹配,则答案不正确:

当键中的一个不同元素能与答案中的每个元素匹配时,答案就是正确的:

Wolfram Research (2020),AssessmentFunction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/AssessmentFunction.html (更新于 2024 年).

文本

Wolfram Research (2020),AssessmentFunction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/AssessmentFunction.html (更新于 2024 年).

CMS

Wolfram 语言. 2020. "AssessmentFunction." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/AssessmentFunction.html.

APA

Wolfram 语言. (2020). AssessmentFunction. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/AssessmentFunction.html 年

BibTeX

@misc{reference.wolfram_2024_assessmentfunction, author="Wolfram Research", title="{AssessmentFunction}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/AssessmentFunction.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_assessmentfunction, organization={Wolfram Research}, title={AssessmentFunction}, year={2024}, url={https://reference.wolfram.com/language/ref/AssessmentFunction.html}, note=[Accessed: 17-November-2024 ]}