北京物流信息联盟

深入解析数学高考机器人的技术原理

2022-08-16 13:24:43


2017 年高考已经结束四个多月了,但围绕高考展开的人工智能故事却还在持续发酵中。数学高考机器人的自动解题系统是人工智能领域的前沿性研究,涉及到人工智能技术的多个领域,包括图形识别、语音识别、自然语言处理、知识表示等。

一、人工智能求解数学题的历史与现状

智能答题系统最早可以回溯到20世纪60年代。1964年提出的STUDENT(Bobrow 1964)系统可以视作早期答题人工智能实现的代表:输入有规定的描述方式的数学题,人工定义一组关键词和关系(如EQUAL, SUM, PRODUCT),把自然语言(linguistic form)通过模式匹配映射到对应的函数关系表达。例如句子“the number of advertisements is 45”可转化为函数表达方式(EQUAL (NUMBER OF ADVERTISMENTS)45)。之后的CARPS系统(Charniak 1968)能够把自然语言表示成为成树状结构,再匹配生成公式解答,此外它嵌入了很多数学模型的知识,如面积、体积、维度等等。但CARPS系统仅限于解决比率问题 (ratio problem)。

2008年之前多数关于智能答题系统的工作都是基于预定义的模式匹配规则,这类工作主有两个主要的缺点:

  • 定义的规则覆盖率小,能解决的问题十分有限,而在真实场景下数学题目的描述往往是比较自由、不太受限的。

  • 评测比较模糊,这些系统很少给出评测结果以验证其有效性。

在这之后有了很多不同的尝试。比如SoMaTePs系统(Liguda & Pfeiffer 2012)尝试用扩张语义网(Augmented Semantic Network)表示数学题,抽取题目的对象(object)作为节点,节点之间的关系包括加减乘除。ARIS 系统(Hosseini 2014)让机器学习题目中的动词,并对这些动词进行加减二分类,把数学题看作以动词为关系的状态转移图,但这个方法目前只解决一元加减问题,不考虑乘除。

MIT 于2014年在国际计算语言年会(ACL 2014, Kushman 2014) 上提出了一种基于统计学习的方法(命名为KAZB),引入了模板的概念 (比如“1+1”和 “1+2”同属于一个模板x = a + b) 。根据公式的标注把数学题归类成不同的题型,抽取题目中不同层次的特征(如有关词汇、词性以及语法等),使用统计学习技术自动判断题型。但是此类方法的一个缺点为:无法解决训练集之外的题型。比如训练集只出现过两个数相加,机器无法泛化解答三个数相加的问题。之后百度ZDC(Zhou et al. 2015),微软研究院 (Upadhyay 2016)的研究团队也在同样的方法框架下分别做了不同的优化改进。在一个开放的评测数据集上(即ALG514,含有514道题),三个系统准确率在上分别是68.7%,78.7%以及83%。

随后,华盛顿大学的ALGES系统(Koncel-Kedziorski et al. 2015)定义了Qset的概念(一个Qset包括Quantity,Entity,Adjective等属性)。首先抽取一道问题的Qset,利用线性整数规划把Qset和加减乘除生成可能的公式,再选出最有可能的公式解出答案。目前限定于一元一次方程。他们同时构建了一个508道题的数据集,系统获得的准确率在72%左右。

最近两三年这个领域的研究热度持续上升,并出现了几个可喜的变化:首先,统计学习方法被用于数学应用题的自动求解 ,其主要思路是用一个已经标注好的题库作为训练集来训练出一个模型,然后借助这个模型来处理未知题目。统计学习方法的引入使得解题方法更加多元化。其次,若干公共数据集被发布出来,使得对解题方法的定量评测和对比成为可能。第三,更好的符号方法被提出来,并在一些题目类别上取得了不错的效果。

二 、自动求解数学题目的难点和挑战

自动求解数学题目最大的难点在于让机器理解人类语言,这也是自动解题系统被公认的核心问题之一:自然语言处理中的语义分析。

尽管鸡兔同笼问题已经成为小学数学中的常见题型,然而该问题对于计算机来说却是一个极大的挑战。具体来讲,为了得到最终答案计算机需要通过理解题目的文字描述来得到相关数学表达,计算机需要具备逻辑推理能力来对得到的数学表达进行算术演算,计算机还需要具有一定的有关现实世界的常识从而能够约束和简化题目。

首先,数学解题需要多种层次的自然语言理解。对于一道题目的文字描述,计算机需要知道并理解其中包含的概念。举个例子,“一加一等于几”以及“小明有一个苹果和一个梨,问小明有几个水果”,同样本质是“1+1=?”的两道题,在题型概念上是一样的,表达方式却截然不同。计算机需要知道如何把以上两道问题都抽象成两个对象相加,这就涉及到所谓的自然语言理解。

事实上,抽取题目中各个概念变量的关系也十分具有难度。数学题要求的是精确,如果题目变换了一个词,变量之间的关系可能就会改变,整个解法也会不一样。比如下面两道追赶问题:

  • 两辆车同时往同一方向开,速度分别为28km/h和46km/h,问多少小时后两车相距63km?

  • 两辆车同时往相反方向开,速度分别为28km/h和46km/h,问多少小时后两车相距63km?

两道题描述很类似,但是车的方向关系导致了两题的解法大不相同。如何捕抓出这种细微的差别也是一大难点。这也是所谓的自然语言理解的一部分。

其次,在一定程度上理解文字之后,数学解题需要通过逻辑推理生成解题公式。如图2-1 Hosseni 2014的工作,把数学题通过自然语言处理得到几个变量状态之后,需要推理得到各个变量状态之间的关系得出数学公式。在他给出的例子中,计算机通过学习能得到动词“give”代表两个状态相减。

Hosseni 2014训练一个分类器判断一个动词属于加/减

最后,计算机需要具有一定有关现实世界的常识去理解自然语言里面一些隐式的指代。比如圆周率为3.14,速度乘以时间等于路程等等。在鸡兔同笼问题中,鸡有两条腿、兔有四条腿是隐式包含的条件,只有知道这些常识才能正确的解答问题。

三、 数学问题的知识表示

知识表示方法主要包括传统的知识表示方法(如产生式表示法、谓词逻辑表示法、框架表示法、语义网表示法等)和面向对象的知识表示方法。

传统的知识表示方法

产生式表示法 产生式表示法,又称规则表示法,具有和图灵机相同的表达能力。自 1943 年美国波斯特(E.POST)提出了组合问题的形式变换理论,并首次建立了一个产生式系统以来,这个方法逐渐成为最常用的知识表示方法之一。

产生式表示法的基本形式是 P→Q,即条件-结果(IF-THEN)形式,适合于描述、策略和指示等相关知识,特别是专家的启发式知识,以产生式表示知识的专家系统也被称为产生式系统。图 3-1 显示了产生式系统的基本结构,可以看到,产 生式系统由知识库和推理机两部分组成,而知识库又包含产生式规则形成的规则库和事实构成的数据库两个部分。产生式系统的推理方式包括正向推理、反向推理和双向推理。

图 3-1 产生式系统的结构

产生式表示法具有简单、易维护和易扩展等特点。产生式表示的格式比较单一,规则间的关系相对独立,适合处理简单问题;产生式的推理方式简单,不包含复杂的计算;知识库与推理机分离,使得知识库的增、删、改等操作不影响推理机的运作。

谓词逻辑表示法 数理逻辑通过符号系统来表达客观对象以及相关的逻辑推理,是用数学方法研究形式逻辑的一个分支,主要包括命题逻辑和谓词逻辑。命题逻辑是研究命题及命题之间关系的符号逻辑系统,用于知识表示存在很多局限性,如不适合描述包含多对象的事例和处理复杂问题。谓词逻辑是命题逻辑的扩充和发展,用于知识表示能够反映出知识本身的结构。谓词逻辑表示法就是基于谓词逻辑的知识表示方式,利用逻辑公式描述对象、性质、状况和关系等。如:“AB 为直线”的 谓词公式形式为“S(a)”,其中,S 表示谓词:“为直线”,a 表示“AB”。

框架表示法 框架是描述对象属性的一种数据结构,这里的对象可以是静态的概念或事物,也可以表示动态的事件。一个复杂的对象常常包含很多方面的属性,而每一个方面的属性可用框架中的一个槽来描述,对应的属性值则称为槽值;每个槽又包含若干个侧面,对应的值称为侧面值。

语义网表示法 语义网络表示法是用一个有向图表示知识的,图中节点表示实体,节点间的 弧的表示实体间的语义关系,这样,两个节点及其中间的弧构成了语义网络的一个基本的语义单元,其形式化表示为(节点 1,弧,节点 2)。实体间的语义关系包括类属关系、属性关系、包含关系、位置关系以及时间关系等。

图 3-2 是一个语义网络表示的实例,其中,KAO 和 ISA 表示的实体间的类属关系,KAO(A-Kind-Of)表示“是一种”的含义,即三角形是一个种多边形,ISA(Is-a)表示“是一个”的含义,即三角形 ABC 是一个三角形。其余弧表示的是属性关系,如点 A 是三角形 ABC 的一个顶点。

图 3-2 语义网实例

语义网络表示法采用网络的形式表示对象及对象间的关系,比较直观,符合人类思维的联想过程;另一方面,语义网络表示知识的形式不统一增加了问题处理的复杂性,而且通过语义网络所实现的推理不能保证其正确性。

面向对象的知识表示方法

面向对象(OO)技术是从上世纪 80 年代兴起的,并逐渐发展为主流的程序设计技术。在面向对象程序设计中,对象是核心概念,是面向对象系统中的基本实体,一般由静态属性和一组操作构成;类是对象的类型,是具有相同属性和方法的对象的抽象。

一般而言,面向对象的知识表示(OOKR)就是指用面向对象的类或对象来表示知识的一种方法。对象是 OOKR 的主体,知识由对象构成,将这些知识以及处理这些知识的一组方法(主要包括知识的获取和更新方法、推理方法以及消息的 传递方法等)封装在一起,就构成了知识对象,具有封装性。相应地,知识类是对知识对象的抽象,知识对象具有这个知识类的某些具体属性和方法。

此外,OOKR 还具有继承性,超类的知识可以被子类共享,子类除了包含它们在超类中公共的属性和方法之外,还可能含有自己特殊的属性和处理方法,这样,在构建新的子类对象时,只需要对其中的特殊属性和方法部分进行描述。通过这样的方法,简单知识类可以派生出复杂知识类,减少知识冗余,而且各知识对象可以形成以实例、子类、超类的关系形式形成 Is-a 的层次结构。

面向对象的知识表示方法以对象为中心,分析对象及对象间的联系,更符合人们认识问题和分析问题的习惯思维方式。面向对象技术的继承性,使得该方法具有天然的层次性和结构性。

可以看出,传统的知识表示方法研究时间较长,理论和技术也很成熟,针对一些特定的知识具有较强的应用性。如谓词逻辑表示是与人类的自然语言比较接近的一种表示方法,其中的一阶逻辑是目前为止能够表达人类思维活动规律的一种最精确的形式语言。但是,对于大型的、复杂的问题求解系统来说,单一的知识表示方法就显得不足。面向对象的知识表示方法本质上是将一种或多种单一的知识表示方法(产生式、框架、语义网络等)按照面向对象的设计原则组合而成的一种混合式的知识表示形式,较传统的知识表示方法具有明显的优势。

面向对象的分析就是一个以对象为中心,构建对象模型的过程。面向对象的知识表示中对象的基本结构如图 4-1 所示。这种一般的面向对象表示不仅包含属性和方法,还包含规则,即将规则对象作为真实对象的属性来处理。这样可以保持面向对象的封装和继承的特点,有利于规则在类层次之间的传递;但另一方面,由于规则项在对象内部,对规则进行修改,必然会影响到知识对象。因此,本文 将规则项从对象知识中分离出来,专门建立一个规则库,存放这些规则对象。规 则库与知识对象构成的知识库相对独立,可以降低耦合关系,提高系统的可维护 性;同时,规则库又是以知识库中的知识对象为驱动,触发产生式规则,创建新的知识对象,从而实现知识推理的。

图 3-3 面向对象的知识表示基本结构

对象不仅可以表示数学概念,还可以表示概念间的关系。如两个三角形相似可以形成“三角形相似关系”的对象。这样,在对象的结构中,就可以不用关系项来表示概念间关系和对象间关系,从而简化单个对象,符合单一职责原则。

将知识对象抽象成知识类,再通过继承、聚合等形式以及类的抽象形式(抽象类或接口),逐层构建和表示,形成面向对象知识表示架构。如图 3-4 所示,其中关系是指概念间的关系。

图 3-4 面向对象的知识层次结构表示

对象的形式化定义

定义 1:一般的知识对象可以衍生出具体的知识对象形式。通过上述的面向对象的分析,可以将知识对象的表示定义成三元组的形式:

KO :: = (O, Attributes, Methods)

其中:

  • KO(Knowledge Object)表示知识对象的类型。

  • O 表示对象的标识符,如对象名或对象 ID,在给定命名空间内的表示是唯一的,由合法字符组成,但是不能用系统保留字表示。

  • Attributes 表示对象的属性集,一般包括基本数据、概念或概念间的关系等。 根据知识对象表示的内容不同,属性集可细化成不同的组成,形成具体对象形式。

  • Methods 表示对象的方法集,包括对象的构造方法、属性的操作方法以及对象 的调用操作等。在对象内部,不同的方法由方法签名区别,方法签名包含方法名 和传入参数列表(可以为空)。构造方法是用来创建知识对象的方法,在新建对象 的过程中,对属性值的填充,实现对象的初始化。根据面向对象程序设计的单一职责原则,数学知识对象中的方法定义了对对象属性值的传入和获取等一些简单操作,而将处理知识推理和知识关系的复杂方法抽离出对象实体,形成独立的处理模块,如辅助点计算模块、几何知识等价判定模块等。

定义 2:概念对象,是一种具体的知识对象,用于描述基本的数学概念,同时也是关系对象的组成部分。概念对象中的属性集包含数据集和概念集,即概念对象中可以包含其他概念对象,如线段对象中包含两个点对象。根据定义 1 的表示,

概念对象的具体形式化定义为:

Concept::= (C ,Data,Concepts ,Methods )

此时,知识对象类型为 Concept(概念),其中:

  • C 是概念对象的标识符,需要符合知识对象标识符 O 的要求。

  • Data 与 Concepts 是由 Attributes 细化而来,一般来说,两者至少存在一个; 如点对象中存放表示点的数据,包括点的字母形式数据和坐标值数据;而线段由点构成,因此,线段对象包含两个点对象等。

  • Methods 表示概念对象的方法集。

定义 3:关系对象表示概念间的关系,其形式化定义为5元组形式:

Relation::= (R ,Data,Concepts ,Relations ,Methods )

此时,知识对象的类型为 Relation(关系),其中:

  • R 是关系对象的标识符,同样要符合知识对象标识符 O 的要求;

  • 属性集不仅包含数据集和概念集,甚至包含关系对象,构成复合知识对象。 一般地,Data,Concepts 和 Relations 三者至少存在一个。特别地,数学问题中常 常出现一些抽象的知识,从对象的角度看,就是不含任何数据体的知识对象。这 种抽象知识对象中属性集为空,对它的操作和使用有限,但是在知识表示和对象 构建的过程中,有利于形式统一以及层次结构清晰。

  • Methods 是关系对象的方法集。关系对象一般实现内部概念对象或关系对象的数据获取方法,方便对外使用。

定义 4:实例是类的具体化,类则是实例的抽象化。根据定义 1 的一般知识对象的描述: KO ::= (O, Attributes, Methods) ,运行对象实例的形式定义为:

Class: [id ,attrs ]

其中:

  • Class 表示实例对应的知识对象,与知识对象表示中的标识符对应,在不会混 淆的情况下,一般可以用知识类的名称表示。

  • id 表示实例的唯一标识符,用于运行时对该实例的操作和调用。

  • attrs 表示实例中的具体属性值的集合,一般由基本数据、概念实例或关系实例组成。

  • 实例有作用域的限制,在方法内部定义的为局部实例,在方法外部定义的为全局实例。同一作用域下不同对象的标识符不能相同。

上述的分析过程中,对知识对象的层层封装,本质上符合人类认知和学习的过程。人们一般从基本概念知识学习,逐渐掌握高阶知识,具有递进性,高阶知 识一般由低阶基础知识所构成,知识结构存在一定的层次性。

规则一般采用产生式的形式,即 P→Q(或 IF-THEN)形式,表示当 IF 后面的条件成立时,THEN 后面的结论成立。规则库中的规则是以对象为驱动的,可以为一个或多个对象,通过“且”、“或”以及“非”等模型进行组合。为了推理的稳定性和准确性,条件成立时,一个规则只产生一个新的知识对象,如果相同的条件产生其他知识对象则需要用另一个规则定义。

定义 5:规则对象的形式化定义为一个三元组的形式:

其中:

Rule::= (U ,Conditions ,Conclusion _ Relation )

  • 规则对象的具体类型不再详细说明,这里是一般的规则对象类型。

  • U 表示规则对象的唯一标识符。

  • Conditions 表示条件知识对象集合,可以由概念对象和关系对象组成。

  • Conclusion_Relation 表示产生的结论知识对象,为了简化产生式规则的表示形 式,提高其推理效率,只用关系知识对象表示结论。

数学问题知识表示实例

初等数学问题主要包括几何问题、代数问题、解析几何、向量等知识,几何问题与代数问题涵盖面最广,涉及的概念知识较多。而且,几何中的知识概念层次清晰,表示形式相对规范,代数问题中的知识关系相对复杂,需要进行一些转化处理。下面主要针对几何问题、代数问题以及向量等其他问题分别进行知识表示的实例展示。

几何知识表示实例

点、线、形、面、体等是基本的几何知识概念元素,其中点和线又是组成其他元素的基础,接下来以点、线概念以及它们构成的关系知识对象为例,进行几何知识对象的描述。图 3-5 显示了几何问题中点和线概念结构。

图 3-5 点和线的概念结构

初等数学问题中,点一般用大写字母表示,如点 A;还有带坐标形式的点, 如点 A(x,y)。所以构成点的数据项主要包括字母的形式表示和坐标的形式表示。线 由点构成,一般用两个点表示,其类型比较丰富,包括直线、线段、射线、角平 分线、弦、半径等。因此,要对线定义一个抽象类型(AbstractLine),具体类型的 线由这个抽象类型的线派生出来。直线中的两个点具有互换性,表示直线 AB 与直 线 BA 是等价的,此外直线还可以用一个小写字母表示,而线段只能用两个点表示; 射线中的两个点不具有互换性,规定第一个点为射线的起点,第二个点表示方向;半径和弦本质上都是线段,但根据面向对象设计中低偶尔、高内聚的要求,将线段聚合到半径和弦中。此外,它们一般还要关联一个圆。同样,角平分线中包含射线,一般关联一个角。可以看到,半径、弦和角平分线需要关联其他概念对象 构成复合对象。表 3-1 显示了点、线的基本概念对象及其实例表示。

表 3-1 点和线的基本概念对象表示:

点与点、点与线以及线与线之间可以构成很多基础的关系,如两点重合、三点共线、点在线上、线段中点、线段相等、两直线平行、两直线垂直等。表 3-2 显示了点、线组合形成的关系对象及其所含数据项内容,由于实例表示比较复杂, 不再显示关系实例的完整实例表示,内部的概念实例表示也采用简化形式。

表 3-2 点和线形成的关系对象示例

代数知识表示实例

代数知识表示的基础概念是表达式,表达式主要由常数(整数、实数等)、变 元(字母形式)以及运算符等符号构成,如 x,kx+1,(x+1)*2 等。表达式通过关 系符可以构成复杂形式的对象,包括等式与不等式、方程与函数以及更为复杂的方程组与不等式组等。图 3-6 显示了代数基本概念的结构。

图 3-6 代数基本概念对象结构

实际上,方程与函数都是一种等式,即含有变元的等式。进一步的,函数是 含有多个变元的方 程,如 “ 一次 函数 y=kx+b” 变换后变成 “ 二元一次方程 kx-y+b=0”。可以看出,代数知识之间的关系是灵活多变的,并不像几何知识那样清晰,表 4-3 显示了一些基本的代数概念和常见知识的表示及实例。可以看到, 表达式是最基本的代数元素,不等式“X2>X3”有两个表达式对象构成,将“>” 抽象成一种属性,用 type 定义,E_GT 表示大于的含义,这样,不等式关系对象中, 两个表达式成分被 type 限定,不能随意交换。不等式“X2>X3”形成的知识对象 为“不等式关系:[ineq1, {type: E_GT, [exp2,{expr: X2}], [exp3, {expr: X3}]}]”。

虽然函数和方程在形式上都是等式,但在数学问题中,一般都有具体的含义, 因此,在面向对象设计过程中,将等式对象封装到方程或函数中,而不是派生出它们,这样能够灵活的对其进行操作。

表 4-3 代数知识概念的实例

其他知识表示实例

其他知识表示以向量和集合为例,表 4-4 显示了向量和集合的基本表示、基本 运算以及基本关系的知识实例。

表 4-4 向量和集合的知识表示实例 概念和关系描述表示:

向量、集合等属于高中知识点,是以初中几何、代数等知识为基础的,在表示形式和逻辑关系上都比较复杂。如集合有交、并、补等运算形式,类似表达式, 可以将集合运算形式定义为“集合表达式”。集合运算的结果,仍然是一个集合, 因此,可以将单个集合形式与集合表达式一起抽象出集合的根对象(AbstractSet)。 集合关系运算(如集合相等、包含等)则类似等式、不等式关系,包含两个基本 的集合以及关系类型属性。集合、向量中存在一些特殊类型,如“空集”、“零向 量”等,可以利用对象的静态实例来表示。

四、基于句模的题意理解方法

数学语言是数学思想的具体表现形式,数学语言是一种各科学、各领域之间沟 通交流的通用性语言[41]。数学语言相对日常用语(也就是自然语言)的特点在于数学语言中除了文字以外,还充满了各种数字,具有特殊意义的符号。它们按照一定 的规则和顺序表达特定的数学意义。数学语言的基本特点有:

简练性

自然语言本身就具有概括性,而数学语言则是对自然语言的进一步概括。数学语言以尽可能用最少的语句、最简单的语法来表示数学意义。在数学语言中,数字、字母、符号表示自然语言中用词组成句表示的东西,即用一组由这种语言的字母表 中的字母有限序列表示的东西。

通用性

数学语言和自然语言的本质区别之一是变元的使用,使得数学语言能够很好 的表示一般性。无论哪个国家,哪个民族,从最简单的数字到复杂的组合符号、数学公式,尽管各国的发音不一样,但归根结底其表示的意义是相同的。

例如“△”符号意义表示一个三角形,汉语记作“三角形”,英语记作“triangle”。 显然,虽然“△”符号翻译成不同国家的语言的形式不一样,但是对“△”符号的理解都相同。

严密性

数学语言是一种特殊的科学语言。数学科学、数学思维的严密性、逻辑性的必然要求数学语言具有严密性。自然语言中句子常常存在多义性,而数学语言不允许语句不完整或有歧义等不严密的形式。数学语言中的一字之差则表示截然不同的两个概念。

例如在数学语言中表示一个方程存在一个解,首先要说明是哪个方程,其次是说明解是什么。但如果表述为“解x=1”或者“x+y=2的解为 1”等都是不 严密,让人模棱两可。“解为x=1”会让人疑惑具体是哪个方程的解是“”,而“x+y=2的解为 1”中,并没有说明是哪个变量的,到底是“y=1”还是“x=1”。

综上所述,数学语言作为数学理论的基本构成成分,具有高度的简练性、广泛的通用性、逻辑的严密性。其中“高度的简练性”决定了在数学语言中,不会存在多余的语言成分对于某一个概念表示具有高度的一致性。

基于句模的题意理解方法

一般地,对于一个自然语言处理系统,如果能够针对其研究的问题进行语义分析,便可以一定程度上提高系统的性能和处理的效果。对数学问题题意理解系统来说,语义分析也是一个必不可少的过程,不仅要分析数学知识概念的表示、 含义以及它们之间的逻辑关系,还要分析数学问题表述中句子的结构、类型以及实际意义。如:“直线 AB 与 CD 平行”和“直线 AB 平行 CD”两个句子的结构 是不同的,但它们的含义是等价的。从句子角度分析,动词(“平行”)所支配的两个语义成分(“AB、CD”)具有互换性。

以语义为中心的句义分析的主要思路是以某种语义分析理论为基础,对句义进行直接分析。典型的语义分析理论包括:格语法理论、概念层次理论、概念语法理论以及针对汉语语法研究提出的句模理论。

句模的表示

句模的表示就是以句模理论为基础,结合研究问题的实际,用形式化的方式将其表示出来,以便计算机处理。句模理论汲取了配价理论的思想,对动词进行 “价”的分类(一价、二价、三价),并在此基础上,结合动词的性质,提出了以动核结构为核心的句模分类方法。动核结构是一种典型的语义结构,由动核与其所联系的语义成分(施事、受事、补事等)所构成,如“施事-动核-受事”。虽然数学问题中的动词只是汉语动词的一部分,但与其支配的语义成分的组合方式多样化,构成的语义结构也就变得复杂。考虑到系统的稳定性、 可维护性以及可扩展性,将句模的表示结构与句子语义处理算法分离,形成独立形式的规则库,称为“句模库”。

句模表示的基本结构采用一种类似框架的 表示法,如图4-1 所 示,一个 SentenceTemplate 主要包括句模标识符(temp_id)、句模特征(semetic-key)、标注 特征集(ner-keys)、句模实例集(values)和句模语义块(sematic)构成的集合( semetics )。其中, 句模语义块又是一个复合结构,含有句模归一化函数

(TransformFun)和句模语义成分集(Data)。

图 4-1 句模表示的基本结构

  1. 句模标识符(temp_id)

    temp_id 是标识句模的唯一符号,在同一个文件中,不能重复出现;每个配置 文件都配有一个“服务域名(service)”,所以,不同文件中的相同句模标识符可以通过 service 区分。

  2. 句模特征(semetic-key)

    semetic-key 表示这个句模需要归一的句模特征,如“施事-动核-受事”。

  3. 标注特征集(ner-keys)

    ner-keys 是由标注特征集(ner-key)构成的集合。

  4. 句模实例集(values)

    values 是由表达含义等价的句模实例(value)构成的集合。句模实例是采用 正则表达式语言描述的,常用的高级计算机语言都包含正则表达式库,可以直接 利用它们处理正则语言的方法进行句模匹配。

  5. 句模语义模块集(sematics)

    sematics 是由句模语义模块(sematic)构成的集合,句模语义模块是一个复合 结构,主要存放该句模的归一化函数(TransformFun)和语义成分配对数据(data)。 表 5-12 显示了例 5-5 的句模语义块。

  6. 语义成分配对数据集(data)

    data 存放的是语义成分的配对数据,其中的语义成分数据采用了“名称/值对” 格式,所以称为语义成分配对数据。在进入归一化函数之前,先要获得标注以及 与之对应的实体数据,填充到对应的语义成分配对数据中。

  7. 归一化函数(TransformFun) 句模的归一化函数就是将含义等价但所属句模不同的句型进行归一化处理的方法。实际上,sematic 中存储的是归一化方法的名称,只有当该文本数据被该句模匹配上后,才会触发对应的归一化方法,将文本数据转化成知识,形成面向对象的知识表示形式。归一化函数定义为:

其中 sematic-key 为句模的特征,jsonObject 为从文本中提取的语义成分数据,是从 data 中转换而来的。语义同一化函数中,获得语义角色的数据对,根据名称 获取对应的值。图4-2 基于句模库的题意理解流程。

五、基于知识表示的数学题目求解

基于知识表示自动求解数学题的方法主要有两种:统计学习法和符号法。

统计学习法基本思路是用一个已经标注好的题库作为训练集来训练出一个模型,然后借助这个模型来处理未知题目。题目的标注信息包括解题所需的数学知识表示和题目的求解模板。在训练阶段,需要从标注数据中提取解题模板并针对这些模板进行建模。模型建好以后,解一道题目Q 需要两个步骤:第一步:寻找跟问题Q 相匹配的解题模板。第二步:把题目Q 中的数字映射到解题模板的数字变量(n1、n2 等)上面。这个求解方法可以考虑采用深度学习的技术。

符号法基于题目的知识表示进行逻辑推理而得到问题的解。符号法类似于一个专家系统,需要构建大量的数学推理规则。该方法针对单一例领域、比如几何证明可以获得很高的准确率,但是通用性差,而且总结数学解题规则工作量巨大。

六、数学自动解题系统的未来展望

关于高考机器人我们还有许多要探索的。最近我一直在思考人工智能+教育这个领域的产品。高考机器人借助大量题库、专家规则获得高分是非常有可能的。但这个领域我们还有许多问题没有解决,大量问题的解决还要依赖于自然语言处理技术的突破,有标注的题库积累和专家规则的逐步完善。将高考机器人商业化,做成一个数学自动评阅系统还有很长的路要走。


Copyright © 2023 All Rights Reserved 版权所有 北京物流信息联盟