《学习笔记》《会议总结整理》
本文根据腾讯教育高级研究员-李超老师在Datafun于2021.07.10举办的自然语言处理峰会里关于《K12智能批改技术的实践与探索》的会议内容总结整理得来,略有精简。
相关论文资料地址可在文末"论文地址"处自取(点击此处可直达)
目录
- K12智能批改技术的实践与探索
- ------------------------------------------1、背景介绍------------------------------------------
- 1.1教育模式的发展
- 1.2不同教育场景的技术需求
- 1.3 智能教育图解
- ------------------------------------------2、典型问题------------------------------------------
- 2.1 教育图谱
- 2.2 自适应学习
- ------------------------------------------3、技术方案------------------------------------------
- 3.1 作文批改
- 3.2 拼写纠错
- 3.3 病句识别
- 3.4 内容理解
- 3.5 其他写作
- 3.6 应用题批改
- 3.7 填空题批改
- 3.8 其他批改
- ------------------------------------------4、相关资料------------------------------------------
- ------------------------------------------ Q A 环 节 ---------------------------------------------
- ------------------------------------------ 论 文 地 址 -------------------------------------------
导读:这次主要介绍K12批改相关的一些技术探索与实践,今天我们更多地会去讲实际场景、问题和解决方案,在作业和试卷的批改技术部分会重点讲解。
今天的介绍主要由以下四个部分组成:
传统教育有了互联网之后就变成了在线教育,随着人工智能技术的普及和应用,形成了智能教育。智能教育能发挥出更多的作用来帮助学生和老师,学生可以通过智能教育来提高自己的学习效率,老师可以因此减少部分工作,然后花更多的时间用来提高整个教学水平。
我们发现将整个教育简单地抽象出来,可以分为几个具体的场景。首先是上课,然后是作业部分,接着是复习,以及最后考试,再到上课巩固这样一个循环。而在这个过程中,我们发现AI技术能够在很多方面带来提高。
上课场景。我们可以根据班级学习的情况,使上课的程度、速度,包括使讲授的习题更具有针对性。比如人大附中的实验班跟其他普通高中的普通班的上课内容和讲题肯定是有差别的,这是我们的先验知识,我们需要通过我们的模型来帮整个集体去找到更好的题,以及更适合讲解的重点。
作业场景。我们可以用算法来进行自动的批改,在这个过程中有一些课程的作业题其实是有对应的视频,当学生做错的时候,我们可以通过老师的视频,包括一些AI虚拟人的讲解,来帮助学生实时地定位到具体哪一步错了,然后系统地去思考这道题知识点的转变、解题的过程。现在大家比较公认的一套解题的算法就是波利亚(数学家)的那一套,他的理论其实更重要的是我们要怎么样地分析问题,逐步地从问题推断分析出来已知是什么,再从已知推出来结论是什么。
复习场景。我们烤鸭根据每一个学生自己的学习情况,然后进行不同的学习路径的规划,以及推荐不同的题目。
考试场景。我们可以智能地去组卷和阅卷,而这其实是一个整体抽象出来的在线教育。
首先从底层资源层来看的话,是一般由教育专家构建的知识图谱;然后是我们建设提供的一些题库资源,重点是里面要有题库的融合去重、试卷的解析、题目难度的预测;还有讲义和视频资源,例如像DataFun的资源。如果我们需要做结构化,也可以把它结构化,然后再做推荐、检索。对于K12的学生来讲,我们可以把各种名校的视频课之类的资源拆分出来,然后再一一对应到某个知识点和习题上。这是一个比较复杂繁重的任务。
在算法层我们会应用到各种常见的NLP的问题,如语义挖掘、规划算法、文本分类,题目表示。应用中会涉及到视觉方面的处理,我们要综合考虑视频、语音的信息,进行一个多模态的理解。
引擎层则会有各种的自动批改引擎或自适应学习引擎。
然后我们把这些引擎应用在组卷、作业、诊断、学情、辅导、考试等等的各个场景,以此来提高整个的教学效率。
实现以上功能需要解决的问题:
首先需要一个知识点体系,然后主要根据课标、教材的顺序来标注。
同时考虑一个题模体系,这也是一个业界通用的做法。它更多的是看这道题考核了学生的什么能力,比如说是数形结合的能力、是解方程的能力、或是列方程的能力。在把题标上它对应知识点的同时也需要在知识点标上对应题。
然后是试卷解析,一整张试卷的哪部分到哪部分是什么题,以及每一个题对应的答案。各种试卷,从题到答案的形式是多种多样的,有的前面是竖线,有的题号又是乱的,我们怎么样能把它mapping起来,也是一个比较复杂的问题。
还会有题目的知识点识别、难度识别,以及视频中的知识点识别。
以及答题过程中的解答步骤、标准答案每一个步骤的知识点识别。例如:当我们做批改的时候,就能知道一个学生做错了一道题,做到了第几步,比如说题目考核的知识点跟他过程中用的知识点是不一样的。有可能学生只是对前序的知识点不了解,或是对于某一个问题的理解不深入,并不一定就说他是这个题目都做的不对,知识点他掌握不了。
这是一个抽象模块,现在常用的方法是图片或者文本上传,然后通过数据导入,经过整个批改模块,最后输出整个批改的结果。当有了批改学生各个试题得到的做题情况之后,我们就可以为每一个学生做一个自适应学习。
我们这部分目的:
第一是学情画像,知道学生对于每一个知识点的掌握的情况、掌握的概率。它的体现是通过预测学生对每一道题的作答能力,来表示学情画像准确性。
第二是学习路径规划,在这里我们知道学生的薄弱的知识点是什么,还要知道对应的前序知识点。这样我们就能通过前序知识点和薄弱的知识点构建规划出来一条路径,这个路径适合学生去学习,同时根据前序知识点的掌握的情况,来合理的分配时间。
第三是相似重复题目推荐,我们规划好一条学习路径后,当学生做错了题,就需要给他一些相似题和重复题的推荐,这也是一个相对来讲比较核心的算法问题。
接下来我们介绍批改方案,我们主要把题分成两个大方面,一个是主观题,一个是客观题。
对于主观题,现在行业内应用最多的其实是作文批改,包括中文作文批改、英文作文批改。下图是一个作文批改的框架图。
这里面我们把它分成了四层:
第一层是词语的运用。包括整个作文中运用了哪些成语、诗词,然后有没有连词、动词、拟声词,有没有引用名言警句,这可能在小学的时候是更加偏重的。
第二层是语句的表达。
第三层就是篇章结构段的理解。
第四层就是整体的反馈,我们对于不同的应用方,我们整个批改的算法用的输出功能是不一样的。比如大型考试,它需要的就是打分是否合理。打分合理其实更多的是通过人人打分,现在则会考虑人机打分的一致率,会考虑打分的相关系数,也就是说人打高分那么机器也会打高分,人打低分机器相对来讲也会倾向打一个低分,同时我们要有你的反馈,然后有句评,同时有相关题目的作文推荐,也会考虑集体问题,比如说两个班作文的平均分,A班比B班好多少?A班为什么好?我们通过学校的角度可以看出来,A班好在用了更多的修辞手法,然后错别字更少等等。也会有一些书写质量的反馈。
然后中间我们会有一些相对来讲比较重要的技术。因为除了大型考试,打分的重要性在大多数阶段相对来讲,特别是作为老师辅助作用的助手来讲不是那么重要。其实更重要的是我们识别出来的整个作文中的精彩的内容,以及它错的内容,老师更倾向于挑错的内容,所以说我们先介绍了一些我们最常用的两个挑错的,一个是拼写的纠错,一个是病句的识别。
拼写的纠错,这是我们最近发表在ACL Findings 2021的一篇论文。我们首先想到的是:中文是一个象形文字,所以我们想到综合利用文字的信息、拼音的信息以及字的图形的信息,然后去建立一个统一的模型,用它来把我们的错别字找出来。
上面这个例子就是:“老师经常教导我们要诚实守信”。经常的“经”错写成了“轻”。Semantic Encoder部分我们把字放到正常的Transfoemer里面去编码;Phonetic Encoder部分我们把字的拼音按照组成它的一个个拼音的字母来用一个GRU分层的编码之后,再把它整个的输入到transformer里面再进行一次编码;Graphic Encoder部分我们就用一个ResNet去把我们的每一个字形进行编码,我们把字形定义成了一个32×32像素点的矩阵,我们考虑了一个字的多种字形,因为虽然说汉字是象形文字,但是经过了简化,汉字的内容会有一些损失,同时它并不一定能很好地表示出来之前的情况,所以说我们用了以前的包括小篆之类的一些字体。这样的话我们就会同时得到三个表示:一个字的表示,一个拼音的表示,一个字形的表示。而这三个表示分别做一个get,每一个get之后再拼接起来,最后放到transformer里面,就得到了我们的输出。比如我们的一个例子:
第一个啤酒的啤,我们看上面图片有三行数据,红色一行 g t g^{t} gt就是表示文字的权重(语义), g a g^{a} ga表示拼音的权重, g v g^{v} gv表示图形的权重。当然这个和我们的直觉很像,我们正常发现还是本身的字起了决定性作用,我们能看到它的权重都是0.999以上,或是到1。这个例子中我们发现啤酒的”啤”的口字旁写成了土字旁,然后这个字它念pi也念bei,这样的话我们多音字就挑一个最常用的,然后在这里面我们发现它更多起到纠错作用的是它的字形,因为其他的像字形里正确字的字形权重都是0.1左右,很多都是零点零几。另一个例子是“戴帽子”的“戴”,写成了“带子”的“带”,我们也会发现它的整体的拼音权重就会重点,而在字形的程度上就没有这么高。整个的我们这个方法在SIGHAN13、14、15上都进行了实验,在每一个上面都是达到了一个最好的水平。
目前比之前我们了解到的一个最好水平,大概都提高了差不多两到三个点的水平。但是文章审稿的时候也有评委会觉得我们这个工作会在碳的消耗上有一些问题,就是说资源用了很多的多模态,更多的不节能。
技术详情参考论文《Read,Listen,and See: Leveraging Multimodal Information Helps Chinese Spell Checking》
文末论文链接(点击可此处直达)
病句识别是我们在英文上做出的工作。病句识别常用的方法是序列标注的方法,当然也有用翻译的方法,但我们实践和调研发现翻译普遍没有序列标注的方法效果好,相对来讲也没有序列标注的方法解释性更强。
在这个里面我们可以参考一下Grammarly的工作,它中间会把每一个词设置成不同的标签,保持不换的情况下进行删除、增加、替换,同时会有一些时态的变化。这个例子:“A ten years old boy go to school ”,输出为”A ten-years-old boy goes to school.”。我们可以看到”A”还是保持不变,”ten”后面要加一个东西,”years“后面是专门给数的,把复数形式去掉,”old”和”boy”都是$keep,”go”变成了第三人称单数,这样的话有一个问题,就是它的标签数量会特别大,它用了很多的训练数据,同时它会把一些最常用的词进行一些筛选,不常用的词则不会有一些增加什么,因为它每个$append_{.}的后面都会有增加“.”,append什么词都会有,而不是说只是单单的append,然后再去来做分类,它整个的标签会特别多,比如说append A次和append B次,这样的话它的工作量就比较大。
这个工作是我们在今年年初开始做,我们英文纠错方面在BEA上面也达到了一个目前来看一个最好的水平。这也是一个学生学写作文的一个病句指标。这个也是我们能找到的公开的数据集上面最接近于真实的英语写作的场景的一个数据。在这个上面我们可以看出参赛的队伍现在应该有将近40个,然后我们大概的F_0.5的话应该是比第二高了0.5个百分点左右。然后这个里面其实我们更多的是用了序列标注这种方法,同时也有一些模型融合。另外我们也发现现在的NN模型会有一些长距离的依赖的问题,相对来讲attention身上还是不能做得特别好。所以我们也用依存句法分析,然后对一些attention进mask。
技术详情参考论文《Improving BERT with Syntax-aware Local Attention》
文末论文链接(点击可此处直达)
做作文的话,会有很多的项,可以看到我们前面的那张作文批改框架图,它会有各种各样的需要识别的内容,里面有很多子项,包括像修辞的识别,我们要识别出来本体喻体,然后同时识别出来比喻句,这个就是一个句子的分类。排比其实用的是句对分类,每两对儿之间它能是一个排比,连着的话就可以整个这三句,三句以上就变成了一个排比。
我们同时向表达方式识别、描写方式识别,记叙文六要素识别,这些大多数都是用文本分类来做。像论证强度识别,我们去是其实是用的ranking的方法来做的,先从两对儿开始,就是论点和论据,然后它能不能好的话,最后是有一个强度的ranking,这些还是在探索中。
然后还有像文体分类,这篇论文是一个记叙文还是一个议论文,还是一个说明文。这个里面我们也会有一些探索,因为整个的把一篇作文完整的编码进去会比较长,同时也可能会超过它的长度。特别是中文的作文,经常有800字、900字,中间我们也会有一些语义的抽象,在不同的像首尾段会有一些地方重点,有些地方相对来讲不重点,也在结合起来用。
其实也有一些其他方面写作的形式,比如说像仿写、续写和看图写作。
仿写。比如说”雨一来,他们便放假了”。然后我们就在”清风一吹”后面填”就冷了”。同时还会有一些给你一个完整的句子,照着句子写一写。仿写我们要判断它的句式跟它的例子是不是一样,这个问题相对简单。主要的问题是我们如何去来拿到这些合理的数据,有的时候在数据不足的时候,可能更多的是用规则结合数据的方法,用一些小样本的方法来做成。
续写。当我们前面给了一段故事,或是他的一段话,我们就要去续写它后面的内容。我们要判断出来我们学生写的部分和前面给的材料部分,连贯性是不是一致的,内容是不是完整的,我们可以通过这样的一些作文来做一些整个的数据,比如前后截断,然后random拼起来,来做一些连贯性的打分。
看图作文。我们现在去完全理解是有难度的,相当于我们要有看图,有题目,再有学生的打分整体。所以这个我们简易整体来看,其实整个的看图作文,从技术上来讲,可以抽象成图片的识别,这个图片里有哪些场景,有哪些人,然后在干什么。当然我们比如说在这个例子里面小朋友们在堆雪人、打雪仗,我们不一定能看出来。但我们能识别出来这是在雪地的场景,有雪人、树木、房屋、几个小朋友。这样我们就可以通过这些因素判断出来学生写的内容包不包括这些要点,以及看学生的作文内容本身好不好,来综合的去考虑。
接下来我们还会有一些其他批改的问题,像客观题批改、应用题批改、填空题批改,不同类型题的批改问题是不一样的。
第一个问题是比如说我们要做文本答案的批改的时候,比如是问李阿姨先到还是王阿姨先到,或者是给一些描述的文字,让你回答谁做的好,谁做得不好。这个图片就是说是比较老师们的高矮,实际上这个答案是错的,是音乐老师最高,然后体育老师是最矮。如果要是正常的来讲的话,我们了解目前行业的情况,现在都是直接应用题比对一个数、比对一个答案,然后看看这个数是不是对的。纯文本答案的去批改就需要语义一致性的模型来判断。
同时还有一些题,它有多数字的答案,比如上图数值答案批改例子里面,问你有几只鸡,几只兔子,答案是有三只鸡,有七只兔,如果只比较两个数的话,写成三只兔子,七只鸡,其实也会被判对,因为有的算法只考虑两个数字是不是一样,当然有的也会考虑两个数字的顺序。所以说我们要有整个的数值答案去来判断。有一个模型判断它前面的数值和后面的关系是不是一致的,然后整个的答案是不是对的。
这个里面可能有几种方法,一个是我们识别出来答的部分的来看,当然我们也可以来端到端的把所有的答案都堆进去,然后去来判这个的一致性。这个就是他对题的答案和学生作答的形式的多种多样,这要求就非常高,就说这个学生做的图里面,他画的鸡也画的兔子,实际上就很可能被OCR出来不同的内容。
还有一个就是说现在大多数整个的批改,其实它并不能来去判断这个题做得对还是错,比如一个题的标准答案是2,但我们发现很多各种APP或者各种模块,如果写成1+1=2,它会判成对的,写成9-7=2,它也是判对,实际上就需要一个切题的模型。我这个题列的式子到底对不对?然后这个式子是不是在题目中出现,然后是不是该这么列?比如说一个小朋友一天吃三个苹果,他一周吃几个苹果?应该是3×7,一周又要转化成七天,又有一些先验知识的变化,整个的模型和东西我们去考虑,可以利用解题的方法,自动解题的模型来做,就相当于我们知道一个经典的问题,就是一个输入是文本,然后输出它的算式,在利用我们得到的解题算式跟学生作答的算式进行一个等价性的判断,最后来判断整体上做的对不对?
上面介绍的是应用题批改的一些情况,填空题批改其实更难一点。
填空题批改难,相对来讲大多数的客观题批改,其实从直觉上来讲是很简单的,但学生的写的情况是多种多样的,比如上图例子中学生答题的时候,”平方千里”,可能他写的”方”不小心缺了上面的一个点,于是识别成了”平万千里”,在大多数情况下,老师可能还是会把这个题倾向于判对。在英语题里,OCR可能就会没识别出来一些写特别轻的字母,这个就没有识别出来S。可能不同的OCR结果也不一样,所以说它中间会有不同的方法来做。
常见的方法是有像我们如果用纯文本的方法做纠错,就是把OCR的结果和标准答案进行对比,然后看它到底是不是对,这其实会有一些问题,比如像在英语题里,单词由字母组成,学生就容易拼写错误,我们就没办法完全的去把学生的OCR的结果跟标准答案来对。因为这样的话更倾向于把一些学生真实写错的是来判对,同时这样的话就会导致整个的产品或者是不同的应用方就会觉得这个掩盖了学生的错误。所以说也要看什么定义,是说更多的是倾向于找个学生的拼写错误,还是更重要的不要把学生的答题误判,这中间是需要权衡这里我们就需要首先考虑一些纯文本的方法。现在更多的是需要做结合文字、图片的信息,综合的去做一些多模态的工作,这个也是在探索中的一个需要解决的问题。
现在简单的介绍一下一些其他批改的情况,其他批改的情况有几点。
第一点是比如说像开放的阅读题目的批改,现在来看的话其实难度是非常大的,比如一个阅读题目,给你的一个题,然后会问一些问题,很多问题是开放的,最后他会问你,你读了这篇文章之后,你有什么想法能解决这个问题,或者你有没有什么新的方法能让你快速的交到好朋友,你有没有什么新的方法能让你惹生气的小朋友,或者让妈妈原谅你。这种就是一个非常开放的问题,我们要怎么样理解题意,怎么样去来判断他的答案的合理性,是一个相对非常复杂的问题。
还有就是像书写质量批改,我们刚刚说的作文批改,包括像客观题批改都有很大的卷面分,这个是无法避免,那我们怎么样的去来评价学生的书写质量,也是一个相对来讲有一定的挑战,而且需要综合的去来考虑的一个事情。
还有比如说像初高中的时候,我们要有一个几何题,在哪做图,做的点是不是对,然后这个点的位置等等的批改也会有一定的挑战。
同时这里没有像中考高考的那种题目批改,因为高考中考题目的批改,我们目前了解到大多数还是一个拿着学生的作答跟标准答案比对。一道题可能有一题多解的情况,如果真是跟标准答案做比对的话,是需要有把所有的学生写的情况都穷举出来。这个的难度相对来讲更大的。
最后是我们的一些相关论文资料,这里面包括前面我们发的两篇论文。相关论文资料地址自取(点击此处可直达)
第一篇是我们用依存句法分析mask一些bert的结果,使它的效果更好;
第二篇是我们怎么样来做错别字的识别,怎么样来用文本、拼音、图像三者结合起来去帮助我们做汉字的纠错,相对来讲也做到了一个业内最好的效果;
第三篇是说作文打分,目前作文的打分更多的是用回归的模型去做,这个是一篇相关的还不错的工作;
第四篇是我们识别目标议论文结构的文章;
第五篇是一个多模态最经典的综述;
第六篇是我们如何用多模态做OCR纠正的论文。
当然这里列的并不全,只是我们觉得相对来讲能有代表性的文章,然后在批改里面能发挥作用的一些文章和想法。
答:其实论点论据更多的是直接用一个分类的方法就可以做,因为论点和论据表现的形态是不同的。论点更多的会有一些虚词来帮助我们做这件事情;论据其实更多的会有一些人物事件的词,那我们把人物抽象出来,抽象成实体就能用分类的方法来做;论证方法可能会比较特殊,在有的时候,比如对比论证,我们不能单用这一句,他一定要用上下文的关系,而且上下文可能会很远,比如说有的学生他写作文的话,他第一段写一个正例,第二段是个反例。这两个段之间是一个对比论证,所以说不同的情况下有不同的处理。
答:这个有不同的情况。在我们的最基本的模型上,其实也可以机器生成,然后在实际的情况的话,我们会结合具体的领域,会有一些fine-tune,所以说有一部分是自己调的。
答:中文实际上用的跟grammarly是比较类似的,都是用序列标注的模型去做,大家的做法其实也类似,我们调研了一下,应该是跟grammarkly的方法也类似,也是序列标注的为主,大多数人也是用一些多模型的融合来做,当然这是在评测的时候,单模型的话就会类似。然后主要的问题是中文它会有一个是只识别出来病句还是纠正的问题,只识别出来病句的话,基本上还我们判断还可用。如果要纠正的话,指标相对来讲就不是特别理想。所以说可能就不会有值得再去调研和考虑。
答:这个问题可能比较大。然后我们觉得其实包括大家说的填空题批改、作文批改,这些东西其实是看我们怎么来定义它的使用和方式,但实际上来讲,对于我们替代老师其实是根本就做不到,因为它毕竟会有很多的主观性,我们作文更多的去评估的是一个相对来讲更中规中矩,更内八股,这种是好还是不好其实也是值得商榷的事情。那就是特别新颖的、特别酷或者是特别极端的、两头的作文,其实是模型也不一定能见过所以类型。所以说我们始终觉得这些其实是老师教学中的一个辅助的工具,而不是一个完全替代老师的工具,而是我们希望他能够减轻老师的负担,然后提高教学效率,然后让老师做到把他的精力做到更有创新性,然后以及更有意义的事情上。
笔者将相关资料的论文链接资料整理出来,方便大家查用:
- 《Improving BERT with Syntax-aware Local Attention》https://arxiv.org/abs/2012.15150v1
- 《Read,Listen,and See: Leveraging Multimodal Information Helps Chinese Spell Checking》https://arxiv.org/abs/2105.12306
- 《Automated Essay Scoring based on Two-Stage Learning》https://arxiv.org/abs/1901.07744
- 《Hierarchical Multi-task Learning for Organization Evaluation of Argumentative Student Essays》https://www.ijcai.org/Proceedings/2020/536
- 《Multimodal Machine Learning: A Survey and Taxonomy》https://arxiv.org/abs/1705.09406
- 《Multi-modular domain-tailored OCR post-correction》https://aclanthology.org/D17-1288/
如果文章让您有收获,可以给笔者点个赞,鼓励一下,谢谢(●’◡’●)!!!