从公式创建模板

template-from-equation的Python项目详细描述


公式模板

此库提供从关联公式(例如2+5->;n0+n1)创建模板(生成模板)的功能。

术语“等式模板”首先在Kushman等人(2014)中引入。它代表了方程组的抽象。它的概念随后被用于许多后续工作中。我们发现了一个工具来创建这样的模板,这个工具很有用,但并不公开。所以我们试着写了一篇文章,并在自然语言处理的自动数学解题领域与同龄人分享。

生成的模板将包含“n0,n1,n2,…”(数字)和“x0,x1,x2,…”(变量)。 例如:

  • 2+5->;n0+n1
  • 2+5*60/x=y->;n0+n1*n2/x0=x1

在某些情况下,我们希望保持方程中的一些常数不变。例如,要获取问题“2小时7分钟是多少分钟?”的公式“2+7*60=x”的模板。,我们想保持恒定的“60”不变。在这种情况下,我们的函数允许传递一个数字槽,该槽只包含我们要替换模板的数字。(参见下面的示例用法)。

为了根据公式制作模板,我们使用ast树。当遍历ast树时,它返回“n0,n1,n2,…”作为数字的叶节点,返回“x0,x1,x2”作为变量。然后,一个“2+5*x”的方程可以转化为它的模板“n0+n1*x0”。(使用AST树可以帮助我们避免正则表达式中一些微妙的字符串匹配困难。)

安装

pip install template_from_equation

用法

>>>fromtemplate_from_equationimportEquation>>>eq1=Equation("2+5")>>>eq12+5>>>eq1.get_template()'n0 + n1'>>>eq2=Equation("2+7*60 = x")>>>eq22+7*60=x>>>eq2.get_template()'n0 + n1 * n2 = x0'>>>eq2.get_template(num_slot=[2,7])'n0 + n1 * 60 = x0'>>>eq3=Equation("2*x+5*12 = y")>>>eq3.get_template()'n0 * x0 + n1 * n2 = x1'>>>eq3.get_template(num_slot=[2,5])'n0 * x0 + n1 * 12 = x1'

待办事项

  • []选择共享重复号码的代币,即2+5*2->;n0+n1*n0
  • []解析运算符“^”

参考文献

许可证

这个项目是根据麻省理工学院的许可条款授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
相对于框架java窗口的鼠标位置错误   Java 8流peek api   java将数据附加到文件中   java使用ExoPlayer 2.8播放播放列表中的特定文件   JavaSpring国际化:如何动态设置语言环境值   java如何在mysql中实现两个表之间的两个关联   java在gradle可执行jar文件中包含运行时参数   surefire插件中的java maven多套测试套件   java试图理解堆分析以确定内存泄漏或所需的大量内存   java识别字符串有数字   数组如何解决错误“java.lang.ArrayIndexOutOfBoundsException:5”   java Swt文件对话框选择的文件太多?   java此登录代码易受SQL注入攻击吗?   Java[3]中的文件<identifier>预期编译错误   java如何在spring webflux中发送列表   jar中未找到java文件异常   如何在java中合并2D数组?   java如何评测本机JNI库