将自然语言转换为数学方程

Ben*_*ell 5 java math nlp

我有一个使用 Java 运行的家庭自动化系统,我想添加简单的数学功能,例如加法、减法、乘法、除法、求根和幂。

在系统当前状态下,它可以将短语转换为标签,如下例所示:

例子:

Phrase: "what is one hundred twenty two to the power of seven"
Tagged: {QUESTION/math} {NUMBER/122} {MATH/pwr} {NUMBER/7}
Run Code Online (Sandbox Code Playgroud)

例子:

Phrase: "twenty seven plus pi 3 squared"
Tagged: {NUMBER/27} {MATH/add} {NUMBER/3.14159} {MATH/multiply} {MATH/pwr} {NUMBER/2}
Run Code Online (Sandbox Code Playgroud)

这个例子可以很容易地转换成这样的:

27 + 3.14159 * 3^2
Run Code Online (Sandbox Code Playgroud)

每个标签都是一个可以查询其值的对象。

编辑:具体问题:

所以现在我需要一种方法来读取该组标签作为方程,并返回数值结果。作为最后的手段,我可​​以使用谷歌或 Wolfram alpha,但这会更慢,而且我正在努力保持自动化系统完全独立。

如果您想查看完整的源代码,可以在 github 中找到。 请注意,我还没有提交最后的一些更改,因此我给出的示例中的一些与数学相关的内容将不起作用。

Ben*_*ell 3

经过更多的谷歌搜索(我一开始不知道我正在做的事情的名称),我发现有人已经做了类似的事情:

http://www.objecthunter.net/exp4j/

编辑:完成: https: //github.com/Sprakle/HomeAutomation/blob/master/src/net/sprakle/homeAutomation/interpretation/module/modules/math/Math.java