You might like to search cpan for Lingua (like
Lingua::En::Inflect)and WordNet (like
WordNet::SenseRelate::Tools or
WordNet::Similarity).
The field itself is pretty large, it is natural language processing (NLP), or computational linguistics, and you are talking about "sentence generation". But it sounds like you don't really want to get that deeply into it. If you are careful to limit what can be selected into each field it may sound realistic.
Incidentally you might be interested in
ALICE.