Here's another way to get rhyming words:
WolframAlpha["word", {{"Rhyme:WordData", 1}, "ComputableData"}]
You can get lexically similar words with:
WolframAlpha["word", {{"LexicallyCloseWords:WordData", 1},
"ComputableData"}]
And, for puns, may want a supply of homophones:
WolframAlpha["where", {{"Homophones:WordData", 1}, "ComputableData"}]
With some words, to get this to work, you need to specify that the input is a word:
WolframAlpha["see", {{"Homophones:WordData", 1}, "ComputableData"},
InputAssumptions -> {"*C.see-_*Word-"}]