1. A computer-implemented method comprising: receiving, at a computing device having one or more processors, a collection of documents; clustering, at the computing device, the documents into one or more clusters; generating, at the computing device, a cluster vector for each cluster of the one or more clusters; generating, at the computing device, a target vector associated with a target profile, the target profile being associated with an identified user; storing, at the computing device, the target profile; comparing, at the computing device, the target vector with each of the cluster vectors; selecting, at the computing device, one or more of the one or more clusters based on the comparison of the target vector with each of the cluster vectors; and generating, at the computing device, a custom language model for the identified user using documents from the one or more selected clusters.