Early linguists like Noam Chomsky have tried to understand natural language on a pattern base. The idea was to parse a sentence in the same way as a compiler would parse computer code. The input stream is converted into an abstract syntax tree and this helps to tag basic patterns like subject, verb and object. The problem with natural language is, that it is more complicated then only the pattern itself. The hidden complexity is described in the literature as grounding. Grounding means, to map a sentence into actions.
The example sentence “I want an apple” means by itself nothing. Sure, it is possible to search in the string for a substring but what next? Let us assume that this sentence was used in a textadventure. Here the pattern has a meaning. The word “apple” is grounded in sourcecode and is referencing to an item which can be taken by the player, and if the player has the apple he can eat it. The question is not, how to parse natural language, the question is how does the environment around this language look like.
Sometimes the textpattern is more complex and contains time attributes. The new sentence could be “I want an apple, now”. But what is the meaning of “now”? Right, it is not given by the text. “now” doesn't describe the meaning itself, it is only a pointer to a higher layer. At foremost, “now” is referencing to a dictionary entry which is providing synonyms. And these synonyms are referencing to the grounded model. That means, to the concept of time which is implemented in the textadventure. If in the game a clock variable is given, “now” is linked to that variable. What I want to explain is, that natural language is similar to the tip of an iceberg.