从公式创建模板

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在比较数据后得到错误的结果   java如何在使用JSP创建的网站中创建父子关系和处理?   java配置单元UDF:无法执行求值方法   java GAE项目Intellij远程调试在关闭时不释放端口   java按钮上的放大和缩小功能点击JfreeChart折线图?   java Selenium Chrome Web驱动程序SessionNotCreatedException   java由ADFactoryBuilder生成的线程工厂是线程安全的吗?   java将字符串[]传递给另一个类Android(使用intent)   我为什么要嘲笑java?   JavaLiferay门户不将对象从流程阶段发送到jsp   java我想在单击每个树节点时将要添加的信息放入jpanel jscrollpane中   在Java中模拟数组引用(即对引用的引用)的按引用传递   Jackson将JSON属性反序列化为不同的Java对象   java使用JSP/servlet在网页上显示Excel工作表?   仿射变换Java:使用仿射变换时游戏速度减慢   Servlet JBoss AS 7的java EJB注入   在Oracle数据库中使用Java的plsql   java管理Maven项目中的库依赖项   JavaEclipseLink(JPA)异常:复合主键@JoinColumn