1. A method comprising generating a compact language model, including: receiving, at a computing system including one or more processors, a collection of n-grams, each n-gram having one or more associated parameter values; determining, at the computing system, a fingerprint for each n-gram of the collection of n-grams; identifying, at the computing system, locations in an array for each n-gram using a plurality of hash functions; and encoding, at the computing system, the one or more parameter values associated with each n-gram in the identified array locations as a function of corresponding array values and the fingerprint for the n-gram, where identifying locations in the array further comprises: building an array having a specified number of locations; identifying a plurality of locations corresponding to each n-gram in the collection; identifying a first n-gram-location pair corresponding to a first n-gram associated with a first location of degree one, where the first location is of degree one when no other n-gram of the collection of n-grams is associated with the first location; and removing the first n-gram-location pair such that the n-gram no longer corresponds to any other locations in the array such that one or more other locations in the array are of degree one.
6. The method of claim 1 , further comprising: selecting a plurality of hash functions to apply to each n-gram of the collection in order to identify locations in the array.