在PHP中,如何使用机器学习或其他技术来区分什么是数学用户输入,什么不是数学用户输入?
所谓数学用户输入,我指的是可以计算/求解的数学语句。
因此,我构建了一个可以在PHP中处理基本算术的计算器。在传递用户输入之前,我要检查它是否是可以计算的数学语句。如果不是,则使用echo "can not be computed";
所以在伪码/半码中:
function isComputable($input){
/* code I need help with here */
}
$userInput = $_GET['input'];
if(isComputable($userInput){
compute($userInput);
}
else{
echo "can not be computed";
}
用PHP做这件事最好的方法是什么?
发布于 2013-07-06 09:15:04
Shunting-yard algorithm是一个很好的解决这个问题的方案。您可以在PHP online中找到许多分流码数算法的实现。它只需要一个堆栈和一个队列数据结构就可以检查一个表达式是否正确。
发布于 2013-07-09 23:47:48
据我所知,操作员已经建好了计算器。他不想计算表达式,他只想知道给定的字符串是否是数学表达式。为什么不尝试一下机器学习方法呢?您可以使用一些可接受的数学表达式的示例来训练分类器。
您可以使用像Wit这样的在线应用程序接口来尝试这种方法。
发布于 2013-07-06 08:33:58
做一个你所描述的类型的PHP (或者JavaScript )“计算器”的最快的方法是
+
、-
、*
和/
,然后eval
函数。你要么得到一个结果,要么得到一个问题。当然,使用eval
是很危险的,大多数人都不会使用它(参见文档中的WARNING!)在这种情况下,人们可能会提出这样的论点:“至少如果我确保那里只有数字、括号和运算符,那么我猜eval将是安全的。”
然而,明智的做法是甚至不要冒险。您应该定义一些算术表达式的语法,然后使用解析器来验证字符串并进行计算。这不是一段微不足道的代码,而是someone has already done this on Stack Overflow --所以在计算器中采用该代码。
使用自己的计算器(除了不必向朋友解释您使用了eval
:)的好处是,您可以添加自己的运算符,甚至可以使用任意精度的数学实现一些很好的技巧。这不是只需要五分钟的事情,但它是一个有用的练习。
https://stackoverflow.com/questions/17498318
复制相似问题