2011-03-27 109 views
1

我有具有在幕后共同数学功能的应用程序:调用函数

  • 加(X,Y)
  • 乘(X,Y)
  • 平方(x)的

该界面是一个简单的谷歌风格的文本字段。我希望用户能够进入一个纯文本描述 -

  • '2 * 3'
  • '2次3'
  • '乘以2和3'
  • “取的产品2和3'

,并得到一个答案的数学答案

的问题是,我应该怎么映射文字描述的功能呢?我猜我需要

  • tokenise文本
  • 识别关键标记(函数名称,参数)
  • 尝试和地图标记组合函数签名

不过我猜这在机器学习领域已经是一个“解决的问题”。我应该使用自然语言处理吗?纯文本搜索?还有别的吗?

感谢所有想法,加上实施建议[我正在使用Python/AppEngine;我知道NLTK和飞快]

[PS我明白谷歌已经这样做了,至少对列表上的前两个查询。我猜他们也会统计数据,有很多搜索数据。我没有大量的可用数据,因此需要一种替代方法]。

+0

一些问题 - 用一个句子写多少个操作? (例如 - 这是合法的要求 - “取2和3的乘积并将其添加到7和6乘积的平方”?)如果不止一个 - 嵌套操作的最大深度是多少?从这些问题的答案中可以清楚地看到 - 你是否需要全面的语法树解析... – 2011-03-27 09:36:15

+0

对于我上面的复合句子,你需要生成这样的[语法树](http://img819.imageshack。我们/ img819/6347/syntaxtree.png) – 2011-03-27 10:17:31

回答

1

将文本标记为文字后,需要使用parsing来获取自然语言短语的语法树。一旦你有了这个,你可以将分析树映射到一个数学表达式,然后评估表达式。我不认为这是一个解决的问题。我会从几个模板开始,比如前两个模板和实验。可能的描述领域越大,任务就越困难。