Can I categorise the user input which I get as free text?
Have you tried NLTK, what you are looking for is in Chapter 6 of the book. Basically what you need to do is:


Tokenize the user input.
Extract vector set from the tokenized words.
Train your model with some given texts, and same vector sets.


And you can use your model to categorize the document.

One other suggestion, instead of extracting vector sets you can use every word in the input
to be evaluated in to some category using a training set of large corpus, which you are sure
it contains all the words.
And then you multiply probability of each word being on a category to decide where the document belongs.