基于文字识别技术的作业自动批改系统

2020-02-03 02:37刘淇李瑞阳李雨盈刘佳文
电子技术与软件工程 2020年19期
关键词:运算符二叉树表达式

刘淇 李瑞阳 李雨盈 刘佳文

(1.华北电力大学控制与计算机工程学院 北京市 102209 2.华北电力大学电气与电子工程学院 北京市 102209)

1 绪论

1.1 系统及研究对象

本系统是基于文字扫描识别技术,将学生提交的作业图片转化为文字后上传至系统后台的数据库进行存储,结合相应的算法以标准答案为参考,将学生作业与之进行匹配,并得出作业评分的智能化批改系统。

在批改的科目上,该团队选择了难度较低但任务量大的大学物理作为研究对象,从主观题入手进行实践,通过该科目作业批改体系的建立,完成本系统的设计与实现,后续可推广至其他科目。

简单来说,本系统研究的主要方向是算术型理科主观题的自动批改。

1.2 背景意义

大量研究数据表明,合理有效的作业布置对学生的成绩有很大的促进作用,布置作业和批改作业不仅仅是教育和教学的重要环节,也是师生之间互相交流的直接桥梁。然而当今的作业环节存在着许多问题。从教师角度来看,作业批改耗时长、重复性高,是师资力量的一种浪费;从学生角度来说,作业的缺漏、缺交、抄袭现象普遍,在缺乏作业监督机制的现状下难以被察觉,使得学生对作业更加不重视;从技术角度来看,现有的作业批改系统依旧是依靠人工力量进行批改,并没有解决根本问题;从时事的角度来说,学生在疫情期间不得不在家上网课,作业、考试等教学活动均改为线上进行,无疑是加大了老师的工作量,传统的批改方式根本难以应对。

在这种情况下,该团队提出了“基于文字扫描识别技术的作业自动批改”这一构想,在帮助老师减轻负担的同时,促进作业环节的教学质量效率和效益的提高。作为教学工作的薄弱环节,该团队将作业批改同计算机互联网与文字扫描识别技术相结合,为新技术的突破打下了良好的基础,并在现有基础上有了很大的突破,作业的机器化、智能化批改才真正得以实现。

1.3 研究现状

作为信息录入的方法之一,文字识别的速度远远高于人工录入,而在科学技术飞速发展和进步的今天,文字识别的应用领域也得到相应的扩展,其中文字识别和数字识别的应用最为广泛。在这之中,文字识别成为一大主流,通过专项研究表明,手写体文字渴求度极大且识别率高达80%,能够为人所用。

而自计算机自然语言处理算法诞生以来,作业自动批改系统的研究就一直处于热门状态。但目前已有的研究仅是针对自然语言类与计算机文本处理的作业批改,因此本文针对算术型作业自动批改,并首次将文字识别与作业批改相结合,研发了一套基于文字扫描识别技术的作业自动批改系统。

1.4 论文安排

第一部分,绪论。介绍了本文的研究对象、背景意义以及文字识别技术的现状和发展前景。

第二部分,相关技术。介绍了文字识别技术和核心技术,即文本特征提取和python 语言的应用和优势。

第三部分,核心算法。介绍了核心算法的应用与优势,主要包括三大算法:表达式转二叉树、匹配与二叉树的遍历算法以及规范化处理算法。

图1:表达式转二叉树

第四部分,系统设计。

2 相关技术

2.1 技术基础:文字扫描识别技术简介

文字识别技术为算术型作业书写与批改在计算机上的可操作性提供了支持。因此本系统的设计与开发建立在文字扫描识别技术的发展上。下面对文字扫描识别技术做简要介绍。

2.1.1 印刷体文字识别技术简介

光学字符识别(Optical Character Recognition),是指电子设备(如扫描仪)通过检测纸张上字符的明暗图案来确定其形状,然后通过字符识别将其翻译成计算机语言的过程。即将打印的字符光学转换成黑白点阵图像文件,并通过相应的识别技术将图像中的文本转换为计算机文本格式,以供文字处理软件进一步的处理与加工。

2.1.2 手写体文字识别技术简介

(1)在线手写体文字识别。在线手写体文字识别(on linehandwritten character recognition)指人在线书写,而计算机通过识别人书写文字时的笔划特征来确定相应字符并转换为对应文本格式。

(2)离线手写体文字识别。离线手写体文字识别(off linehandwritten character recognition)指扫描仪通过扫描由书写者预先写在纸上的文字并将其转成图像,再由计算机识别成相应文字并转换为文本格式。

2.2 核心技术

2.2.1 文本特征提取

本系统是基于文字识别技术的作业自动批改系统,而进行了文字识别后的计算机可读文本一般都含有大量冗余信息,若直接对其文本进行自动批改,将极大地减缓系统的运行速度,同时冗余信息也将使批改的错误率大为升高。因此,本系统在作业批改前对识别后的文本进行了文本预处理,文本预处理的方法主要是特征提取。下面简要介绍文本特征提取。

在算术型作业(以大学物理为例)的文本特征提取中,该团队更关心的是文本中出现的一个随机变量t 与大学物理的专业用词集c 是否相关以及相关度的大小。因此,在文本特征提取阶段选择开方检验方法进行特征选择与提取,其基本思想是通过检测实际值与理论值之间的偏差来确定该学生答案文本词与实际答案文本值关联与否。

使用随机变量t 与专业用词集c 不相关为原假设,根据式(1)对两个随机变量进行假设检验:

表1:运算符的统一化处理

表2:微分及导数的统一化处理

表3:符号类运算符优先级标准规范

表4:变量类运算符优先级标准规范

式中:A——文本中出现随机变量t 且类别为c 的词汇数目;

B——文本中出现随机变量t 但不属于c 的词汇数目;

C——文本中不出现随机变量t 但属于c 类的词汇数目;

D——文本中不出现随机变量t 且不属于c 类的词汇数目。

由式(1)计算出的开方值越大,随机变量t 与专业用词集c 的相关性越大,t 越能表征c。

将文本中每个词汇(随机变量)t 与专业用词集c 的开方检验值按从大到小词序排列,取该文本词汇总数的90%作为文本特征提取。

2.2.2 Python

基于文字识别技术作业自动批改系统的实现需要具有简易性、安全性且自定义性高、可拓展性强的编程语言与编程框架,因此,本系统开发选择python 作为编程语言。下面对Python 作简要介绍。

Python 是一种跨平台的计算机程序设计语言,集解释性、编译性、互动性和面向对象于一体,在计算机科学、web 开发、人工智能等领域应用广泛。与C++、java 等语言对比,Python 具有下述优点:

(1)开发效率高。Python 具有其它编译语言所不具有的强大的第三方库,包含了数据库、网页、文件、文本、GUI 等大量内容,因此利用Python进行系统开发将大大降低开发难度,节约开发成本,提高开发周期。同时,系统开发者间通过代码封装可实现代码作为第三方库使用,提升了合作效率。

(2)可扩展性高。Python 的模块具有高可扩展性,它的类库涵盖了文件 I/O、GUI、网络编程、数据库访问、文本操作等绝大部分应用场景,是脚本语言中最丰富和强大的。Python 的高可扩展性更好地体现在:当系统中的一段关键部分代码实现需要快速运行时,可以通过 C 或 C++ 等高级语言编写,然后在 Python 程序设计中使用它们。

(3)可移植性强。由于Python 的开源特性,因此其具有较强的可移植性,即如果能够有效避免工作的核心程序对系统的依赖性,那就意味着系统所有的Python 程序都无需修改就可以在诸多平台上运行。

3 核心算法

3.1 表达式转二叉树

树型结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。而二叉树每个结点至多只有两棵子树且子树有左右之分,其次序不能任意颠倒[1],十分广泛地应用于表达式处理。

例:如图1,将(4-3)*(2+5)转为二叉树:

其所有叶子节点均为操作数,所有非叶子节点均为操作符。

3.2 规范化处理算法

3.2.1 数学运算符与变量的统一化处理

数学运算符与变量的统一化处理是指将答案所得文本与答案库中的数学运算符与变量作统一化处理,以方便机器识别与匹配,部分统一方法如表1、表2。

3.2.2 表达式的规范化处理

结合考虑算术型作业含有的表达式中的优先级问题与二叉树的转化问题,此处规定表达式的范式为具有优先级次序的后缀表达式,下面给出优先级次序的规定与由表达式获得相应的后缀表达式的部分算法。

(1)运算符优先级的规定。对于同一个表达式的不同学生表示,进行作业批改时需要考虑运算符出现的次序问题与不同的运算符的优先级管理问题,因此对运算符优先级作如表3 的统一标准规范:

(2)相应后缀表达式的获得。由表达式获得对应后缀表达式的算法实现需要借助两个辅助栈stack data 和stack symbol 进行。其中,stack data 栈中存放变量名或后缀表达式,stack symbol 栈用来存放运算符,函数名为TransFromExptoPtost,参数post 表示最终得到的后缀表达式存放的数组名称,参数exp 表示最初的表达式。其主要思想是每次遇到运算符时,需要将该运算符与栈stack symbol 中栈顶的运算符进行比较。如果该运算符的优先级比栈stack symbol 栈顶的运算符优先级高,则将该运算符压入栈stack symbol;否则,当栈stack symbol 中栈顶元素运算符优先级大于等于当前遇到的运算符时,需要进行以下处理:从栈stack data 中出栈两个数据对象,从栈stack symbol 中出栈一个运算符,连接成一个后缀表达式压入栈stack data,然后将当前运算符压入栈stack symbol;每次遇到数据对象 (即变量名),则将该数据对象压入栈stack data。[2]

再将由学生答案获得的后缀表达式进行两两匹配,过滤重复性表达式后生出答案表达式集合t,t 中的元素具有唯一性。

3.2.3 二叉树的规范化处理

为了实现作业自动批改并提升批改的准确率与速率,将上述后缀表达式(标准答案库与学生作答的文本答案中的表达式)二叉树转为范式二叉树,即将表达式二叉树进行规范化处理。规范化处理规则如下:

(1)若同深度的非叶子节点为数字/字母,则左右叶子节点将按阿拉伯数字/希腊字母的字典序排列,即字典序小的数字/字母位于左叶子节点,字典序大的数字/字母位于右叶子节点。同时对同深度的非叶子节点的数字与字母作优先级划分,优先级高的位于左叶子节点。优先级次序如表4。

(2)二叉树与若出现加减父节点中含两个除号子节点,则将子节点合并,以提高匹配准确度。

3.3 匹配与二叉树的遍历算法

作业自动批改的核心是匹配,通过匹配算术型作业的计算过程与答案是否相同,并根据匹配度的高低进行打分,下面就匹配与二叉树的遍历算法作简要介绍。

两个二叉树的匹配算法如下:

其中二叉树的遍历采用后序遍历法。

匹配与二叉树遍历算法在本系统的应用如下:

设题目答案为S0,具有S1、S2……Sm个表达式二叉树,作答者答案为t0,具有t1、t2……tn个表达式二叉树,其中n ≥ m。

从t 的第一个二叉树开始,将S 中的二叉树依次和t 中二叉树匹配,若t1=S1&&……&&tm=Sm,则证明匹配成功,返回下标0,进行t0、S0的匹配,当所有匹配均成功后,返回值1。

若在某一步ti!=Si,为了作业批改分数的准确性,记下不匹配二叉树位置i,并从Si+1二叉树开始依次与ti匹配直至n==m 或ti与Si+1……Sm中某个二叉树匹配成功,然后从ti+1个二叉树开始与S 中第i 个二叉树进行比较,同理,至n==m 为止(当n==m 时匹配依然不成功则记下匹配不成功的t 中二叉树个数n,并以此作为作业成绩的评判依据)。依此类推若知道以t中第n-m个开始二叉树为止,还没有匹配成功则证明t 中不存S,返回值-1。

4 系统设计

4.1 系统概述

该系统结合文字扫描技术,突破以往的远程教育的形式,实现师生间的课后互动。该系统对比之前单一的人工作业评分或人工网上评分模式,通过创建题库,老师从题库选择作业题目,学生通过拍照等方式上传答案,系统通过算法对作业评分,实现作业评分的自动化。同时会将学生作答情况反馈给老师/学生并根据实际情况自动更新题库,老师还可以自己创建作业,保证系统数据库的即时性与真实性,便于下次作业评分,从而从真正意义上实现作业评分的自动化。

4.2 系统核心功能

4.2.1 作业发布

教师可通过登录教职工账号,从题库中勾选作业题目,在平台发布作业的内容和具体要求,系统后台自动发送至学生端,学生登陆自己的账号即可查询作业详情。

4.2.2 作业自动批改

通过文字扫描识别技术,将学生上传的图片转化为文字形式后上传至系统,若扫描失败,则通知学生重新上传;逾期则直接将扫描失败的图片上传至教师端,进行人工批改。然后通过作业评分算法,以标准答案为参考,将学生作业与之进行匹配:若匹配度很高且答案正确,则根据算法进行评分;若答案不正确,则根据算法适当扣分;若匹配度较高且答案正确,则根据算法演算中间过程,根据过程得分标准适当得分或扣分;其余情况悉数上传至教师端,进行人工批改。

4.2.3 成绩管理

系统对数据进行汇总和分析,将成绩、错题、排名等结果反馈给学生,平均分、易错题、查重率等反馈给老师。

4.2.4 作业复审

学生对不满意的评分结果进行申诉,系统上传至教师端。教师对上传的题目进行在线评分并反馈结果,将误判的答案用来完善答案库。

5 结语

本文针对国内作业批改以及相关技术的发展现状展开了讨论,重点论述了基于文字扫描识别技术的作业自动批改系统的设计与实现。在文字扫描识别技术快速发展的今天,本团队尝试将其与作业批改相结合,通过Python 语言结合表达式转二叉树算法完成程序的编写,实现作业的自动化批改,成为本项目的一大亮点。该项目从学科代表性强的大学物理入手进行研究和实践,后续可推广至其他科目作业的自动批改,有很大的发展前景。

猜你喜欢
运算符二叉树表达式
CSP真题——二叉树
老祖传授基本运算符
二叉树创建方法
一个混合核Hilbert型积分不等式及其算子范数表达式
表达式转换及求值探析
用手机插头的思路学习布尔运算符
浅析C语言运算符及表达式的教学误区
一种由层次遍历和其它遍历构造二叉树的新算法
论复杂二叉树的初始化算法
表达式求值及符号推导