1. A method of generating a response to a text-based natural language message, comprising: identifying a sentence in the text-based natural language message; identifying an input clause in the sentence; parsing the input clause, thereby defining a relationship between words in the input clause, assigning a semantic tag to the parsed input clause; comparing the input clause to a previously received clause, the previously received clause being correlated with a previously generated response clause; and generating an output response message derived from the previously generated response clause.