improve markov data model
improve markov data model

I decided to see what would happen if instead of storing the model as a
mapping of Dict<Array<String>, Array<Array<String>> I just stored it as
Dict<String, Array<String>>, where I stored each n-gram as a space
separated string. The results of this change are:

- Memory usage is under half of the original
- Startup time has been cut to about half of the original
- The model file on disk takes up less space (~1MB for my large test
  file)

As it turns out, millions of needless object allocations hurts
performance. Who would have thought?

oslerw/quipbot