如何记住牛奶的字符串匹配工作?

问题描述:

我有兴趣开发类似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! –

我以为他们有解析输入sentece一些语法。那些语法可以表达各种NLP结构,例如实体提取。对于这些语法,可以使用GATE JAPE(http://gate.ac.uk/sale/tao/splitch8.html#chap:jape)或Gexp(http://code.google.com/p/graph-expression/) )