There are very complicated approaches to this problem, however you can probably go with a very simple one. E.g. define an adjective for every number:
0. beautiful
1. harmless
2. evil
3. colorful
4. weird
and so on. Now select sentences of your choice and put place holders into the sentences where adjectives belong.
"The {adj} cat sat on the {adj} dog and the {adj} cat was happy."
Your number is 123, so your sentence is
"The harmless cat sat on the evil dog and the colorful cat was happy."
A parser can easily take the sentence, split it up into words, find adjectives on the table above, and convert them back to numbers.
The -> ?
harmless -> 1
cat -> ?
sat -> ?
on -> ?
the -> ?
evil -> 2
:
at the end you have 123 again.
As soon people know that there is information hidden in the sentence, the algorithm is easily broken. You can make it harder to break if you add variation by defining multiple adjectives per number. Instead of
1. harmless
you can define
1. harmless/stupid/blue/fashionable
when you need to encode 1, randomly pick any of the words above. As these all map to the number 1, the reverse parser won't care which of the words is printed there, the result will always be one. This randomization will make it harder to reverse engineer the algorithm.