1. A system of creating compact linguistic data, comprising: a corpus; and a linguistic data analyzer, wherein the linguistic data analyzer calculates frequencies of words appearing in the corpus, maps each unique character in the words to a character index, replaces each character in the words with the character index to which the character is mapped, maps sequences of characters that appear in the words to substitution indexes, replaces each sequence of characters in each word with the substitution index to which the sequence of characters are mapped, arranges the words into groups where each group contains words that start with a common prefix, and maps each prefix to location information for the group of words which start with the prefix; and wherein the compact linguistic data includes the unique characters, the character indexes, the substitution indexes, the location information, the groups of words and the frequencies of the words.