APP下载

自动数学应用题解算器研究综述

2021-05-12罗琨杰

关键词:应用题模板方程

张 珑,杨 波,罗琨杰

(天津师范大学计算机与信息工程学院,天津300387)

数学应用题(math word problem,MWP)是指一种用自然语言描述的简短问题,问题中通常包含一些数字信息、变量信息和数量关系,需要学习者或自动解算器能够理解问题中涉及的逻辑和规则,利用数学知识(算式或方程组)进行定量推理,计算得出一些未知量,并最终得到问题的答案.数学应用题主要分为两大类:一类是只需进行简单计算的算数应用题,另一类是涉及多个未知量的方程组应用题.算数应用题相对来说较为简单,它的输入是以单词序列(w1,w2,…,wk)形式展现的数学描述,问题文本中提供n 个已知数量q1,q2,…,qn和所需解决的问题,目标是提取与问题相关的已知量,然后将问题映射到用来解决相应问题的算术表达式E 中.方程(组)应用题更具有挑战性,它需要计算多个未知变量,列出一系列方程,才能得到最终答案.

数学应用题涉及自然语言理解和人类问题解决的关键问题,具有以下典型特征:(1)主体部分仅由几个句子组成,结构简单;(2)语法简单,仅涉及较少的领域知识;(3)一般无法通过执行关键字或模式匹配来简单地提取问题的答案;(4)数学应用题解算器有自己的应用,如个性化试题生成,智能学习助手等[1].因此,数学应用题常被作为研究自然语言理解和人类问题解决的理想对象.

为数学应用题设计自动解算器的研究起始于1960 年代[2-5],至今仍受到广泛关注,相关研究对如何设计有效的自动解算器做了大量工作,然而,当应用于大而多样的数据集时,现有方法仍没有达到很高的准确率,因为人类可读的语言和机器可理解的逻辑之间仍然存在很大的语义差距[6],因此,虽然人工智能和机器学习算法取得了巨大进步,但是即使设计高效率的自动解决小学数学应用题的解算器仍是一项巨大的挑战.从自然语言理解角度来看,数学应用题解算器是评估人工智能水平的良好试验平台,解决大规模数学应用题是将人工智能应用到教育领域的重大突破[7].

本文对自动数学应用题解算器的研究工作进行综述.首先对现有数据集进行总结并分析各数据集的特点,以及数据生成方法;然后重点对自动解算器模型进行分类分析,包括基于模板匹配的方法[8-13]、基于统计分类的方法[1,14-19]、基于树或图的图形方法[20-23]和基于深度学习框架的方法[24-28],给出各类型解算器的基本思路、需要提取的典型特征及代表性算法;进一步,介绍了自动解算器性能的评估策略;最后指出该领域研究存在的问题和未来潜在的研究方向.

1 数据集

1.1 经典数据集

目前用于研究数学应用题解算器的数据集主要来源于人工采集和网站自动爬取等方式.这些数据集有些规模较小、且只涉及单一类型的问题,有些规模较大、涉及多种类型的问题.本节介绍常用的典型数据集,并对其数据规模、数据来源、涉及的运算种类、问题类型、相关研究等信息进行归纳.

(1)AI2[14].包含395 个单步或多步数学应用题,只涉及加法和减法运算,每个问题都包含多个变量,并有可能包含与解决方案无关的变量.

(2)IL[20].包含562 个单步数学应用题,每个问题中都包含无关变量,只涉及加减乘除4 种基本运算.

(3)CC[20]. 包含从commoncoresheets.com 获取的600 个多步数学应用题,分为6 种类型:加后减、减后加、加乘混合、加除混合、减乘混合和减除混合,每种类型包含100 个问题,每个问题都不包含无关变量.

(4)Alg514[10].包含从Algebra.com 获取的514 个线性代数问题,只涉及4 种基本运算.

(5)DRAW-1K[29].包含从Algebra.com 抓取的12000个线性代数问题,每个问题都是单变量问题,只涉及4 种基本运算.

(6)Dolphin18K[8].包含从Yahoo 网站的数学学科中自动提取的18 000 个带注释的数学应用题,包含线性和非线性问题,只涉及4 种基本运算.

(7)Math23K[24].包含从一些在线教育网站上搜索得到的23 161 个中文数学应用题,只涉及单变量问题,只涉及4 种基本运算.

此外,还有些数据集利用以上数据集或其子集进行组合,形成新的数据集.本文将这些数据集的相关信息总结归纳,具体见表1.

表1 数学应用题数据集Tab.1 Math word problem datasets

1.2 数据生成

数据生成是自动数学应用题解算器的重要研究内容之一.传统的生成数学应用题的方法主要依靠人工设计或学习网站爬取,这种方式费时费力,因此,一个有效的自动化数学应用题生成器是必要的.

文献[34]提出一种个性化生成数学应用题的方法,能够根据学生喜好自动生成数学应用题.该方法使用以一阶逻辑表示事实和规则的应答集编程生成数学应用题,以满足包含数学概念和语意连贯的要求.文献[35]利用表达式树的概念构建二维导引合成算法自动生成数学应用题,能有效地合成真实、多样和可配置的数学应用题.该方法首先使用量纲单位实例化一些运算规则;然后随机合成一个等式两边都是单变量且量纲单位一致的种子方程;接着,选择方程等式的任何一边按照量纲单位实例化规则进行变量展开,合成一个量纲单位一致的方程;最后,对生成方程的方程树以自底向上遍历的方式生成一个数学应用题.文献[33]提出了主题重写方法,与二维导引合成算法不同,主题重写方法并不是从无到有地生成数学应用题,而是对原始问题s 进行主题变换,从而生成具有新主题t 的应用题s′.主题重写方法使用两步解码过程:(1)识别原始问题s 中的内容词(名词、动词、形容词和命名实体),并将这些内容词视为重写的起始点;(2)对于每个词汇类,从主题t 中提取前k 个主题词.在两步解码过程中,解码器都会考虑从候选列表中进行额外重写,并根据式(1)计算函数R 对其进行评分,

其中:Sem(·)考察候选重写问题s′的语意连贯性,根据单个词的语义以及词汇之间存在的语义关系对整个候选重写问题的语义进行建模;Syn(·)考察候选问题s′的句法兼容性,考察原始问题s 的句法关系对候选重写问题s′的适用程度,并用其来评价候选重写问题s′的句法关系;Th(·)考察候选重写问题s′的主题性,将单个词的主题性上升到整个问题的主题性,从而考察候选重写问题s′的主题性;α、β、γ 为每个函数的权重.考虑到重写候选空间较大,文献[33]使用波束近似搜索来得到最佳候选重写.这种主题重写方法能对现有的故事进行改编,达到改变其主题、而不改变其所含数学概念的目的.

2 自动数学应用题解算器

自动数学应用题解算器的核心工作是构建将自然语言描述的数学应用题文本映射到对应方程(组)的有效算法,而方程(组)的具体求解过程和计算结果利用通用的数学搜索引擎(Wolfram Alpha)容易直接获得.本节主要对自动数学应用题解算方法进行分类分析,介绍各类方法常用的特征,以及相应的准确率结果,并总结了自动数学应用题解算器的评估策略.

2.1 基于模板匹配的方法

2.1.1 提取特征

方程模板一般由一系列数字槽和未知量槽以及相应运算符构成,构造相应的方程模板需要一些能够反映这些槽之间关系的特征.在基于模板匹配的方法中,常用的特征[9-11]有3 种:(1)单槽特征,表征该槽代表的数字是否用于解决问题,或者数字出现的次数、顺序;(2)槽对特征,表征2 个槽之间是否存在共指关系,或数量关系、依赖关系;(3)全局特征,表征解决方案的属性.

2.1.2 基于模板匹配方法的解算器

基于模板匹配方法需要预先定义一组方程式模板集,其中每个方程模板都包含一组数字槽和未知量槽,数字槽由从文本中提取的数字填充,未知量槽由代表未知量的名词填充.文献[10]提出了跨句子边界推理(KAZB)算法,该算法同时分析多个句子以产生数学应用题的全局语义表示.首先,选择一个方程模板作为所有方程系统的框架,这个模板中包含数字槽和未知量槽;然后,从文本中提取填充数字槽和未知量槽的相关信息;最后,将这些相关信息与数字槽和未知量槽对应以实例化方程模板,再通过自动求解方程获得答案.由于KAZB 算法单独考虑数字槽与未知量槽的对齐与插入,而未知量槽的填充与数字槽的对齐密切相关,这样会增加方程系统的假设空间,为此,文献[11]提出了二次规划(ZDC)算法以解决这个问题,该算法使用对数线性模型来描述方程模板的选择和数字对齐,仅考虑方程模板的数字槽填充,并设计一些有效特征来描述数字与未知量的关系,最后使用最大边界目标来训练对数线性模型,以增大正确对齐和错误对齐的边界.对于一些规模庞大且复杂的数据集,如,Dolphin18K 是从问答网站上获取的数据集,其中问题的答案不能直接从最好解答中得出,此时,简单的匹配无法满足需求.为此,文献[8]提出一种基于相似度(SIM)的算法,利用一个评分函数或一个等级感知分类器返回概率最高的实例.基于模板匹配的方法存在2 个主要缺点:(1)数学概念无法通过稀疏的训练实例捕获大量有用的信息;(2)学习过程很大程度上依赖于词汇和句法特征.考虑到以上缺点,文献[9]提出了利用细粒度方程表达式(Fine-Grain)解决数学应用题,首先检索相关的方程系统模板,并将问题文本中的数字与方程模板对齐,然后进行细粒度(更小的方程单位)推理获得最终答案.

上述基于模板匹配方法的解算器所获得的准确率见表2.这类方法的重点在于利用已知模板去构造相应问题的特定方程,需要从预先定义的模板集中选择相应的方程模板,再进行槽的填充,但这类方法只能解决固定类型的问题,泛化能力差,并且需要大量的人工注释,费时费力.因此,基于模板匹配的方法更适用于题型单一,规模较小的数据集. Dolphin18K数据集规模较大且存在数据集标签不完整、数据形式复杂等问题,因此,在此数据集上这类方法性能不好,而Alg514 属于小规模数据集,标签完整,涉及题型较为单一,在此数据集上这类方法性能较好.

表2 基于模板匹配方法解算器的准确率Tab.2 Accuracy of solvers based on template matching

2.2 基于统计分类的方法

2.2.1 提取特征

基于统计分类的方法需要对特定对象进行分类,这里的对象可以是单词级别的,也可以是句子或问题级别的.这类方法需要捕获各类对象的有效特征,以便分类.在基于统计分类的方法中,常用的特征[14,16]有3 种:(1)问题级别特征,表征问题类别及其关键字特征;(2)句子级别特征,表征句子位置以及句子之间或句子元素之间的依赖关系;(3)实体相关特征,表征特殊名词短语的数量.

2.2.2 基于统计分类方法的解算器

基于统计分类方法的重点在于分类,有些方法对问题文本中的重要成分进行分类,有些方法对整个问题进行分类.文献[14]认为数学应用题描述的是部分世界状态的转变,相关动词在状态变换中起重要作用,由此提出使用动词分类法(ARIS)解决数学应用题.ARIS 自动将问题文本中的每个句子分割成一些片段,每个片段都由实体(整个问题中观察或改变数量的某个对象)、容器(实体的集合)、数量(实体所对应的量)、动词和属性组成,这些片段表示了某种世界状态,通过使用少量容易获得的训练数据,ARIS 可将数学应用题映射到世界状态变换,通过动词类型跟踪状态的更新,形成方程式来解决问题.与ARIS 相同,文献[15]利用自然语言处理技术(NLP)从用英文表示的数学应用题中检索相关信息,将给定的问题文本划分为成分相同的句子,再从每个句子中提取所有者、实体和关键字等信息,最后对所呈现的事实进行排序,并得出答案.自动解决数学应用题的能力在很大程度上取决于分析问题类型和识别问题组成的能力[16].文献[16]针对小学阶段的3 种问题类型:增加和减少(join and separate)、部分-部分-整体(part-part-whole)和比较(compare),提出multistage approach 算法. 该算法将问题解决过程分为3 个阶段:预测问题类型;识别每个问题中句子(或句子类型)的功能;从问题中提取必要的信息,生成相应的数学方程.与multistage approach 算法相似,文献[17]提出使用公式(Formula)解决数学应用题,首先识别问题文本中每个句子的变量及其相关属性,自动将这些信息映射到语义表示;然后利用该语义表示识别公式及其属性,属性分为3种:部分和整体(part-whole)、数值变化(change)和数量比较(campare);最后根据公式的形式化描述生成方程.

上述基于统计分类方法的解算器所获得的准确率见表3.这类方法的重点在于分类,而无论对何种级别的对象进行分类,都无法涵盖全部类别,所以对类别的定义以及类别边界的划分等是需要重点解决的问题.因此,这类方法更适用于问题类型较为有限的情况.SingleEQ 和AI2 都属于小型数据集,SingleEQ涉及4 种基本运算,类型较为复杂,而AI2 仅涉及加减2 种运算,类型较为单一,对于类别划分,AI2 数据集的任务量较小.因此,基于统计分类方法的解算器在AI2 数据集上的性能表现优于SingleEQ 数据集.

表3 基于统计分类方法解算器的准确率Tab.3 Accuracy of solvers based on statistical classification

2.3 基于树或图的图形方法

2.3.1 提取特征

基于树或图的方法需要将数学应用题映射成特定的图形,再进行方程构建,因此需要一些特征来描述图形元素之间的关系.在图形方法中,常用的特征[20-21]有3 种:(1)个体数量特征,表征数量是否表示比率或比率单位的一部分;(2)数量对特征,表征2 个数量之间是否具有相同的依赖动词,或2 个数量是否具有相同的单位等;(3)问题特征,问题中包含的所需操作的信号.

2.3.2 基于树或图方法的解算器

算术表达式可以自然地表示为二叉树结构,叶子结点代表问题文本中出现的数量,非叶子节点代表其2 个子节点需要进行的运算操作,优先级高(低)的运算符处于较低(高)层.文献[20]提出了以表达式树概念为核心的算法ExpTree,该算法将提取到的n 个数量(q1,q2,…,qn)的问题文本P 作为系统输入,系统目标是将应用题映射到一个只读一次(每个数量只使用一次)的算术表达式E 中.首先通过数量模型(quantity schema)模块提取问题文本中的重要数量,然后采用相关性分类器(二类分类器,判定问题文本P 中出现的数量是否与解决问题有关)和LCA 分类器(多类分类器,判定相关数量之间的运算符)对表达式树进行全局推理.定义表达式E 的得分为

其中:T 为表达式树;IRR(q)为数量q 与问题解答无关的可能性;PAIR(qi,qj,op)为LCA 分类器选择运算符op 的可能性,LCA(qi,qj,T)为T 中qi和qj的最近公共祖先;wIRR为缩放参数;I(E)为未出现在表达式E 中的所有数量.与ExpTree 相比,文献[21]提出的解算器ALGES 有2 处明显的不同:(1)ALGES 采用一种更贪婪的方式,枚举所有可能的方程树,并且考虑无关变量;(2)ALGES 通过整数线性规划(ILP)生成树的空间,来表示类型一致的代数方程.文献[23]提出的DOL 方法可以看作是基于树方法的拓展,其目标由建立一个方程树转换为建立一个自然语言文本的结构语义表示.DOL 方法的核心是通过一个语义解析器将文本句子转换为DOL 树,每个DOL 节点的词汇和语法规则都采用半监督的方式构建,然后使用基于上下文的无关语法(CFG)计算每个DOL 节点的得分,并选择得分最高的DOL 树的派生,最后通过推理模块获得答案.

文献[22]提出了一个重要概念:单位依赖图(unit dependence graphs,UDG),来表示不同数量单位及问题之间的关系,再进行推理得到表达式.对于应用题中的每个量和问题,在UDG 中都存在相应的节点.UDG 由RATE、SAME UNIT、NUM UNIT 和DEN UNIT组成.RATE 为描述比率关系的数字;SAME UNIT 表示由无向边连接的2 个节点具有相同的单位;NUM UNIT 表示源节点U 的分子单位与目标节点V 的单位匹配;DEN UNIT 表示源节点U 的分母单位与目标节点V 的单位匹配.构造一个应用题的UDG 本质上是一个结构化预测问题,利用节点分类器(二类分类器,以每个节点为输入,判断其是否为RATE)和边分类器(多类分类器,以一对节点为输入,预测对应边的属性)独立预测结构的各个部分,然后再通过联合推理得到UDG,从而得到解的表达式树,最后以遍历的形式得到解的表达式.表4 给出了一个UDG 的应用实例.

表4 单位依赖图实例Tab.4 Example for unit dependence graphs

上述基于图形方法的解算器所获得的准确率见表5.相关研究表明,基于图形的方法往往适用于类型简单的数据集.Dolphin18K 和CC 数据集涉及的应用题类型繁多复杂,简单的树或图不能完全处理数量间的关系,因此,基于图形方法的解算器在这2 个数据集上的准确率较低,而AI2、IL、SingleEQ 和AllArith涉及的问题类型较为单一,因此这类方法在这些数据集上的准确率较高.

表5 基于图形方法解算器的准确率Tab.5 Accuracy of solvers based on tree or graph

基于图形的方法通过引入图形辅助表示数量间的关系,其中包含一些数学概念,在一定程度上简化了问题文本到方程表达式的转化过程,为之后自动解算器的研究提供了新的思路.

2.4 基于深度学习框架的方法

2.4.1 提取特征

近年来,深度学习算法在智能应用领域取得了巨大成功.深度学习的主要优点是,在训练数据量足够的情况下,能够以数据驱动的方式有效学习特征,无需人工干预,减少了对特征的需求,但也可以选择一些特征增强算法性能.用于深度学习算法的特征包括数量对特征和问题相关特征,这些特征与前面3 类方法的特征相同.

2.4.2 基于深度学习框架的解算器

近几年,基于深度学习的方法已经成为解算器设计的主流方法,主要分为2 种形式:(1)强化学习的形式,利用循环奖励机制构造方程;(2)端到端的形式,最经典的端到端形式是Encoder-Decoder 框架,在Encoder 层和Decoder 层采用RNN 或者CNN 作为编码器和解码器,用来完成从数学应用题到方程表达式的映射.

(1)强化学习形式的解算器模型.

强化学习的形式通过给定一组内部状态S={s1,…,sm}和动作A={a1,…,an},迭代地将动作A 作用于状态S,从而得到新的状态S′,直到状态S′满足终止条件.文献[36]首先将深度学习方法与强化学习结合在一起,提出深Q 网络模型,成功地直接从高维输入来学习控制策略.深Q 网络成功地解决了各种大搜索空间问题,并且在精度和运行时间方面都展现了良好的性能.借助深Q 网络,文献[25]提出的MathDQN 模型将深层强化学习应用于求解数学应用题,以解决其指数级方程模板的搜索问题. MathDQN 结合了Exp-Tree 算法的思想,首先,将数学应用题序列作为模型输入,利用ExpTree 算法中的数量模型模块提取出与问题解决有关的数量,并将其作为表达式树的叶子结点,在此过程中利用重排序机制(re-order)对叶子结点按照构建表达式树的顺序进行重新排列;然后,使用深Q 网络框架构建表达式树,在此过程中使用所选数量对特征(feature extraction)向量表示状态,并通过环境的反馈(reward signal)以正负奖励的形式迭代地选择数量对及其运算符;最后,对深Q 网络构造的表达式树进行遍历得到方程.MathDQN 模型的算法流程如图1 所示.

图1 MathDQN 模型算法流程Fig.1 Flowchart of MathDQN

(2)端到端形式的解算器模型.

文献[24]提出的DNS(deep neural solver)模型是首个不依赖于复杂特征工程的基于深度学习的解算器模型,并且首次将seq2seq 模型[37]应用于自动解算器设计,对解算器的发展做出了里程碑式的贡献.DNS首先将问题文本中出现的数字映射到一些数字标签,并用这些数字标签代替原始问题文本中的数字;然后将带数字标签的应用题作为seq2seq 模型的输入,seq2seq 模型由1 层嵌入层和由2 层GRU 组成的编码层以及由2 层LSTM 组成的解码层构成,模型输出为一个方程模板,对得到的方程模板进行相应的数字对应后即得到解决应用题的具体方程.为避免应用题文本中无关数量的影响,DNS 提供了一个基于LSTM 的二分类模型的重要数字识别模块(SNI),用于判别解决问题所需的重要数字,只对这些重要数字进行映射,从而有效提高了模型性能.进一步,文献[24]通过设置超参数阈值θ 将seq2seq 模型与基于相似性的检索模型结合,建立了混合DNS 模型,该模型中,如果待测试问题与检索问题的Jaccard 相似度超过θ,就将检索问题的方程模板作为测试问题方程模板,否则,利用seq2seq 模型生成方程模板.与原模型相比,新模型能够产生新的方程模板,并且不需要预定义的方程模板集.

文献[32]提出的方法Ensemble Model,在DNS 的基础上增加了方程归一化模块,利用方程表达式树的唯一性解决seq2seq 模型输出的方程模板中出现的数字顺序和括号匹配问题,使用相应的归一化策略提高条件概率(方程模板|问题文本)的值,从而得到唯一的方程模板.另外,文献[32]还集成了机器翻译中较为流行的3 种seq2seq 模型(BiLSTM、ConvS2S、Transformer)的优点改进了Ensemble Model.

随着深度学习方法在解算器设计中应用的发展,对大型数据集的需求也有所增加,因此出现了一些规模较大的数据集,如Math23K 和Dolphin18K 等. 然而,很多解算器在这些大型数据集上性能并不好,主要是因为一些端到端的方法会产生指数级的目标表达式映射,占用大量空间.为解决此问题,文献[26]提出了一个基于递归神经网络的解算器模型T-RNN.以一个应用题为例,T-RNN 模型的解算过程如图2 所示,模型由2 个过程组成:模板预测过程(图2 左侧)和利用递归神经网络解算过程(图2 右侧).模板预测过程的目的是将问题文本映射成能够转换为树形结构的方程模板,这里采用了2 种减少方程模板数量的方法:(1)将运算符封装成<op>的形式,再用递归神经网络判定<op>的真实值;(2)添加一个方程归一化模块,以规范方程模板的形式.模板预测过程首先将问题文本中的数字映射为数字标签,然后将映射后的文本经过1 层嵌入层输入到seq2seq 模型中,这里的seq2seq 模型选用BiLSTM 与LSTM 分别作为译码器与解码器,seq2seq 模型的输出经过1 层注意力层(attention)以更好地捕捉数量之间的关系,最后得到形似n1<op>n2<op>n3的方程模板,该模板同时可以由树形结构表示.在得到方程模板后,通过递归神经网络确定数量间的运算符,便可得到最终方程和答案.在此之前,T-RNN 还设计了一个数量表示(quantity representation)模块,首先对数字映射后的问题文本经过词嵌入操作,并将其作为BiLSTM 层的输入,获得一系列隐藏状态,输出之前将其经过1 层自注意力层(self attention)以捕捉数量间更多的语义关系,得到新的更有意义的数量表示q0,q1,…,qn,这些新的数量表示与方程模板中的数字标签一一对应.递归神经网络利用新的数量表示确定数量间的运算符,得到最终的表达式及其结果.T-RNN 通过采取一系列措施减少方程模板的数量,有效提高了解算器的性能.

图2 T-RNN 模型Fig.2 T-RNN model

基于深度学习框架的方法不需要提取大量有效特征,减少了人为干预,并且能够通过大量的自主学习产生新的方程模板,减小了对于预定义模板集的依赖,大大拓宽了能够解决的问题类型的范围,开启了数学应用题解算器发展的新篇章.上述基于深度学习框架的解算器所获得的准确率见表6.AI2、Alg514 和IL 为英文小型数据集,模板数量少,问题类型单一,因此基于深度学习方法的性能并不明显优于其他传统方法;Math23K 属于大型数据集,涉及的问题类型复杂,但它属于中文语料,语义理解分析是一大难关,因此,基于深度学习的方法在这个数据集上的准确率稍低于小型数据集;CC 数据集涉及的应用题类型繁多复杂,基于深度学习的方法在这个数据集上具有较好的性能,准确率优于其他类型方法.

表6 基于深度学习方法解算器的准确率Tab.6 Accuracy of solvers based on deep learning

2.5 解算器的性能评估策略

解算器的性能评估也是值得关注的问题,目前最流行的评估策略是考察解算器的准确率[8,10,11,21,23],这显然是一个易于实现的度量指标,另一种评估策略是从黄金方程系统中提取最优推导,将其与解算器的预测推导进行比较[10].受文献[10]影响,文献[29]的研究表明一些错误的方程有时也能产生正确的答案,只考虑正确率是不全面的,因此提出了一种新的评估策略:方程准确性,并使用“派生”来评价解算器性能.用x 表示问题文本,y 表示方程系统,q 表示文本中出现的数量,T 表示方程模板,A 表示数字与模板的对齐,C(T)表示方程模板中的系数集.派生分为4 个阶段:第1 阶段为衍生结构,提取问题文本中的数量,将其与模板方程对齐,并将对齐A 和模板T 一起作为方程系统的派生标识z=(T,A);第2 阶段为派生等价,如果对应的模板T1、T2和对齐A1、A2是等效的,那么派生(T1,A1)和(T2,A2)是等价的;第3 阶段为模板等效,对于2 个模板T1和T2,其对应的系数集为C(T1)和C(T2),当|C(T1)|=|C(T2)|,并且能够建立从C(T1)到C(T2)的一一映射时,那么T1和T2所确定方程的解是相同的,也就是这2 个模板是等效的;第4阶段为对齐等效,分别识别模板T1和T2中的插槽,如果能够建立一个A1到A2的一一映射,则认为这2个对齐是等效的.经过以上4 个阶段的判别可以确定解算器的方程与正确方程是等价的,保证了方程的准确性. 这种评估策略可以更准确地评估解算器的性能,准确找到其他策略可能忽略的错误.

3 研究展望

本文对近年来自动数学应用题解算器的研究工作进行了综述.首先,介绍数学应用题解算器的研究内容和意义,对现有研究所用数据集进行了汇总和特点分析,并进一步介绍了数据生成方法;然后,对自动解算方法进行了分类分析,给出不同类型解算器的基本思路、需要提取的典型特征及代表性处理算法;最后,介绍了自动解算器性能的评估策略.

自动数学应用题解算器的研究发展至今,目前研究现状还不是很乐观,现有的解算器模型还存在很多问题:

(1)语义分析问题.机器理解与人类语义理解有很大差异,如一些罕见词汇与短语,系统不能够很好地理解.如,ZDC 算法不能很好地识别未出现过的词[11].

(2)知识背景问题.部分数学应用题的解决需要特定的学科常识,系统如果未获得相应的常识库,就无法解决该类问题.如,ALGES 不能获得1 周与7 天等价的有关常识[21].

(3)局限性问题.基于模板匹配的方法通常只能解决存在于预定义模板中的问题;一些数学应用题解算器只能解决特定类型的问题.

(4)无关量问题.问题文本中出现的数量并不都参与问题解决,因此,准确判别无关量很重要.

(5)数据集规模问题.对于基于深度学习的方法,数据集规模对系统性能有很大影响,目前普遍使用的数据集规模还比较小,不足以训练出更好的性能.

(6)分类器性能问题.在对问题类型或词类型进行分类预测时,分类器性能对系统的性能有很大影响.

随着人工智能的发展和相关技术的提升,本文认为数学应用题解算器的研究有以下几个方面值得继续探索:

(1)在数据集方面,可以通过数据驱动的方法生成更真实的数据,提高数据集的规模和质量,更好地为系统服务.

(2)基于根据动词范畴分类的思想[14],可以尝试将分类范围扩大到整个问题,先考虑对问题类型进行分类(如先将问题划分为单变量问题或多变量问题),然后再选择解决问题的最优模型.

(3)数据预处理可以采用更有效的方法,如,利用深层双向语言模型中的ELMo 模型[38]建立词向量,采用知识图谱的形式获取更为完整的语义关系等.

(4)对网络结构进行优化,如在模型中结合生成对抗网络等新型深度学习算法提高系统性能.

(5)可以进一步结合现有模型的优势设计解算器,如,将序列建模模型TCN[39]建立在seq2seq 框架上,利用TCN 感受野广和时序性的特点构建深度学习模型;采用图网络[40]的方式构建相应的图结构,提取相应的实体作为节点,利用边表示节点间涵盖的数学关系,以提高模型性能.

猜你喜欢

应用题模板方程
铝模板在高层建筑施工中的应用
高层建筑中铝模板系统组成与应用
应用题
铝模板在高层建筑施工中的应用
方程的再认识
有限制条件的排列应用题
数列应用题、创新题
方程(组)的由来
Inventors and Inventions
圆的方程