1. A computer-implemented method for suggesting a completion to text entered by a user on a computing device, the method comprising: receiving, at a sever, text of a message from a first computing device of a first user; computing a topic vector using the text of the message from the first computing device, wherein each element of the topic vector comprises a score corresponding to a topic of a plurality of topics; causing the message to be presented by a second computing device to a second user; receiving text from the second computing device entered by the second user; computing a first feature vector using the topic vector and the text entered by the second user; identifying a first plurality of characters to follow the text entered by the second user by processing, by the server, the first feature vector, wherein the first plurality of characters comprises a first character; computing a second feature vector using the topic vector and the first character; identifying a second plurality of characters to follow the first character by processing, by the server, the second feature vector, wherein the second plurality of characters comprises a second character; generating a suggested completion to the text entered by the second user, the suggested completion comprising the first character and the second character, and transmitting the suggested completion to the second computing device for presenting to the second user.