How to "Reverse-Stem" or find-very-similar words to a term

Hi all:

not sure if what I want is extremely simple or fairly complicated.

I have a term containing one or several words, say “buy house austin”.

What I want to do, is to get a list of semantically very-similar terms to it.

Think a bit like: the opposite of stemming (not sure if there is a word for that, please tell), where multiple possible terms with the same meaning are generated.

Think plural/singular, an extra word, declinations etc

So for “buy house austin” an example output could look like this:

{
buy houses austin,
buying house austin,
buy austin houses,
buy a house austin,
buy house in austin,
which house to buy austin
}

I realize that information-theory wise stemming cannot be “reversed” properly, I’m looking for something that comes close, basically.

Is there an endpoint for that?