【问题标题】:Use NLP / Machine Learning to teach a machine how to detect if a string is mathematical?使用 NLP / 机器学习来教机器如何检测字符串是否是数学的?
【发布时间】:2013-06-25 21:35:40
【问题描述】:

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

数学运算结果为 true 的字符串是 "2""42000""-10""-55.22""forty-two""fifty six""negative ninety nine""negative one point seven"

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

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

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

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

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

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

【问题讨论】:

  • 我认为这会相当困难,但这可能适用:stackoverflow.com/questions/2010663/lucene-with-php
  • 另外,您可能也对此感兴趣:github.com/srgoogleguy/Mphp
  • @RobW 这很有趣。这是一个不错的计算器。但是,据我所知,它无法处理像“二加二”或“2 + 二”这样的输入。
  • 它是一个运算符优先级解析器。接受并扩展它是相当容易的。这只是令牌的翻译。
  • @RobW 你能写一个答案来解释你会怎么做/怎么做吗?我对如何做到这一点感到困惑。然后我会选择它作为正确答案(如果有效)。

标签: php math numbers machine-learning nlp


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-08-11
    • 2020-12-12
    • 2021-08-23
    • 2017-01-14
    • 2017-06-07
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 2011-06-04
    相关资源
    最近更新 更多