最近接了老师一个项目,在做一个在线教育平台,在线考试模块要实现一个主观题自动评分的功能,这个功能说简单也简单,就是关键字匹配,说难确实很难,文本相似度匹配这种东西,往深了挖就是人工智能,自然语言处理的范畴了,搞得很难受。我分析了,主观题评分的大致步骤,在人工评分的时候,会先找关键字,找到采分点,然后根据采分点,分析句子语义是否通顺,然后给出分数。我在网上找了一些文本相似度匹配的算法,大概有这么几种,余弦相似性算法,杰卡德系数算法,编辑距离算法,目前能看懂并实现的就这三个。
我的思路是,教师在使用系统中出卷时,预先设计好标准答案,并设置好关键字。然后就是关键字匹配了。先进行关键字匹配,如果一个关键字都匹配不到就直接0分。匹配到关键字就进行下一步,文本相似度匹配,相似度达95%以上,接着进行下一步,句子语义分析,看语法是否通顺。三步都满足的话就,满分。如果相似度95%以下,也进行句子语义分析,不过最后得分按照总分乘以文本相似度的百分比得出最后分数。
最后得出的分数标记为原始成绩,学生可以查看到原始成绩,原始成绩存在一天,在此期间,教师可以对试卷进行复评,查看自动评分是否合理,如果不满意可以修改评分,最终以教师复评的分数为准得出有效成绩。如果教师未对试卷进行复评,原始成绩自动转换成有效成绩。 同时让系统自动记录试题满分的答案,存储在数据库中,在下次进行匹配的时候也将改答案纳入标准答案进行匹配。让系统具备学习能力。
这是我的想法,想看看大家还有没有更好的想法。而且我的这种设计还存在一个问题,如果让系统具备学习能力,那么随着时间的推进,标准答案记录的增多,每次匹配的时间也是一个巨大消耗,不知道大家有没有好的办法。