large Ngram function

This update now has a stable way to create Ngrams for 80% of the data
set based on random sampling. It avoids crashing partly by avoiding the
table() function which when turned into a data frame has factors. by
converting the Ngram string into a very long data frame then rolling up
using dplyr the memory requirements are considerably reduced. the
resulting data frames are also greatly compressed interms of size as
well which makes using them much easier.