马华,彭思雨,秦宏毅
(湖南师范大学信息科学与工程学院,长沙 410081)
近年来,在线学习开始大规模普及,各类在线学习平台发展迅速,在线学习一方面为教师提供了有力的线上实时教学支持,另一方面为学生开展个性化学习提供了丰富的学习资源。在个性化教学过程中,准确感知学生实时的知识状态(即对知识点的掌握情况)尤为重要,而习题测试是主要的实现途径[1]。传统的习题测试系统仅统计学生在每道题上的得分总值,未分析学生对于习题所关联的知识点的不同掌握程度。而现实中,总分值相同的学生知识状态可能差异明显。如果完全依靠教师的经验对学生的认知状况进行人工判断,不仅耗时耗力,其结果的准确度也可能难以得到保障。尤其面对当前大规模在线学习背景下庞大的学生规模,更凸显出实现自动化的学生认知状态诊断的必要性。
认知诊断理论是认知科学与心理测量学相结合并应用于教育领域的结果[2]。认知诊断理论的蓬勃发展,产生了一系列认知诊断模型。传统的认知诊断模型,例如DINA(deterministic inputs,noisy and-gate)模型[3],仅处理客观题题型。为扩展实现认知诊断模型对于主观题题型的支持,Liu等人提出了模糊认知诊断框架(fuzzy cognitive diagnosis framework,FuzzyCDF)[4]。
本文基于模糊认知诊断框架,设计并开发了一个基于认知诊断建模的个性化在线习题测试系统,该系统实现了试题管理、课程管理、组卷管理、测验管理、学情报告等功能模块,系统基于学生对测试试题的作答情况,对学生进行个性化的认知诊断分析,获得学生对不同知识点的掌握情况,生成学情分析报表,从而为教师实施因材施教和学生开展有针对性的自主学习提供重要支持。
认知诊断的主要任务是根据学生参与考试得到的分数反馈,挖掘出不同学生个体的认知结构。最具有代表性的认知诊断模型是项目反应理论(item response theory,IRT)[5]和DINA模 型[3]。其中,IRT将学生的认知状态描述成一维的能力值,并结合难度、区分度等试题参数对学生进行建模。IRT存在单维性假定难以满足、计算复杂、对测验条件要求较严格等不足。不同于IRT,DI⁃NA模型不仅将学生在试题上的作答情况(X矩阵)作为输入,同时结合试题知识点关联矩阵(Q矩阵),将学生建模成一个在多维知识点上的掌握向量。X矩阵和Q矩阵定义为:①得分矩阵X。每行表示一名学生,每列表示某个学生在某个测试题上的得分情况,用0表示该学生在当前题目上未得分,1表示得了满分。②知识点矩阵Q。它表示每个测试题与各个知识点之间的对应关系。每行表示一道测试题,每列表示某个测试题与各个知识点的相关性。用1表示该题与某个知识点相关,0表示不相关。
针对DINA模型仅支持客观题的局限性,Liu等人设计了FuzzyCDF。它利用IRT的双参数反应模型[6]表达式计算学生对于知识点的认知状态,将学生对于知识点的认知能力表示为模糊集合的隶属度,再采用模糊交和模糊并来建模客观题和主观题的认知作答模式。学生i对知识点k的掌握程度由知识点相关的模糊集的隶属函数来确定,即:
上式中,αik表示学生i对知识点k的掌握程度,即学生i对知识点k的隶属度i(k);a i k表示知识点的区分度;b ik表示知识点k对学生i的难度;θi表示学生i的潜在特质水平;D为常数等于-1.7。
对于客观题,学生只有掌握试题考察的所有知识点才能答对该试题。于主观题,学生掌握的知识点越多,其对主观题的掌握程度也越高,进而在主观题上的得分也越高。客观题和主观题的计算公式如下。
其中,ηij表示学生i在试题j上的掌握程度;αi k表示学生i在知识点k上的掌握程度;q jk表示试题j是否考察了知识点k,取值为1代表考察了,取值为0代表未考察;∩和∪分别代表模糊理论中的模糊交和模糊并。
已知学生i的知识点掌握向量{αi1,αi2,αi=…,αik}时,可由式(4)计算学生i对试题j的掌握程度:
其中,q jk表示试题j是否考察了知识点k,取值为1代表考察了,取值为0代表未考察;ηij=0表示学生i无法正确回答试题j,ηij=1则认为学生i可以正确回答试题j。
本系统支持管理员、教师、学生三类用户,管理员负责权限管理,教师负责试题、课程、组卷和学情报告管理,学生可进行试题测验、查看个人学情报告。总体功能包括用户管理、试题管理、课程管理、组卷管理、学情报告、试题测验、系统设置、个人中心等8个模块。以下介绍核心的五个模块。
(1)试题管理模块。管理试题库,支持选择题和判断题,教师可增、删、改、查各个试题。
(2)知识点管理模块。管理课程涉及的的知识点模型。教师可增、删、改、查知识点,也可将测试题与知识点进行关联,从而生成Q矩阵。
(3)组卷管理模块。教师可根据教学需要选取测试题组成一套试卷并发布,全体学生均需作答。教师可查看组卷历史、试卷涉及的知识点数量以及覆盖面。
(4)学情报告模块。展示学生当前的学习情况,分为学生总体报告和学生个人报告两个部分。学情报告由认知诊断模型根据学生历次测验答题情况生成,通过表格以及折线图展示。总体报告仅供教师查看,学生只可查看个人的学情报告。
(5)试题测验模块。分教师组卷测验和自我测试两部分。学生必须完成教师手工组卷发布的测验,自我测试是由系统根据学生的学习状态自动组卷编制而成,用于帮助学生自主学习。学生可查看历次测验的答题时间、总体得分,以及每道测试题的作答情况和正确答案。每次测验试题提交后,系统即通过Flask框架请求认知诊断模型根据当前答题情况进行认知诊断,并更新当前学生的学情报告。
系统采用Java Swing开发,使用MySQL数据库存储数据,以Python语言编码的FuzzyCDF算法通过Flask框架发布成服务后,通过发送HTTP请求对FuzzyCDF进行调用,认知诊断完成后将认知结果更新到数据库,并使用JFreechart在Java Swing界面对认知诊断结果以折线图形式展示。
以下给出了本系统中的关键库表的结构设计,选择题相关的数据库表如表1和表2所示,其它题型的数据库表不再赘述。与知识点、习题、试题、试卷等相关的关键数据库如表3—表8所示。
表1 选择题表choice
表2 选择题选项表choice_items
表3 试题表exercise
表4 试卷表test
表5 试卷-试题映射表exam_exercise
表6 测试得分表grade
表7 知识点表knowledge
表8 习题-知识点关联表Q
以《Java程序设计》课程为例,我们完成了一个实际系统的开发。以下重点介绍教师端模块的实现情况。图1为试题管理模块进行选择题管理的实现界面。
图1 选择题管理界面
图2 为课程管理模块中进行试题和知识点映射的操作界面。
图2 知识点建模界面
图3 为学情报告模块中教师端的查看界面。
图3 教师端学情报告界面
获取学生实时的认知水平是实现精准的个性化教学的关键前提。如何更准确地对学生认知状态进行分析是大家关注的焦点。本文通过引入认知诊断理论,设计并实现了一个基于模糊认知诊断框架的《Java程序设计》习题测试系统。该系统以学生在系统内的测试数据为输入,经过认知诊断建模与分析,获取学生当前的认知状态,从而为教师对学生进行针对性教学提供决策基础,也有利于学生根据自身认知水平对知识进行巩固与加强。未来,我们将重构该习题测试系统成客户端-服务端模式,并完善对多种主观和客观题型的灵活支持机制。