2011-09-22 62 views
2

我有興趣開發類似RTM智能添加功能的解決方案。如何記住牛奶的字符串匹配工作?

對於那些不知道記住牛奶這是它的工作原理:添加任務是通過一個輸入框來完成的,該輸入框接受字符串並分析不同的參數,如任務名稱,截止日期,優先級,標籤等。參數通常以特殊符號(^,#,&等)開頭。 RTM也接受像「星期三網球」這樣的變體。

我對你的基本問題是你將如何設計一個能夠智能地辨別字符串不同部分的系統。我需要研究自然語言處理嗎?

到目前爲止,我正在使用一個簡單的正則表達式來查找特殊的前面的符號(^,#,&等),然後解析出字符串的不同部分。越來越多的無序參數越來越困難。也許這源於我缺乏正則表達式的專業知識。

當試圖將不同格式的截止日期('2008年5月27日16:00','2008年5月27日','6月16日16:00','6月16日12:00','今天上午12:00'等)到日期時間對象中。我目前使用Python和正則表達式。我的方法是基本上運行一個可能的日期和時間組合的長列表,並將匹配表達式與date.strptime轉換。我發現這種方法很難保持;很多誤報,剩餘字符串等。你可以看看我的代碼:https://gist.github.com/1233786這不太好,你已經被警告過了。

我很感激任何暗示正確的方向來解決這個問題。編寫一個dateparser非常有趣,但是在我搜索數百個不同用例的所有錯誤之前,我想我會檢查是否有更優雅的設計模式。

P.S:我喜歡一些代碼樣本下沉我的牙齒,最好的Python :)

+2

如果您對這種情境分析感興趣,我一定會檢查一下Python自然語言工具包http://www.nltk.org/ - 它的入口門檻低得驚人,並且有一些很棒的教程和書籍可以幫助你入門(例如http://www.nltk.org/book)。 – mwan

+0

看起來像一個夢幻般的資源,非常感謝你mwan! –

回答

2

我以爲他們有解析輸入sentece一些語法。那些語法可以表達各種NLP結構,例如實體提取。對於這些語法,可以使用GATE JAPE(http://gate.ac.uk/sale/tao/splitch8.html#chap:jape)或Gexp(http://code.google.com/p/graph-expression/) )