1. A data input system comprising: a processor; a language model implemented using the processor, which computes candidate next items in an input sequence of one or more items; a training engine implemented using the processor which performs training of the language model using training data comprising a plurality of true words and at least one alternative candidate word for each of the plurality of true words, wherein the plurality of true words comprises respective words intended to be input with a virtual keyboard, wherein the at least one alternative candidate word for each true word comprises at least one word received from imperfect entry during attempted input of the true word with the virtual keyboard, and wherein, as a result of the training, the language model is trained to reward discriminating between the plurality of true words and the at least one alternative candidate word for each of the plurality of true words.