1. Accuracy: Although I am only using 10% of the corpus, frequently used words can be easily predicted.
2. Performance: the interface is pretty quick and responsive. Usually the results are returned witin 0.5 seconds.
3. Future work: (a) If the next word prediction involves context given by words that are far away from the last few words, ngram will fail. It might be impractical to build ngram models with large n, due to its heavy computational burden. POS tagging (https://en.wikipedia.org/wiki/Part-of-speech_tagging) might be able to solve this problem.
(b) If no results can be found from 2,3,4 gram models, Should the most frequent words from 1 gram be returned? I haven't included that in my App, but I think it is debatable. In addition, Smoothing might be used to deal with words that never appear in the corpus.
(c) The app can be made to store user entry and regenerate personalized corpus so that is even more accurate based on personal history.