faster and use lists as keys

factored out the dict generation so I could
swap out maps with HashDict (which are much faster)
went form 60seconds to 1~2 seconds to parse corpus

then replaced keys with list of two words instead of
string of two words because packing and unpacking during
generation is a pain
trying to build up generation
working generator