1. An input method for a communication device having a hardware processor, the method comprising: receiving, through a virtual keyboard displayed on a touchscreen of the communication device, an input string; determining a typing speed associated with the received input; generating, by the hardware processor, predicted strings stored in a dictionary memory of the communication device, where contextual data is sued when generating the predicted string; assigning, by the hardware processor, a higher likelihood to longer predicted strings associated with the received input matches an intended input string when a typing speed associated with the received input increases; assigning, to the predicted string, a score associated with the determined likelihood, wherein the score is independent of the length of the predicted string if the typing speed is below a predetermined speed threshold; determining whether to display the predicted string based at least on the score; displaying, on virtual keyboard of the communication device, one or more predicted strings at or near the input string and based on the determined likelihoods of the predicted strings; and determining, by the hardware processor, whether one of the predicting strings matched the intended input string based on user input or omission of user input within a predetermined period of time.