APP下载

一种改进的KMP算法及其在主观题评分中的应用

2021-07-20姚秀情

网络安全技术与应用 2021年6期
关键词:字符串标准答案主观题

◆姚秀情

(阳光学院 福建 350015)

1 引言

在我国现有的教育制度下,考试仍然是衡量学校教学质量的一个重要途径,而现今网络技术的飞速发展使得在线考试系统越来越普及,它可以作为平常教学辅助的一种方式,对提高教学水平能提供强有力的帮助。而现有的在线考试系统大部分都只有客观题,对于一些科目来说,只有客观题无法全面体现学生的能力,主观题要求学生能自己组织材料,并采用合适的方式表达陈述出来,通过这类试题的考试,可以全面了解学生对某门课程的知识点理解和掌握的程度,所以作为一种教学辅助手段,一个带有主观题并能自动评分的在线考试系统非常必要。

2 问题分析及相关研究

考试系统中客观题的评判相对简单,而对于主观题我们只能通过模糊关键词匹配[1]的方式实现主观题的自动阅卷评分,这样的关键词模糊匹配可以通过字符串的匹配来实现,它是指从一个大字符串找到模式串出现的位置[2]。这种字符串匹配不仅可以用于英文字符的查找,对于中文文本也同样适用,如:文本串P 串:计算机的发展经历了哪几个阶段 S 串:发展经历 找出S 串在P 串中出现的对应位置,这样的算法有很多,其中有BF 算法,KMP 算法,Sunddy 算法等等,其中KMP 算法是一种经典的字符串匹配算法,此算法通过对模式串在不匹配时其本身就包含足够的信息,来判断其下一个匹配的字符将

3 主观题评分的基本实现过程

3.1 数据库的设计和连接

在本文中采用开发环境的是vb 和access 数据库相结合的方式来实现对主观题的自动评分的,在创建数据库后,接下来需要考虑的是如何使用vb 的控件对其进行存取和管理,在此使用ado 数据库引擎来创建数据库与VB 的数据连接,首先得进行的步骤采用“工程” “引用”中的 ADO 即 Microsoft ActiveX Data Objects 2.X Library(建议用2.6 往上)),其ADO 数据库引擎创建的数据库连接的格式为Di m conn As New ADODB.Connection conn.Open "Provider=Micros oft.Jet.OLEDB.4.0;DataSource=E:aa.mdb;PersistSecurity Info=Fal se",在此要特别注意data source 参数是数据库的实际路径。从哪里开始,从而避免重新检查先前匹配的字符,在某种程度上提高了算法的效率,但对于大多数的学习者来说理解起来困难,把它运用于实际应用中,那更是难上加难,在这里将其做了一点点改进,理解上将更加容易,其改进的算法的过程如下:

(1)遵循KMP 算法的指导思想,主串s 与模式串t 匹配时,当发生失配时,寻找下一个与s 串失配字符匹配的t 串字符时,主串s的下标i 不回溯。

(2)改进的算法的基本思想是:当主串字符s[i]与模式串字符t[j]第一次匹配发生失配时,设置变量k 使得主串在k 位置上重新与模式串从头开始进行新一轮的比较,若匹配成功则继续比较剩余字符,若不成功,k 的值将大于i 的值,将跳出内部循环,将主串的K位置的字符与模式串t 的第一个字符重新进行下一轮的匹配,以此类推,直至结束。

(3)若模式串t 的下标j 大于模式串的长度时则表示在主串中找到了模式串。

改进的算法效率也是o(m+n),但它简单明了,容易理解,其实现过程如图1所示:

图1 实现过程

3.2 主要界面的设计

在本例中的主要界面里采用label 设置了题号、题型、题目的内容,当它与数据库中的题号、题型、题目的内容字段一致时,查询其对应的标准答案,另外采用一个文本框用于考试者输入答案,用一个命令按钮触发其评分动作,随后将考试者在文本框中输入的内容与标准答案中查询出来的信息进行字符串匹配,无论有无得分点,都将最终的得分写进数据库中。

3.3 关键技术的分析

本文提出的主观题自动阅卷的实现方法的关键点是:将标准答案与考试者输入的答案进行字符串比对,但在比对前,需先在数据库中将标准答案进行关键词提取,关键词之间用空格进行间隔,然后录入,每个关键词设置一个得分比例,要进行比对时,首先将标准答案读取出来后,按空格提取其中的每一个关键词,然后与考生的答案进行比较。在这里提出的关键词匹配只是一种模糊的匹配,它不要求标准答案与考试者的答案完全匹配,考试者答案中出现关键词的顺序可以和标准答案的关键词的顺序不一样,它的顺序可以是跳跃性的,[3]只要找到关键词,则按每个关键词的比例得分,若答案中的每一个关键词都找到,则本题得到全部分数。之所以采用这种关键词模糊匹配算法,主要是因为中文的语法形式多样,由于各种各样的原因,比如人的语言习惯的不同,思考的方式的不同等,不同的表达方式但表达的意思却能够大致一样,比如:“制作面包的主要原料是:面粉、水、酵母、盐四种”的另一种表达方式为“面粉、酵母、水、盐是制作面包的四种主要原料”,所以在制作标准答案时只需提取“制作面包、水、酵母、盐、面粉”几个关键词与考试者输入的答案进行近似比较,若有找到这些关键词就表明考试者大概获取了题目的关键信息,就能获取到本题的得分。

3.4 算法实现过程

一个正常的考试系统必然会包括选择题、填空题、判断题、计算题、简答题等,无论什么题型,我们在数据库中必须设计数据库表,表中包含了题号,题型,题目内容、标准答案、分值、本题得分等字段,除简答题外其余题目只要将考生答案与标准答案比较后,判断是否完全相等就可得到本题得分,而简答题的判断相对复杂,在这里关键词模糊匹配的方法。首先使用ADO 引擎连接数据库,接着使用sql语言查询当lable的caption即题目序号和题目内容和数据库表中的题号、题目内容相等时,sql 查询语句具体如下 :sql = "select * from ks where 题号='" & Label3.Caption & "'and 题目内容='" &Label2.Caption & "'"提取相对应的标准答案的字符串“采样 量化 编码”,由于标准答案字符串“采样 量化 编码”的每一个关键词都用空格间隔,随后用循环将其关键词用split 函数逐个取出如先取出“采样”,然后将与考试者在文本框中输入的内容进行模糊比较,比较时用改进的算法,像英文字符串比较那样把关键词的每一中文用mid函数取出与考生输入的答案比较,若找到相同的字符串则有得分,如在本例中,三个关键词各设一分,本题分值3 分,若找到 “采样”字符串便可得一分,随后将循环提取出的关键词“量化”和“编码”依次进行字符串比较,若找到本题得分就累加一分直至结束,最后将累积的分数写入数据库中相对应的题目的本题得分字段,以便后期统计分数。其主要代码如下所示:

3.5 运行结果如图2:

图2 运行结果

4 结束语

本文把改进的KMP算法应用于主观题的智能阅卷功能中,其主要是通过关键词模糊匹配的方式,从实验过程中看,其效率和准确性都不低于KMP 算法,但中文语意语法博大精深,这种近似匹配的算法并不能包含近义词等匹配,不能精确评判所有的题目,但大多数的科目还是适用的,对于进一步加强教学辅助手段,提高师生的教学质量上,有一定的帮助。

猜你喜欢

字符串标准答案主观题
浅谈“立体几何主观题”的复习备考
浅谈高中政治“认识类”主观题答题技巧
极坐标方程主观题考点分析
高考政治主观题对学生思维能力的考查
基于文本挖掘的语词典研究
李耀进:没有标准答案,唯有用心用情
丢失了标准答案
“标准答案”阅卷实录
大多数的知识付费,其实就是卖给你一套标准答案
最简单的排序算法(续)