Are you interested in grasping the commonality between “fail” and “failure”, ignoring that they are different parts of speech? Or do you want a machine to discover they are equivalent?
For the first:
If the script your using does not support synonym (or functional equivalency) lists, then you can fix that by pre-processing the input: Take all incoming text and pass it through a lookup table that replaces such words with a single representative. Then pass the modified text into the chatbot.
For the second:
I think that is a $64,000 question. From what I have read about WordNet, it would contain such an equivalency in some “frame” but I am not sure how you would automatically screen all frames for all equivalencies. Nor would it tell you about mis-spellings.
Another option might be to play with online dictionaries like PyDictionary for Python. I tried both “fail” and “failure”, the latter’s meaning contains the former, so you could write a program to bootstrap from one word (like “failure”) and examine the dictionary meaning result, looking for similar spellings.