There are about 1000 words in total, packed into a big string:
To compress things a little, words are separated by numbers which show how many letters they inherit from the previous word. Thus
ace
(ace)s
(ac)id
(acid)ly
...
It zips up nicely. I tried various other ideas for further compression but none were worth the lines needed for decoding.
You might also notice that no words have duplicate letters. This simplified the algorithm for listing the shorter words.