Apple's Newton was such assistant, small system services, which they write, for example, "fax Bob", and he was thinking that you need to take the current document, find in the address book of Bob and send him the document by Fax. There the principle was simple, the details can be found in Newton Programmer's Reference v2.0, ch. 18, The Intelligent Assistant. (PDF can be found in Google.)
\r
If you do write, I suggest you look to this method of parsing CYK is a versatile bottom-up method of analysis, the novice with the selection of tokens in the string, and then folding them on the rules of grammar. The whole CYK you do not need, most likely, because your main problem is just the lack of grammar, but the basic principle, you can use something like this:
\r
— Parse a line into words
\r
— To classify every word. For example, if "PN" is a sequence number of "days" — day of the week, "M" month, "?" — neopredelennoe word. Your phrase will be "?-MON-DAYS-M-?-?-?".
\r
— Searching in line patterns (actually, this is just a phase and convolution it turns out). In this case, the pattern "PN-DN-M", he will have to be registered for parsing dates. In another row you will have, for example, "on Wednesday in the first movie" — "?-Days-?-MON-?". Pattern "days-?-PN" in the dates you will have (it is unlikely that such combination can indicate the date) so the date parser will only "DN" and "PN" or progeroid, or will give, for example, the parser of the channels.
\r
This approach is convenient because the grammar is not needed, and the perfect patterns you can define as data processing. I wrote this parser for addresses — well sorted, well-distinguishing, for example "St" in "St Patrick St". Although not with absolute precision, there across ambiguous patterns.