MathGraph: 一个用来自动求解高中数学习题的数学知识图谱

论文地址:

MathGraph:A Knowledge Graph for Automatically Solving Mathematical Exercises

贡献:
设计了一个数学知识图MathGraph,包括实体和关系
设计几个算法,将数学习题与MathGraph对齐,用对齐后的子图解决习题
设计一种方法在语义解析器semantic parser的帮助下识别习题中的实体与关系

特点:与其他数学知识图谱基于广泛语义语料库(维基百科)不同,它使用的语料库来自于四本国内高中数学习题集。

一些概念

实体

数学对象和实例:

数学对象是一种抽象的对象,它有定义,有一些属性,可以作为一些操作或推导的目标。(注意,数学对象可以用其他对象来定义。满足数学对象定义的具体对象称为实例
举例:
—定义:复数是一种形式为a + bi的数,其中a和b都是实数,i是虚数单位,满足 i 2 = − 1 i^2 =−1 i2=1

—属性示例:虚部是复数的一个属性。复数a + bi的虚部是b。

—推导示例:如果 ( a 1 + b 1 i ) (a_1 + b_1i) (a1+b1i) ( a 2 + b 2 i ) (a_2 + b_2i) (a2+b2i)共轭,则 a 1 = a 2 , b 1 + b 2 = 0 a_1 = a_2, b_1 + b_2 = 0 a1=a2,b1+b2=0

2 + 3i和(i + 1)(i−3)是复数的实例。

在MathGraph中,不同的数学对象应该被描述为不同的结构。因此,在MathGraph中,一个数学对象是用一个关键属性元组(p1, p2,···,pn)表示的,如图1
在这里插入图片描述
数学对象的关键属性是那些组合在一起可以形成并描述该对象实例的所有信息的属性。表1显示了一些数学对象的关键属性示例。
当且仅当一个数学对象的所有关键属性都相同时,两个实例是等价的。

运算:

一般来说,运算是一个动作或过程,给定一个或多个数学对象作为输入(称为运算数),产生一个新对象。简单的运算比如加法、减法、乘法、除法和求幂。此外,计算复数的实部、函数的导数、三角形的面积等其他运算过程也可视为运算。

约束:

约束是关于一个或多个实例的描述或条件,其中至少有一个是未知实例。
约束有四种类型:
描述性约束(例如复数x和y是共轭的)、等式约束(例如a + 2 = b)、不等式约束(例如 a 2 ≤ 5 a_2≤5 a25)和集合约束(例如a∈N)。

The Structure of MathGraph

MathGraph是一个有向图G = <V, E>,其中每个节点v∈V表示一个数学对象、一个运算或一个约束,每条边e∈E是两个节点之间的关系。
在这里插入图片描述

节点

对象节点

v o = ( t , P , C ) v_o = (t, P, C) vo=(t,P,C)表示一个数学对象,其中t表示该数学对象的实例模板;P = (P1, P2,····,Pn)是表示数学对象关键属性的元组;C是一组约束,根据定义或一些定理,这个数学对象必须满足这些约束。表2显示了一个将“triangle”作为对象节点的示例。我们可以看到三角形的性质和定理包含在约束集中。
在这里插入图片描述

运算节点

v p = ( X 1 , X 2 , ⋅ ⋅ ⋅ , X k , Y , f ) v_p = (X_1, X_2, · · · , X_k, Y , f) vp=(X1,X2,⋅⋅⋅,Xk,Y,f)表示一个k元操作/运算, X i 和 Y X_i和Y XiY是对象节点,分别表示第i个操作数 x i x_i xi的定义域和操作y的结果,f是实现运算的函数。
例如:【求一个复数的模长】是一元运算,其中 X 1 ∈ < C o m p l e x N u m b e r > a n d Y ∈ < R e a l N u m b e r > X_1∈<Complex Number> and \quad Y∈ <Real Number> X1∈<ComplexNumber>andY∈<RealNumber>,f 可以通过以下符号执行过程实现:
(1)求x1的实部;(2)求x1的虚部;(3)返回(1)平方和(2)平方的平方根,将其赋值给Y

约束节点

v c = ( d , X 1 , X 2 , ⋅ ⋅ ⋅ , X k , f ) v_c = (d, X_1, X_2, · · · , X_k, f) vc=(d,X1,X2,⋅⋅⋅,Xk,f)表示k个实例的描述性约束条件,其中d是约束的描述, X i X_i Xi是对象节点,表示每个实例运算数 x i x_i xi的定义域。f是一个函数,它把这个描述约束映射成几个等式约束,不等式约束和集合约束。
例如:有一个约束节点【 x 1 和 x 2 x_1和x_2 x1x2是共轭对】,其中 x 1 = x 2 ∈ < C o m p l e x N u m b e r > x_1=x_2∈<Complex Number> x1=x2∈<ComplexNumber>,f 可以通过以下过程实现:
(1)设 x 1 x_1 x1的实部为 a 1 a_1 a1;(2)设 x 2 x_2 x2的实部为 a 2 a_2 a2;(3)设 x 1 x_1 x1的虚部为 b 1 b_1 b1;(4)设 x 2 x_2 x2的虚部为 b 2 b_2 b2;(5)返回两个等式约束: a 1 = a 2 和 b 1 + b 2 = 0 a_1 = a_2和b_1 + b_2 = 0 a1=a2b1+b2=0

MathGraph有两种类型的边:推导边和流向边。

推导边

对于两个对象节点X和Y,有一条边 e d e r i v e = ( X , Y , f ) e_{derive} = (X, Y, f) ederive=(X,Y,f)揭示了X与Y之间的一般特殊情况。
例如:三角形和等腰三角形,If X derive → Y X\underrightarrow{\text{derive}}Y X deriveY,则在满足某些条件下实例X可以reassign成实例Y。这些条件被封装成函数 f : X → { T r u e , F a l s e } f:X\rightarrow\{True,False\} fX{TrueFalse}:如果关键属性或约束的值显示原实例的两个角或两条边的长度相等;否则返回False。

流向边

e f l o w = ( X , Y ) e_{flow} = (X, Y) eflow=(X,Y)表示习题求解过程中实例的流向,可能存在于从【对象节点】到【运算节点】,从【运算节点】到【对象节点】,从【对象节点】到【约束节点】。
【对象节点】和【运算节点】之间的流向边表示操作前传递参数的过程和操作后返回新实例的过程。
在这里插入图片描述
如图2所示:从对象节点Complex Number到运算节点addition有两条流向边,反过来有一条流向边,意味着addition运算以两个复数实例的实数作为输入,运算结束后返回一个新的复数实例。

用MathGraph解数学题

首先使用一个基于规则的语义解析器将数学习题文本(图3)映射成实例、运算和约束
在这里插入图片描述

语义解析器

实例的映射

语义解析器从文本中映射出一组实例 I = { ( x 1 , X 1 ) , ⋅ ⋅ ⋅ , ( x k , X k ) } I = \{(x_1, X_1), · · · , (x_k, X_k)\} I={(x1,X1),⋅⋅⋅,(xk,Xk)}
其中, x i x_i xi表示实例, X i X_i Xi表示对应的对象节点。
实例被分为已知实例和未知实例,取决于习题是否指明了它们的特定值或表达式。
对于由文本生成的未知实例,具有未知值的关键属性应为作为实例生成,因为它们可能在本练习的操作和约束中使用。
如上图所示:x和y都是对象节点:复数的未知实例。因此,我们需要生成 a x 、 b x 、 a y 和 b y a_x、b_x、a_y和b_y axbxayby作为对象节点:实数的四个未知实例,其中 a x 和 b x a_x和b_x axbx代表x的两个关键属性:实部和虚部, a y 和 b y a_y 和b_y ayby代表y的关键属性:实部和虚部。

运算的映射

语义解析器还可以从文本中解析出一组运算。其中的每一个运算 ( o , ( x 1 , X 1 ) , ⋅ ⋅ ⋅ ⋅ , ( x n , X n ) ) (o, (x_1, X_1),····,(x_n, X_n)) (o(x1,X1)⋅⋅⋅⋅(xn,Xn))都将其运算数对齐到MathGraph o中对应的运算节点,触发运算节点中的函数f,最后生成一个新的实例作为该运算的输出。

映射的约束。

对于习题中的每个描述性约束 ( c , ( x 1 , X 1 ) , ⋅ ⋅ ⋅ , ( x n , X n ) ) (c, (x_1, X_1),···,(x_n, X_n)) (c(x1,X1)⋅⋅⋅(xn,Xn)),语义解析器可以将其映射到对应的约束节点c,其中一些涉及实例,触发节点中的函数,并将其转换为若干等式约束/不等式约束/集合约束。
另外请注意,在生成未知实例时,还可能根据对应的对象节点的约束集生成一些约束。在此之后,我们将习题中的所有约束收集为一个集合,以供进一步使用。

求解未知实例和约束条件

在解析习题中的所有实例和运算之后,习题的答案已经作为实例生成了(从文本中或通过运算)。如果这个实例是某个已知实例,我们可以直接返回这个实例的值作为答案;否则,我们必须处理这些未知实例,并解决习题中的约束条件,以更新它们的值,最终检索出习题的答案。

求解未知实例

首先,我们需要检查每个未知实例是否可以通过推导边重新分配给MathGraph中更特定的对象节点。对于一个分配给对象节点 v o v_o vo的未知实例 i,我们要检查 v o v_o vo的每一条输出的推导边,如果边e的函数返回true,那么我们将i重新分配给e所指向的对象节点,并将该节点中的所有约束添加到约束集中。

例如:现在有一个未知的实例△ABC,在约束集中有一个约束条件∠B =∠C,那么从三角形到等腰三角形的推导边应返回true。因此实例△ABC应该重新分配给等腰三角形,并在约束集中添加一个新的约束AB = AC。

组织未知实例

注意,对于α和β两个未知的实例,它们之间可能存在依赖关系,比如由于α是运算节点的输入之一,β是输出,或者α是β的关键属性之一。
因此使用一个图 G I = < V I , E I > G_I = <V_I, E_I> GI=<VI,EI>来描述所有未知实例之间的依赖关系。
S I = { v ∣ v ∈ V I ∧ ∀ u ∈ V I , ( u , v ) / ∈ E I } S_I = \{v|v∈VI∧∀u∈V_I, (u, v) /∈E_I\} SI={vvVIuVI(u,v)/EI}表示 G I G_I GI中包含所有无入边节点(叶子节点)的集合。很明显,如果 S I S_I SI中的所有节点都可以转化为已知的实例,那么就可以推导出答案所需实例的值了,如下图4
在这里插入图片描述
例如,图4显示了图3中习题的 G I G_I GI,x和y是否已知——取决于它们各自的关键属性,z = x+y取决于它的两个运算数(= +)。在这种情况下, S I = a x , b x , a y , b y S_I = {a_x, b_x, a_y, b_y} SI=ax,bx,ay,by,与答案对应的实例是z。

组织和求解约束

在最后一步之后,我们现在有了一组约束条件。首先,我们需要确保每个约束中的每个变量都属于 S I S_I SI。如果不是,则需要使用其关键属性作为变量来重写该约束。
例如:对于图3中的练习,约束的集合为 { x + y = 6 , x y = 10 , a x = a y , b x + b y = 0 } \{x + y = 6, x y = 1 0, a_x = a_y, b_x + b_y = 0\} {x+y=6,xy=10,ax=ay,bx+by=0}。又因为x, y不属于 S I S_I SI,前两个约束条件将改写为 a x + b x i + a y + b y i = 6 a_x+b_xi+a_y+b_yi = 6 ax+bxi+ay+byi=6 ( a x + b x i ) ( a y + b y i ) = 10 (a_x+b_xi)(a_y+b_yi) = 10 (ax+bxi)(ay+byi)=10

到目前为止的约束集包含并形式化了习题中的所有约束。因此,我们可以应用符号执行库或近似算法去自动求解这些方程或不等式。

最后,我们将得到 S I S_I SI中每个实例的值(或值的范围)。

更新未知实例和检索答案

在求解出习题中的所有约束之后,我们需要更新 G I G_I GI中其余实例的值。既然我们现在知道 S I S_I SI中实例的值,我们就可以按照拓扑排序的方法顺序遍历 G I G_I GI中的每个实例,并依次更新它们的值。最后,返回与答案对应的实例的值。

实验部分

我们收集了四本中国高中数学习题的真实数据集,即复数、三角形、二次曲线和立体。习题以纯文本形式存储,数学表达式以LaTeX格式存储。

复数:这个数据集包含了1526个与复数计算和推导相关的数学习题,包括基本代数运算、复数的求模长和求共轭复数、复数平面、极坐标表示等。

三角形:这个数据集包含782个与求解三角形相关的数学习题(使用正弦和余弦定律),包括寻找缺失的边和角,周长,面积,外接圆的半径等。

二次曲线:这个数据集包含1196个与二次曲线相关的习题,包括椭圆、双曲线和抛物线的计算和推导。

立体:此数据集包含653个与立体几何相关的练习,涉及三维欧几里得空间中的各种几何,包括金字塔、棱镜等。

四个数据集中的习题根据难度(根据众多高中生的标准进行分类)分为三个级别(即简单、中等和困难),表3显示了数据集中不同难度级别的练习数量:
在这里插入图片描述
在此实验中,使用Neo4j作为图形数据库平台来构建和索引MathGraph。对于数据集,我们手动构建的知识图谱,仅涉及这些练习中可能存在的实例、运算和约束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/55263.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有趣数学1的证明

之前说了利用以10为底数巧算首位数字&#xff0c;答案是得到了&#xff0c;但是需要证明这种方法确实是正确的&#xff0c;其实证明非常简单。 证明&#xff1a;令x^y t 两边同时取以x为底&#xff0c;y 得到 y * . 由于数字都是以10进制展示的&#xff0c;我们设t的…

高数证明题技巧总结

中值定理 1.要证明一个不等式&#xff0c;有常数a和b&#xff0c;且出现了g(b)-g(a)和b-a&#xff0c;则一般使用拉格朗日中值定理&#xff0c;将g(b)-g(a)化为g(ξ)(b-a)&#xff0c;证明g(ξ)大于或小于原式中(b-a)的系数 例如&#xff0c;证明&#xff1a;当e<a<b&l…

一道初等平面几何竞赛题的暴力解法

问题 一道初中数学竞赛&#xff0c;平面几何题计算&#xff1a; 这里改成了证明题&#xff0c;反正思路是一样的。 暴力解法 中学的题就应该有中学的解法。但是&#xff0c;看习惯了高等数学的内容之后&#xff0c;更习惯暴力解法。暴力破解的方法是怎样的&#xff1f; …

证明题(考研)

1.kruskal 设图共有k个顶点 当k2时&#xff0c;图G只有一条边&#xff0c;显然最短边为此边&#xff0c;图G的最小生成树为其自身。 设kn时&#xff0c;成立。 对于有n1个顶点的图G&#xff0c;接最短边e后&#xff0c;剩余n个顶点待连接&#xff0c;由假设&#xff0c;成立&am…

离散数学中 集合、关系、群 的证明方法(英文证明附例题)

文章目录 集合子集关系句式 两个集合相等句式例子 划分&#xff08;partition&#xff09;句式例子 关系关系R的自反性&#xff08;reflexive&#xff09;反自反&#xff08;irreflexive&#xff09;句式 关系R的对称性&#xff08;symmetric&#xff09;反对称&#xff08;ant…

中值定理证明题解题思路

对于只有一个未知量的&#xff0c;通常是把未知量替换为x。令等式一边为0&#xff0c;然后把另一边当作F(x)&#xff0c;然后找原函数。在写解题过程时&#xff0c;不写如何求得F(x)的&#xff0c;直接设F(x)&#xff0c;然后证明F(x)符合某一种中值定理。 例1&#xff1a;f(x)…

回忆当年高考的一道数学证明题

恰逢高考季&#xff0c;昨夜又做梦&#xff0c;与高中相关&#xff0c;就索性来写一篇&#xff0c;题目自定&#xff0c;立意自选。 每年高考后&#xff0c;我都会拿湖北高考的数学试卷做一下&#xff0c;这也许是特殊的爱好吧。知识点和公式基本没有忘记&#xff0c;熟练度肯定…

【期权系列】顶部和底部信号:期权看跌看涨比(PCR)

【期权系列】顶部和底部信号&#xff1a;期权看跌看涨比&#xff08;PCR&#xff09; 本篇文章是基于研究报告的复现作品&#xff0c;旨在记录个人的学习过程和复现过程中的一些思路。 感谢华福证券研究员前辈的宝贵思路。 一、期权看跌看涨比&#xff08;PCR: PutCallRatio&a…

“风口猪”指标-寻找大牛股的波段机会

1. “风口猪”指标简介和用法&#xff1a; 为了抓住大牛股的波段行情&#xff0c;买在行情启动阶段&#xff0c;先找到风口&#xff0c;就可以看到猪飞起来了&#xff01; 4根均线&#xff1a;MA5&#xff0c;MA10是短线&#xff0c;MA60和MA250是长线、 主图指标上有 买入&…

c 语言编写的一元二次方程的根,C#程式求一元二次方程根

C#程式求一元二次方程根以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C#程式求一元二次方程根, c# 由使用者输入a,b,c求一元二次方程根的程式 public static void Main() {double a, b, c; Console.Write(&quo…

怎么用计算机算一元三次方程,一元三次方程计算器求解(附使用方法)

一元三次方程计算器是一款十分好用的方程计算软件&#xff0c;该软件采用牛顿迭代法计算&#xff0c;用户输入参数A和B就可得出X的值了&#xff0c;还可计算复数根&#xff0c;软件操作简单&#xff0c;十分好用&#xff0c;需要的朋友赶紧来本站下载吧&#xff01; 一元三次方…

一元线性回归方程C语言实现

之前没写对&#xff0c;尴尬&#xff0c;于是重新研究了一遍&#xff0c;啊&#xff0c;确实没写对大佬帮改了一下 首先来看看如何求线性回归方程公式http://www.gaosan.com/gaokao/263926.html 第一&#xff1a;用所给样本求出两个相关变量的(算术&#xff09;平均值 第二&…

接口测试用例生成工具介绍及应用

背景 目前&#xff0c;接口测试是开展项目测试实施过程中非常重要的环节&#xff0c;对于新增接口和修改接口更是需要做到应测必测&#xff0c;但是在实施过程中普遍存在一些问题&#xff0c;经分析总结如下&#xff1a; 1.耗时长&#xff1a; 接口测试整体流程较长&#xff…

CnOpenData·A股上市公司关联交易数据

一、数据简介 据《上市公司信息披露管理办法》&#xff0c;上市公司作为信息披露义务人&#xff0c;应真实、准确、及时、完整地向市场公开依法及自愿披露的信息。这些公开披露的信息包含但不仅限于公司基本情况、主要会计数据和财务指标、股东持股情况、高管薪酬情况等。上市公…

利用tushare实现选股

ID:399899 量化交易中&#xff0c;首先要弄好的就是选股。然后在才是买卖策略的制定。 不同类型的策略&#xff0c;选股思路也不相同。俗话说得好&#xff0c;不管黑猫白猫&#xff0c;抓到老鼠的就是好猫。一个好的选股策略&#xff0c;往往在量化中是起较为关键的作用的。 …

腾讯微信附近推广告推广,店铺周围黄金3-5公里推广,微信朋友圈广告

继朋友圈广告后&#xff0c;微信4年以来终于推出的第二项广告服务“附近推”——微信终究还是对朋友圈资源下手了。 背靠微信的10亿日活&#xff0c;朋友圈一直以来都是一个巨大广告流量入口&#xff0c;这也是朋友圈广告发展至今依然处于红利期的原因之一。 一&#xff1a;微…

腾讯广点通广告投放-转化归因API回传接口对接踩坑指南

对于腾讯广点通广告平台的文档&#xff0c;实在是忍不住要吐槽一番。本来接收到回传接口文档&#xff0c;看到给的PDF文档没有备注说明&#xff0c;但是看到回传方式&#xff0c;挺简单的。以为一下就能搞定了&#xff0c;但是对接下来才发现&#xff0c;各个字段根本不知道什么…

在 GitHub 上“搞事”,Meta 开源 ImageBind 新模型,超越 GPT-4,对齐文本、音频等 6 种模态!...

整理 | 屠敏 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 据外媒报道&#xff0c;上周四&#xff0c;Google、微软、OpenAI 几家公司的 CEO 受邀去白宫&#xff0c;共论关于人工智能发展的一些重要问题。然而&#xff0c;让人有些想不通的是&#xff0c;深耕 A…

基于ChatGPT聊天的零样本信息提取7.25

基于ChatGPT聊天的零样本信息提取 摘要介绍ChatIE用于零样本IE的多轮 QA 实验总结 摘要 零样本信息提取&#xff08;IE&#xff09;旨在从未注释的文本中构建IE系统。由于很少涉及人类干预&#xff0c;因此具有挑战性。 零样本IE减少了数据标记所需的时间和工作量。最近对大型…

Android开发权威指南(第2版)电子书pdf下载

Android开发权威指南(第2版)下载链接: https://pan.baidu.com/s/1pftvlZCCq-OzI9o_BAOBjA 提取码获取方式&#xff1a;关注下面微信公众号&#xff0c;回复关键字: 1125