【问题标题】:Calling functions from plain text descriptions从纯文本描述调用函数
【发布时间】:2011-03-27 08:34:02
【问题描述】:

我有一个应用程序,它在后台有常用的数学函数:

  • 添加(x,y)
  • 乘法(x, y)
  • 正方形(x)

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

  • '2*3'
  • '2 次 3'
  • '乘以 2 和 3'
  • '取2和3的乘积'

并得到一个数学答案

问题是,我应该如何将文本描述映射到函数?我猜我需要

  • 标记文本
  • 识别关键标记(函数名、参数)
  • 尝试将令牌组合映射到函数签名

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

感谢所有想法,以及实施建议 [我正在使用 Python/AppEngine;我知道 NLTK 和 Whoosh]

[PS 我知道谷歌已经这样做了,至少对于列表中的前两个查询。我猜他们也有统计数据,有大量的搜索数据。我没有大量可用数据,因此需要另一种方法]。

【问题讨论】:

  • 一些问题——一句话写多少个操作是合法的? (例如 - 这是否合法 - “取 2 和 3 的乘积并将其添加到 7 和 6 的乘积的平方”?)如果不止一个 - 嵌套操作的最大深度是多少?从这些问题的答案中可以清楚地看出 - 您是否需要完整的语法树解析...
  • 对于我上面的复合句,你需要生成这样的syntax tree

标签: artificial-intelligence machine-learning


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我会推荐一些工具来为文本提供语法/模式,例如 SimpleParse for python http://www.ibm.com/developerworks/linux/library/l-simple.html。作为 java 程序员,我更喜欢 GATE 或图形表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 2012-05-12
      • 2013-04-17
      • 2013-12-27
      • 1970-01-01
      相关资源
      最近更新 更多