2011-03-27 105 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來獲取自然語言短語的語法樹。一旦你有了這個,你可以將分析樹映射到一個數學表達式,然後評估表達式。我不認爲這是一個解決的問題。我會從幾個模板開始,比如前兩個模板和實驗。可能的描述領域越大,任務就越困難。