1

我希望能够检测一个字符串是否是数学的。

在数学上评估为真的字符串将是"2", "42000", "-10", "-55.22", "forty-two", "fifty six", "negative ninety nine", 和"negative one point seven".

而且由于它不是数字和数学的东西,所以像"negative two times seven", or "two plus two", or "3 plus two", or "two - 1", or这样复杂的东西"2 ^ 7"会通过。

基本上拼出数字,拼出所有格数(第一,十三,千)和单词"plus",,,,,,,,,,,,,,,,,,,,,,和"negative",,"positive""minus""subtracted""from""times""multiplied""by" "divided""over""point""to""the""power""of""and""raised"

如果函数与这些示例之一不同,则该函数将返回 false。

使用机器学习/NLP 来做到这一点是否合适?有没有比 NLP / 机器学习更好的方法来做到这一点?

是否有任何现有的脚本或功能可以做到这一点?

如果没有,我该如何使用NLPToolsPHP NLP 工具来做到这一点?

4

1 回答 1

3

对于这个问题,解析是比机器学习更好的工具。你所描述的是一个相对简单的算术语法,有一些数字别名,以及这些别名的一些语法。与机器学习和优化相比,您可以直接编码的分词器和一些基本的句法分析将产生更好更可靠的结果,而计算工作量要少得多。

解析就足够的一个原因是,您不必像处理人名那样经常担心拼写错误。如果您想对此有所了解,请使用基于 Jaro-Winkler 的东西进行词法分析,然后对您认为是标记的内容进行句法分析。这仍然比机器学习便宜得多,也不那么复杂。

我对 PHP 了解不多,但 Google 了解,而且似乎有一些库可以帮助您。可以帮助您入门的搜索词是:token;词法分析;语法; 句法; LR解析器;yacc;野牛。

于 2013-06-26T02:52:07.707 回答